Галоўная / Артыкулы / Практычныя прытамулкі: У вашага агента для кодавання є проблемы з памяцю. Зберагачванне большай колькасці дадзеных не вырашыць проблему.

Практычныя прытамулкі: У вашага агента для кодавання є проблемы з памяцю. Зберагачванне большай колькасці дадзеных не вырашыць проблему.

Практычныя прытамулкі: У вашага агента для кодавання проблемы з памяцю. Зберагачча большайша колькасць дадзеных не вырашыць проблему: контракты, перакантролі і месцы для коду для команд, якія выкарыстоўваюць гэты патэрн.

1862 слоў

У гэтым карыце парадокс з матерыяламі ператвараецца ў рабочую сістэму для ситуацыі: у вашага кодавальнага агента проблемы з памяцюю. Зберагачча ўсё больш дадзеных гэта не вырашыць. Акцэнт ставіцца на практычныя крокі, чыстае перакананне і код, які можна проста дадзіць у репозытарый без неабяснення меты. У стадіўцы агульнага відзору неабходна практычна апісацыя вхідных дадзеных, адпаведальнага за крок і крэатарыяў завершэння працы перш чым зменіць код. Аператары должны магчымае перадзеяць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабходна адночасна задокументаваць шлях успеху і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є часткай продукту, а не дадатковым элементам пасляўпрацоўкі.

Зберагачча ўсё больш дадзеных толькі пагоршвае ситуацыю

Калі працуеце над практыкай «Зберагчы большае колькасць дадзеных на пазл», спачатку запішыце умовы: неабяжлівыя даны, сігнал успеху і тое, што выканаецца у разе частковага нявыполнення. Такі список контроля дапамагае заліцвачыць змяны ў кодзе па правдзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыполнення павінна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зробіце пераконтрал пасля дорогіх крокаў. Програма не павінна зноў стягваць плата за той самы вызов LLM, калі аператар пракушае выкананне наступнага элемента.

Спачатку калім слова пра тое, хто пішаў гэтыя нотаткі

Калі працюеце над першым этапам, запісайце спачатку угоду: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у случае частковага нявыпання. Такі список пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Спрыймайце гэты этап як угоду межа даннімі і перакананымі выходамі. Дайце назву рэзультатам, задаце критэрыя успеху і не падтрымайце тыхія частковыя завершэння. Зробіце пераконтроўку пасля дорогіх крокаў. Система вярнення не павінна знову ставіць плату за той самы вызов LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел.

export function validateNode(input) {
  const e = [];
  // ...every check pushes onto e instead of throwing...
  if (e.length) throw new ValidationError(e);
  return n;
}

Правіла 1: Старэнне є видавальнае у момант выкарыстоўвання

Калі працуеце над стадзіяй «Старэнне» па Правіле 1, спачатку запісайце контракт: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду чыстымі. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразлівасць костаў з самага пачатку запобегае неспакойным рахункам, калі парадокс пераходзіць з дэмаверсіі ў спяльныя среды. Зробіце контрольную паўзу пасля дорогіх крокаў. Функцыя вярнення не павінна зноў нарахоўваць косты той самай вызову LLM, калі аператар перапрыяўляе праз пазнейшы вузел. Калі працуеце над стадзіяй «Старэнне» па Правіле 1, спачатку запісайце контракт: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду чыстымі. Дакументавайце як «шчаслівы» парадокс, так і парадокс вярнення. Перапрыяўленні, людзкія контралі і обработка нерабочых паведамленняў є часткай продукту, а не пазнейшым дапрацоўкам.

id: auth-service
type: system
title: Auth uses server sessions
scope: repo
confidence: observed
captured_sha: a1b2c3d      # repo HEAD at capture
repos: [orders-api]
edges:
  - rel: depends-on
    dst: postgres-primary
captured 47 commits ago — verify before trusting
if (Array.isArray(node.repos) && node.repos.length &&
!node.repos.includes(here)) return null;

Правіла 2: Процес вырезкі зместу ў разе абяцаў завершаецца

Процес вырезкі зместу па правілу 2 працюе найэфектывней, калі яго розглядаць як мерыемую структуру. Перш чым расширваць сферу застосавання, неабходна запісаць адну ідеальную версію транскрыпцыі, адзін прыклад абяцы і прыметку па поверненню да пачатковага стану. Валідзіце маленькія, тэставаныя елементы замест аб’емных скрыптов. Калі якісь крок не выйшае, прычына абяцы должна быць вказана для конкрэтнага элемента, а не для всей заплутанай структуры. Стан графаў трэба падтримваць у простам і типізаваным формате. Вярнутыя структуры маскуюць інформацію пра тое, який вузел запісаў канкрэтны поле, і спакшуюць возможнасць продажы роботы пасля перерываў.

export function redact(text, opts = {}) {
  if (typeof text !== 'string') {
    throw new TypeError('redact() requires a string; refusing to write unscanned content');
  }
{
  kind: 'assigned-secret',
  re: /\b(?:api[_-]?key|secret|password|token|client[_-]?secret|
access[_-]?key)\b\s*[:=]\s*(?:"[^"\n]{6,}"|'[^'\n]{6,}'|[^\s"'`,;)]{12,})/gi,
}

Правіла 3: Абрыв зместу ніколі не ўтрымваецца без паўтарэння

Метод абрэвіяцыі па правілу 3 работае наўзятыш, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Спрыяйце гэтаму этапу як даговору межа вхідных дадзеных і перакананыя выходныя рэзультаты. Даўце назвы артыфактам, задаць критэрыя успеху і адмовіцеся ад тыхняй частковай роботы без паведамлення. Зберагаеце стан графа ў простам і типаваным формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакоююць працу пасля перарываў.

3 nodes omitted for budget: legacy-batch-job, vendor-sftp-quirk,
old-retry-policy
.sort((a, b) => b.depth - a.depth || a.degree - b.degree || ...)

Правіло 4: Абмежэння ніколі не адмовляюцца

Абсалютныя правілы №4 працуюць наяўней, калі іх спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і косты токеноў або запытак па боку ад функцыйнальных рэзультатаў. Візуабельнасць костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Храніце стан графа простым і з адзінаковым типам дадзеных. Вкладаныя блокі маскуюць інфармацыю пра тое, який вузел запісаў якое поле, і спакшуюць продовжэнне роботы пасля перарываў. Абсалютныя правілы №4 працуюць наяўней, калі іх спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як шлях успеху, так і шлях вяснавання проблем. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.

const removable = nodes.filter((n) => n.depth > 0 && n.type !== 'constraint');
Note: 9,412 bytes returned, over the 8,192 budget, because constraints
are never dropped.

Магазін — это markdown. Індэкс є тымчасовым.

Для стадіі markdown магазіна неабяжна прадзеўкаванне вхідных дадзеных, адпаведнага власніка крока і крэтарыяў завершэння перад зменым коду. Аперацыяныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы схованы статус. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшае, прычына неудачы павінна вказываць на адзіну адпаведальнасць, а не на заплутаны процес. Неабяжна людская апраўда для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даныя у працэсе виробніцтва. Компіляцыйныя налашчэння не ўзначаюць павнае адпрацоўванне бізнес-процэсаў.

~/.agents/memory/
  notes/<type>/<id>.md     the source of truth
  notes/archive/           superseded and decayed notes; never deleted
  index.db                 disposable SQLite cache
  ROUTING.md               generated map of everything known

Што вы навмесна не створылі

Для стадіі «Што вы намеравана зрабіць» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры зміне коду. Аператары должны магчыма ўвайсці крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяйце цій стадіі як даговору межаў вхідных даных і перакананых выходных рэзультатаў. Даць назвы артыфактам, узначыць перакананні пра успех і адмовіцца ад тыхняга частковага завершэння без паведамлення. Заставіць людзкую апраўду для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Компіляцыйныя налашчанні не ўзначаюць павнае завершэння бізнес-процеса.

Тое, што варта «з’есть»

Для стадіі «Частка, яку варта красты», перш чым зменяць код, неабходна ясная дэфініцыя вхідных данных, адпаведальнага за крок і крэтарыяў выходу. Аператары должны магчымае запускать крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выконання і кост токенаў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае паказанне костаў запобегае неспадзяваным рахункам, калі процес пераходзіць з дэмавай версіі ў спакульнаныя сераўсы. Заставьце людзкую апрацоўку для тых крокаў, якія выкарыстоўваюць грошы або зменяюць даны ў працэсе. Компіляцыйныя налаштаванні не ўзначаюць повнасці продукту з пункту зору бізнеса. Для стадіі «Частка, яку варта красты», перш чым зменяць код, неабходна ясная дэфініцыя вхідных данных, адпаведальнага за крок і крэтарыяў выходу. Аператары должны магчымае запускать крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «шчаслівы» шлях, так і шлях вяснавання проблем. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных запытаў є частью продукту, а не елементамі, якія дадаюцца пазней.

Чэк-ліст аператыўнай роботы

Этап чэк-ліста аператыўнай роботы працюе наякша, калі яго спрыяваць як мерыемую структуру. Запісаўце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць сферу дзеяння.

Зберагаўце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнай чытанняў усіх дадзеных.

Зберагаўце стан графа ў простам і типаваным формате. Вялікія блокі дадзеных, якія знаходзяцца ўнутрь іншых блакоў, маскуюць інфармацыю пра тое, калькі вузел запісаў калькі поль, і спакойваюць працэс пасля перарываў.

Калі бюджет дазволяе, дадзіце тэст на працясную роботу, які пераглядае критычны шлях у системе CI з викорыстаннем фіксатыв, а не рэальных платных API.

Документаваўце як шлях успеху, так і шлях вярнэння да нормальнага стану. Перапрыбуткі, людзкія контралі і обработка некоректных дадзеных ўжо є часткай продукту, а не чымсь, што дадаецца пазней.

Зберагаюце стан графа ў простам і типаваным формате. Вкладаныя структуры маскаюць інфармацію пра тое, який вузол запісаў якое поле, і спакоююць працэс пасля перерываў.

Перш чым павышаць ранг стеку, заморажуйце версіі, зафіксавайце «золаты» транскрыпты для критичных шляхоў і паказвайце крокі для вярнення да пачатковага стану. У спільных средах неабходны ліміты швыдкасці, пераказы належнасці і чыстая адпаведальнае особа за зміну секрэтных дадзенняў. Валіце надзвычайную надзейнасць працэсу працы, а не крэатывныя разовыя дамэ.

Прымітка для b819b7f93447: не кладзіце ключы прадаўцаў у репазітарый, задаце максімальную кантитатыву токеноў на сесію і зберагаце транскрыпты празаўсюды з фіксатрамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся порównаннэй.

Этап 0 пры практыкаванні заходаў з абароны працюе наякша, калі яго расследжваць як мерыемую паверхню. Запісаце адна «золатая» версія, адзін прыклад неудачы і запісы парадоксу перад расшырэнням масштаба. Запісвайце часы выканання, а таксу токенаў чы запытак праза рэзультаты функцыйнасці. Відчутнасць костоў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды.

Дакладнасць пры практыкаванні заходаў 0/782: змерьце час выканання, класію памилак і выкарыстаныя токены для гэтага прыкладу, а пасля, на аднойчынных крэтарыях, адлучыце, чы застаўляць змяну.

Для этапа 1 пры практыкаванні заходаў з абароны перад змянай коду неабходна визначыць вхідныя даны, адпаведальнага за крок і крэтарыі завершэння. Аперацыйныя працавнікі павінны магчымае перазваляць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Дакументавайце як «успешны» так і «восстанаўнічы» маршруты. Перапрыбуткі, людзкія контролі і обработка неканальных паведамленняў є часткай продукту, а не дадатковым дапрацоўкам пазней.

Дзеянне паўжасткі 1/782: звярніце увагу на час выканання, клас памылакі і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазыраннях, выявіце, чы хачаце застаўіць змяну.

Калі працюеце над 2-й стадзіяю паўжасткі, спачатку запісайце контракт: неабходныя вхідныя даны, сігнал успеху і тое, што выканаецца у разе частковай памылки. Такі список контроля дапамагае заставіць пасляэтапныя змяны ў кодзе чыстымі. Спрыятліва ставіцеся да гэтай стадзіі як да контракту межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць критэрыяі успеху і адмовіцеся ад мовчанкавага частковага завершэння.

Дзеянне паўжасткі 2/782: звярніце увагу на час выканання, клас памылакі і колькасць токенаў, якія былі выкарыстаны для гэтага зазначэння, а пасля, на аднойчыне з фіксаваным наборам пытанняў, а не на асобістых спазыраннях, выявіце, чы хачаце застаўіць змяну.

Этап 3 прыцелення на зміцнэнне работае найкраща, калі яго розглядаць як вимерную паверхню. Зафіксавайце адны «золаты» прымер, адну справу з бягам і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Зберагаюце настройкі пазырочна ад коду прыемлена. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функцый крануцца на аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх дадзеных.

Дакладнасць прыцелення на зміцнэнне 3/782: вимеравайце час выканання, класі каштоўкаў і витраты токеноў для гэтага прыцелення, а пасля, на аднойчынку з фіксаваным наборам пытанняў, а не на аднойчынку з пераказамі, выберайце, чы рашыцца застаўляць змяну.