AI (Вештачка Интелигенција)

Your Codebase is AI's True Teacher, Not the Prompt

Вашата кодна база е вистинскиот учител на ВИ, а не промптот

Потсетникот добива заслуги затоа што е видлив. Кодната база ја врши наставата затоа што ги содржи последиците.

Побарајте од AI асистент да додаде функција со убаво напишан потсетник и тој може да произведе нешто веродостојно. Дајте му на истиот асистент пристап до добро структурирано складиште, јасни тестови, значајни имиња и локални конвенции, и тој има шанса да произведе нешто што навистина припаѓа таму.

Оваа разлика е важна. Тимовите често пристапуваат кон усвојувањето на AI како кон проблем на пишување потсетници: создаваат шаблони, собираат досетливи фрази и бараат подетални инструкции. Квалитетот на потсетникот помага, но ретко е ограничувачкиот фактор во софтверската работа. Вистинскиот прирачник за работа обично е распределен низ складиштето: архитектурата, интерфејсите, тестовите, скриптите за изградба, конфигурацијата за распоредување, обработката на грешки и насобраните одлуки кодирани во кодот.

Софтверскиот контекст ја надминува општата инструкција

Потсетникот може да наведе: „Додади валидација на крајната точка за создавање сметка.“ Тој не може ефикасно да го содржи секој детаљ потребен за таа промена да биде исправна. Дали неважечкиот влез треба да врати одреден облик на грешка? Дали валидацијата се извршува на HTTP границата, во обработувач на команди или во доменски објект? Дали адресите на е-пошта се нормализираат? Дали API поддржува постари клиенти? Кои тестови го утврдуваат очекуваното однесување?

Здравата кодна база одговара на многу од овие прашања без состанок. AI систем што може да ги прегледа релевантните рута, услуга, шема, тестови и соседни функции може да ги заклучи претпочитаните обрасци на тимот. Резултатот не е магија. Тоа е контекстуално расудување засновано на артефактите што го дефинираат системот.

Затоа асистентот може да изгледа извонредно способен во едно складиште, а изненадувачки ненадежен во друго, дури и кога се користат истиот модел и истиот потсетник. Разликата често не е во интелигенцијата. Таа е во квалитетот, достапноста и кохерентноста на околните докази.

Што веќе предава вашето складиште

Секој проект му предава нешто на AI агент. Прашањето е дали му предава јасна или противречна лекција.

  • Имињата ја предаваат намерата. Функција наречена authorizeProjectAccess дава посилна насока од нејасна алатка наречена check.
  • Тестовите го предаваат набљудливото однесување. Тие откриваат на што повикувачите можат да се потпрат, вклучувајќи гранични случаи што прозната документација ги занемарува.
  • Типовите и шемите ги предаваат границите. Тие покажуваат кои податоци се прифатени, произведени, опционални, застарени или забранети.
  • Постојните имплементации ги предаваат конвенциите. Блискиот код открива обрасци за зависности, стил на евидентирање, обработка на грешки и слоевитост.
  • Автоматизацијата ги предава очекувањата за испорака. CI конфигурацијата, проверувачите на стил, миграциите и скриптите за распоредување покажуваат што мора да остане точно по промената.

Ниту еден од овие артефакти не е совршен сам по себе. Заедно, тие сочинуваат многу побогата спецификација од опис на задача или порака во разговор.

Скриената цена на некохерентна кодна база

AI брзо ја открива двосмисленоста. Во складиште со три спротивставени обрасци за пристап до базата на податоци, асистентот може да избере кој било од нив. Ако тестовите отсуствуваат, тој нема сигурен сигнал дали неговиот излез го зачувува однесувањето. Ако документацијата опишува архитектура што кодот повеќе не ја следи, моделот добива спротивставени инструкции.

Примамливо е ова да се нарече неуспех на AI. Попрецизно, тоа е забрзување на проблем со кој луѓето веќе се соочуваат. И новите развивачи се мачат кога конвенциите се имплицитни, модулите се испреплетени, а однесувањето е недокументирано. AI едноставно ја прави повратната спрега побрза: нејасните системи произведуваат несигурни промени со машинска брзина.

Тоа не значи дека тимовите треба да ја запрат употребата на AI додека нивните складишта не станат беспрекорни. Тоа значи дека треба да го третираат развојот со помош на AI како причина да ги подобрат сигналите што им помагаат и на луѓето и на алатките да работат безбедно.

Градете контекст намерно

Практичната цел не е целото складиште да се натрупа во секое барање. Големиот контекст може да биде бучен, скап и одвлекувачки. Наместо тоа, направете го правилниот контекст лесен за наоѓање и веродостоен кога ќе се пронајде.

Започнете со локална јасност

Одржувајте го сродниот код концептуално блиску, дури и кога се наоѓа во посебни датотеки. Ставете значајни тестови блиску до функцијата што ја опишуваат. Користете имиња што ја пренесуваат деловната намера. Претпочитајте мали интерфејси со експлицитни влезови и излези наместо широки помошници со скриени претпоставки.

Кога барате од AI агент да работи на задача, насочете го кон релевантните влезни точки и побарајте да прегледа слични имплементации пред уредување. На пример, корисна инструкција не е само „додади пагинација“. Таа е: „Најди ги постојните крајни точки со пагинација, следи го нивниот договор за одговор, додади тестови за гранични случаи и објасни ја секоја конвенција што е во спротивност со ова барање.“

Направете ја проверката дел од задачата

Генерирањето код без проверка е автоматско дополнување со поголема самодоверба. Добар AI работен тек вклучува дефиниран начин за проверка на работата: насочени тестови, проверка на типови, проверка на стил, изградба или преглед на генерирана миграција.

npm test -- account-service
npm run typecheck
npm run lint

Точните команди варираат по проект. Важно е складиштето да ги прави откривливи и агентот да знае дека успехот е повеќе од создавање разлика. Ако некоја команда не успее, следниот чекор треба да биде истрага, а не слепи повторни обиди или широки препишувања.

Зачувајте ги одлуките таму каде што се потребни

Некои правила заслужуваат кратко, трајно објаснување бидејќи не се очигледни само од кодот. Примери вклучуваат безбедносни ограничувања, обврски за компатибилност, граници на сопственост и намерни отстапувања од вообичаен образец.

Поставете ја оваа насока блиску до работата што ја регулира: концизен документ за модул, водич за придонесување, име на тест што објаснува регресија или коментар што опишува неочигледен инваријант. Избегнувајте големи документи што ги дуплираат деталите за имплементацијата и застаруваат. Најдобрата документација ја намалува двосмисленоста без да се натпреварува со изворот на вистината.

Користете ги потсетниците за координација, не како замена

Потсетниците сè уште се важни. Тие го утврдуваат опсегот, ограничувањата и посакуваниот исход. Особено се корисни за да му кажат на агентот што не смее да промени, кои ризици заслужуваат внимание и какви докази треба да обезбеди пред да се прифати промената.

Но, потсетниците треба да се координираат со кодната база наместо да се обидуваат да ја заменат. Силно барање може да побара од агентот да ги идентификува засегнатите модули, да ги наведе претпоставките, да ја имплементира најмалата безбедна промена, да ги ажурира релевантните тестови и да пријави резултати од валидацијата. Тоа ја поставува рамката за работата. Складиштето ја обезбедува лекцијата специфична за доменот.

Тука постои и важна човечка одговорност: прегледајте го расудувањето на границите. Обрнете особено внимание кога промените допираат овластување, бришење податоци, пари, приватност, конкурентност, јавни API и конфигурација за распоредување. Контекстот го подобрува излезот на AI, но не ја пренесува одговорноста.

Подготвеноста за AI е инженерска подготвеност

Најпродуктивните тимови нема да бидат тие со најразработени библиотеки со потсетници. Тоа ќе бидат тимовите чиј софтвер е читлив: однесувањето е тестирано, границите се експлицитни, конвенциите се доследни, а важните одлуки лесно се наоѓаат.

Тоа е добро инженерство со или без AI. Појавата на способни асистенти едноставно ја зголемува неговата вредност. Вашата кодна база не е пасивно складиште за вчерашната работа. Таа е активен наставен систем за секој што следен ќе го менува производот, без разлика дали тој придонесувач е нов колега, искусен рецензент или AI агент.

Подобрете го наставникот и потсетникот повеќе нема да мора да ја носи целата лекција.

Портрет на автор на блогот

Mihajlo

Јас сум Михајло - развивач поттикнат од љубопитност, дисциплина и постојаната желба да создадам нешто значајно. Споделувам увиди, упатства и бесплатни услуги за да им помогнам на другите да ја поедностават својата работа и да растат во постојано развивачкиот свет на софтверот и вештачката интелигенција.