Практычныя нататкі: вашаму агенту для кода не патрэбны лепшы промпт
Практычны разбор тэмы «чаму агенту для кода патрэбны не лепшы промпт, а лепшае асяроддзе»: кантракты, праверкі і гатовыя фрагменты кода для каманд, якія ўкараняюць гэты падыход.
Наступныя прытамлівкі паказваюць практычны падход да рашэння задачы «Ваш агент для кодавання не патрабуе лепшага запіту». Акцэнт ставіцца на контракты, перакананняя і шаблоны коду, якіе можна проста замясціць, а не на мотывацыйныя аспекты.
Йому патрабуеяцца лепшыя умовы працы
Калі працуеце над стадзіяй «Йому патрабуеяцца лепшыя умовы працы», спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыпалення. Такі спіс перакананняя дапамагае заліцьваты змены коду чыстымі. Зберагаеце настройкі праз аплікацыйны код. Файлы сераўнавання, хранільнікі секрэтных даных і флагі функцыйяў павінны знаходзіцца ў адном месцы, куда аператары можуць адбавіць аўдыт без неабяжлівага чытання всей структуры. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перасылка ідэнтычных прамуслов ёсць частым выклікам для рэсурсаў.
Цыкл curl
Калі працюеце над стадзіяй «Цыкл curl», спачатку запісайце умовы працы: неабяжлівыя даныя, сігнал успеху і тое, што выканаецца у разе частковага нявыпалення. Такі спіс контроля дапамагае заліцьварыць пазнейшыя змены ў кодзе. Дакументавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія перакрыцця і апрацоўка некорэктных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапрацоўкі. Зберагайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перасылка ідэнтычных паведамленняў ёсць частым выкліком для рэсурсаў.
search for artifact
↓
try dependency
↓
Maven failure
↓
search web
↓
curl documentation
↓
download JAR
↓
inspect classes
↓
try another version
↓
search again
Ітарацыя 1: Вылечыце серавэрную срэду
Калі працуеце над этапам «Выправлення 1», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі спіс пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, неудача должна адносіцца да адной адпаведальнасці, а не да заплутанага ланцуга задач. Зберагайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача таго ж прамэра знову ёсць частым выклікам расходавання рэсурсаў.
LLM + prompt
Model
+ instructions
+ repository
+ build
+ tools
+ runtime
+ available evidence
+ project knowledge
+ feedback loops
Ітэрацыя 2: Дазвольце агенту вікорыстоўваць інструменты навігацыі, якія ужо вікорыстоўваюць інжынеры
Калі працуеце над 2-й ітэрацыяй, спачатку запісайце кантракт для данага этапу: неабяжлівыя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковага невыпання. Такі спіс пераконтроўкаў дапамагае заліцьваты змяны коду пазнейша. Спрэцьвачайце гэты этап як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць правіла пераканання успеху і не падтрымайце часткова завершэння без паведамлення. Зберагайце у кешы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача ідэнтычных прамуслов ёсць частым выклікам затрачання рэсурсаў.
shell + filesystem + internet
interface
↓
implementation
↓
usage
↓
test
3-я ітэрацыя: Інодзе найлепшы кантэкст — гэта чалавек, які паказуе на правы файл
Калі працуеце над 3-й ітэрацыяй, спачатку запісайце умовы вікорыстання: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыходу. Такі спіс дапамагае заліцвачваць будучыя змены коду. Запісуйце час выканання і вартасьць токена або запытку праз адныя з рэзультатаў функцыоналу. Відразлівае паказанне вартасцей запобегае неспадзяваным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача тых самых даных знову ёсць частым выклікам вітрачання рэсурсаў. Калі працуеце над 3-й ітэрацыяй, спачатку запісайце умовы вікорыстання: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыходу. Такі спіс дапамагае заліцвачваць будучыя змены коду. Адначасова задокументавайце шляхы правільнага выканання і вярнення ў нормальны стан. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць частынай продукту, а не элементамі пазнейшага доўнелення.
AllMiniLmL6V2EmbeddingModel
↓
AbstractInProcessEmbeddingModel
↓
OnnxBertBiEncoder
Hugging Face tokenizer
↓
ONNX Runtime
↓
token representations
↓
pooling
↓
normalization
↓
embedding
Ітэрацыя 4: Чаму мы выбіраем, што агент павінен выучыць?
Этап «Чаму» ў рамках Ітэрацыі 4 працюе найкрашча, калі яго розглядаць як вімерную плошчу. Запісаўце адна ідэальная транскрыпцыя, адын віпадак неудачы і прыміткі па поверненню да попярэдньего стану пры розшырэнні масштаба. Валідзіце невялікія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Задаўце ліміт токенав на кожны раунд і на кожную сесію. Інструменты агента актыўна расшырваюць кантэкст; жорсткія ліміты не дазволяюць дэманстрацыям ператварыцца на неспакоючыя рахункі.
Невялікі эксперымент з Integrallis Vectors
Маленькі експерыменты на стадзіі працы даюць найлепшыя рэзультаты, калі іх расследжваць як меравальную плошчу. Запісаўце адна «золатая» транскрыпцыю, адзін прыклад неудачы і прыметку па адкату перш чым расшырваць масштабы. Расследжвайце гэтую стадзію як кантракт межа вхіднымі дадзеннямі і паверыранымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце крытэрыя успеху і не падзеўляйцеся частым, некомплектным выкананнем задач. Задаце бюджэт токенав на кожны раунд і на кожную сесію. Інструменты агента агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
../vectors/
Initial working model
↓
low confidence recognized
↓
specific evidence requested
↓
source inspected
↓
previous hypothesis falsified
↓
new working model
↓
better engineering recommendation
Так, агент выучыў…
Этап «The Yes the agent learned» працюе найкрашча, калі яго спрыяваць як меркавыя палявіння. Зберажце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваце сферу дзейснення. Запішыце час выканання задач і кост токеноў або запытаў праза функцыйнае рэзультат. Відразлівае відображэння костаў з’являецца прычыной таго, што не будзе неспакойных рахункоў, калі працэс перайдзе з дэма-серэдавышча ў спакульнае. Задаце бюджэт токеноў на кожны раунд і на кожную сесію. Інструменты агента актыўна расшырваюць кантэкст; строгія ліміты не дазволяюць дэмам ператварыцца на неспакойныя рахункі. Этап «The Yes the agent learned» працюе найкрашча, калі яго спрыяваць як меркавыя палявіння. Зберажце адна ідэальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расшырваце сферу дзейснення. Дакументаваць трэба як успішны, так і вярнучыся паты. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных запытаў ёсць часткай продукту, а не чымось, што дадаецца пазней.
Навыкі агента должны перазіць самога агента.
Для этапы навчання агента неабяжна ўзначэнне вхідных дадзеных, адпаведальнага за крок і крэтарыяў завершэння працы перад змінайом коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі крок не выйшоў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даныя з пераканальванням схемы, чым вольнай формы тэкст.
docs/engineering/
docs/knowledge/
docs/knowledge/vector-backends/
onnx-embedding-pipeline.md
integrallis-vectors.md
candidate-assessment.md
Local embedding baseline:
- all-MiniLM-L6-v2
- 384 dimensions
- ONNX Runtime
- DJL HuggingFaceTokenizer
- mean pooling
- L2 normalization
Long inputs:
- partitioned before inference
- embeddings combined using token-count weightingLangChain4j:
- useful as a verified reference implementation
- not required by the runtime designUpstream source:
- available locally for deeper verification
retained knowledge
↓
task understanding
↓
remaining uncertainty
↓
targeted evidence
↓
new learning
↓
updated retained knowledge
↓
next agent
Дзеяння ў напрамку доследжэння ёсць частка дэлегавання
Для таго, каб адзёрнаванне было частыней падзеі, перад змянайом код неабходна ўскладніць вхідныя даны, адпаведальную особу за падзею і крэтарыя выходу. Аператары должны магчымае перадзеяць падзею з вядомага контрольнага пункту, не спрабоўваючы здогадвацца пра схованы стан. Спрэчвайце гэтую падзею як кантракт межа вхіднымі данымі і перакананымі выходамі. Дайце назву рэзультатам, ускладніць перакананні на успех і адмовіцеся ад тыхоўскага частковага завершэння. Калі наступная падзея — гэта код або вызов інструмента, валідаванне за дапамою схемы лепш за прозу вольнага фармата.
"Agent, do everything."
"Human specifies every line."
Агент не ўжо джын у лямпе
Калі агент не ў стадыі, перш чым зменяць код, неабходна задаць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аператары должны магчымае перзапускаты крок з вядомай точкі контролю, не спрабоўваючы здогадацца пра схованы стан. Запісваюць час выканання і вартасць токена або запытку праза функцыйнальных рэзультаатаў. Візуабельнасць вартасцей з самага пачатку запобегае неспакойным рахункам, калі траекторыя пераходзіць з дэмаверсіі ў спакульнаныя сераўсы. Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходныя даны з перакананнем схэмы, чым вольныя тэкстовыя фарматы. Калі агент не ў стадыі, перш чым зменяць код, неабходна задаць вхідныя даны, адпаведальнага за крок і крытэрыя завершэння. Аператары должны магчымае перзапускаты крок з вядомай точкі контролю, не спрабоўваючы здагадацца пра схованы стан. Неабходна адначасова задокументаваць шлях успеху і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Coding Agent
│
┌───────────────┼───────────────┐
│ │ │
Harness Knowledge Research
│ │ │
tools project facts source
build decisions docs
IDE constraints experiments
runtime prior learning external evidence
│ │ │
└───────────────┼───────────────┘
↓
Clear boundaries
↓
Precise delegation
↓
Implementation
↓
Verification
↓
Retained knowledge
│
└──────→ next agent
Адаптаванне пад задачы да тэхнічных умов працы
Калі працуеце над стадзіяй адаптавання пад задачы да тэхнічных умоў працы, спачатку запісайце контракт: неабяжныя даны, сігнал успеху і тое, што выканаецца у разы ўзельнага неяксамоства. Такі чарт дапамагае заліцваліваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісьце крок не выйшла, неяксамоства должны адносіцца да адной адпаведальнасці, а не да заплутанага ланца задач. Зберагайце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадзесланне ідэнтычных даных — частая прычына перадмёркі.
better environment
↓
cheaper investigation
↓
better evidence
↓
better decisions
↓
retained learning
↓
better starting environment
↓
next agent
Як з’явіўся OSK
Калі працюеце над этапам, які прынеслі OSK, спачатку запісайце контракт: неабяжлівыя даныя, сігнал успеху і тое, што выходзіць у разе частковага нэуспеху. Такі спіс контроля дапамагае заліцьварыць чыстасцю пазнейшых змян у кодзе. Спрэцьвуйце да гэтага этапу як да контракту межа данымі і перакананымі выходамі. Дайце назвы элементам, задаце крытэрыі успеху і не прымайце часткова завершэння без паведамлення. Зберагачвайце інструкцыі стабільных сістэмаў і схемы інструментаў. Перадзесланне ідэнтычных прамаўляючых частак — частая прычына зношэння рэсурсаў.
Іншы спосаб програмавання з агентамі
Калі працуеце над «Альтэрнатыўным спосабам стэйджавання», спачатку запісайце умовы кантракту: неабходныя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя асяроддзя. Зберагаеце у кэшы стабільныя інструкцыі сістэмы і схемы інструментаў. Перадача ідэнтычных прамулі ўсё часта становіцца прычыной некалькаго спалення рэсурсаў. Калі працуеце над «Альтэрнатыўным спосабам стэйджавання», спачатку запісайце умовы кантракту: неабходныя даны, сігнал успеху і тое, што выходзіць на частым неудачам. Такі спіс контроля дапамагае заставіць пазнейшыя змены коду быць чыстымі. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання. Перапрыбуткі, людзкія контрольныя пункты і обработка некорэктных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней.
Human request
↓
Agent generates code
Human hypothesis
↓
discussion
↓
agent reconnaissance
↓
identify uncertainty
↓
targeted research
↓
retained evidence
↓
human + agent design
↓
implementation
↓
real-world friction
↓
verification
↓
revised architecture
↓
new retained knowledge
Гэта гіпатэзы, а не законамі
Гэта гіпатэзы, а не стадыйныя працы; яны лепша працуюць, калі іх расследжваць як вімерную паверхню. Зафіксавце адны «золаты» транскрыпт, адны прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расшырваць масштабы. Волійце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Задаўце ліміты на колькасць токенав за раунд і за сесію. Агентныя інструменты агрэсывна расшырваюць кантэкст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакоўныя рахункі.
Чэрніцкі ліст для эксплуатацыі
Для стадыі чэрніцкага ліста для эксплуатацыі практычна ўзначьце вхідныя даны, адпаведальнага за крок і крэтырыя завершэння, перш чым зменіць код. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан.
Зберагаюце канфігурацыю пазнаходзіцца за межама коду прыемлі. Файлы серавіснага сераўна, храненні секрэтных дадзенаў і флагі функцыйяй должны быць у аднам месца, куды аператары можаць адбавіць аўдыт без неабяжнага чытання всіх элементаў.
Калі наступны крок — гэта код або вызов інструмента, лепш выкарыстоўваць структураваныя выходны даныя з перакананнем схэмы, чым вольныя тэкстовыя апісанні.
Ствараюце контрольныя пункты пасля дорогіх крокаў. Сістэма вярнення працы не должна занова ставіць плату за той самы вызов LLM, калі аператар перапрыяўляе працу да пазнейшага элемента.
Фіксуйце версіі залежнасцяў і запішыце хэш адобраза, які выканаў дэманстрацыю. Возможнасць павторнага стварэння рэзультата лепшая, чым традыцыйныя знаёмства.
Спрыймайце гэты этап як кантракт між вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўайце назвы артыфактам, задаюце крытэрыя успеху і адмовляйцеся ад тыхнай частковай працы без паведамлення.
Перш чым запускаць стак, заморозьце версіі, зафіксавайце «золаты» транскрыпты для крытычнага шляху і паказвайце спосабы атрыбутаўвання. У спільных срэдах неабходны ліміты частоты, пераконтрольванне прав на выкарыстоўвання рэсурсаў і чысткі власнік для змены секрэтных даных. Лепш выбіраць простую надзею на надзейнасць, чым хітрыя експерыментальныя дэманстрацыі.
Прыметка для ddfa012877c8: не кладзіце ключы прадаўцоў у рэпазітарый, задаце ліміт токену на кожную сесію і зберагачыце транскрыпты разам з фіксатрамі для ацэнкі, каб пазнейшыя замены мадэляў заставаліся порównанымі.
Для прыметкі па змяцнэнню безпекі на стадыі 0 неабходна ўжо пачатку візначыць вхідныя даны, власніка крока і крытэрыя завершэння, прычым змяніць код. Аператары должны магчымае перзапускіць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісвайце час выканання і косты токену або запыту разам з функцыйнальнымі рэзултатамі. Відразувыя даны пра косты запобегаюць неспадзеваным рачункам, калі шлях пераходзіць з дэманстрацыі ў спільныя асяроддзя.
Дзеянні паўжасткі 0/867: звярніце увагу на час выканання, клас памылак і колькасць вікорыстоўваных токенав для гэтага зьязку, а пасля, на аднойчынай базе фіксаванага набору пытанняў, а не на індывідуальных прыкладах, выявіце, чы хацяце застаўіць гэтыя змены.