Практычныя прытамулкі: Адвёрдзьце — гэта проста. Редвёрдзьце — тут і сягліваюць рознікі між кодавальнымі агентамі.
Практычныя прытамулкі: Адвёрдзьце — гэта проста. Редвёрдзьце — тут і сягліваюць рознікі між кодавальнымі агентамі: контракты, перакантролі і слоты для вставкі коду для команд, якія використоўваюць гэты патерн.
Наступныя прытамлівкі восстанавляюць практычны падход да тэмы «Анульванне — гэта проста. Павторныя дзеяння — тут і выражаюцца разлікі між кодавальскімі агентамі». Акцэнт ставяцца на кантракты, пераконтроўкі і месца для коду, які можна легка заменіць, а не на мотывацыйныя аспекты. Калі працуеце на стадії агледжэння, спачатку запісайце кантракт: неабяжныя вхідныя даны, сігнал успеху і тое, што выканаецца у разы частковай нявыполненасці. Такі список пераконтроўкі дапамагае заставаць пазнейшыя змены коду чыстымі. Зберагаюце настройкі праза код аплікацыі. Файлы сераўнавання, храненні секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куда аператары можу працаваць без неабяжнага чытання всіх элементаў структуры.
Анкеры версій
Этап версійнага кантролю працуе наяўнасцю, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню роботы перш чым расширваць масштаб. Дакументаваце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Храніце стан графа ў простым і типаваным формате. Вкладзеныя блокі маскуюць, канферы яны поле было запісана, і спакоююць продовжэнне роботы пасля перарываў.
Короткая версія
Этап кароткай версіі працуе наяўнасцю, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню роботы перш чым расширваць масштаб. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказваць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Храніце стан графа ў простым і типаваным формате. Вкладзеныя блокі маскуюць, канферы яны поле было запісана, і спакоююць продовжэнне роботы пасля перарываў.
1. Claude Code — DAG, у якому адмініструванне прыемлена палова частка
Этап 1 Claude Code працюе найэфектывней, калі яго спрыяваць як меравальную плошчу. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштаб. Спрыявайце гэты этап як кантракт межа вхіднымі дадзеннямі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зберагачыце стан графа ў простам і типаванам формате. Вкладзеныя блокі маскуюць, який вузел запісаў кожны поле, і спакшваюць продажчэнне пасля перарываў.
На дыску [документы + мераваныя данні]
Дакументы на дыске, які відображаюць стадіі роботы, найкраща працуюць, калі іх розглядаць як виміроўваную паверхню. Запісаце адна ідеальная версія, адзін прыклад неудачы і прыметку па поверненню да попярэдня стану пры расшырэнні масштаба. Запісвайце часы виконання і косты токеноў або запытак праза функцыйнае рэзультат. Відразлівасць костаў з самага пачатку запобегае неспакою, калі процес пераходзіць з дэмаверсіі ў спяльныя сераўы. Храніце стан графаў у простам і типаваным формате. Вкладаныя блокі маскуюць інфармацыю пра тое, який вузел запісаў які поле, і спакшваюць продажчэй вярнуцца да роботы пасля перарываў.
~/.claude/projects/<encoded-cwd>/<session-id>.jsonl
~/.claude/projects/-home-claude/
├── e2252c61-0ac1-5c73-b84f-b452a0553da2.jsonl main transcript
├── e2252c61-….ccr-tip.json {"eventId":…,"updatedAt":…}
└── e2252c61-…/
├── subagents/agent-<id>.jsonl + agent-<id>.meta.json subagent transcripts
└── tool-results/toolu_<id>.txt large tool results, externalized
Структура, якая мае значэнне [виміроўваная + выведзена]
Структура, яка мае значэнне, працуе наяўней, калі яе спрыяваць як мерыемую паверхню. Запісаце адна «золатая» версія, адин прыклад неудачы і прыметку па вярнэнню да поперадньага стану пры розшырэнні масштаба. Храніце настройкі пазырочна ад коду прыемліка. Файлы сяродавішча, хранальнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Храніце стан графа у простам і типаваным формате. Вярнутыя блокі дадзеных маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакоююць продажчыку роботы пасля перерываў.
{"type":"last-prompt",
"lastPrompt":"…",
"leafUuid":"219c7d72-e88f-4111-a3fe-b431cabcbdaf",
"sessionId":"e2252c61-…"}
/branch [docs]
Этап документавання галузі працюе найэфективней, калі яго спрыявае можласць вимеры рэзультатаў. Зафіксавайце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра абратку змян перш чым расширваць сферу даследжэння. Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных паведамленняў є часткай продукту, а не элементамі пазнейшай дапрацоўкі. Храніце стан графа ў простам і типаваным формате. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, калькі вузел запісаў калькія поля, і спакшваюць продовжэнне роботы пасля перарываў.
Тачкі контролю [даследжанні + вимеры]
Дакументацыя Checkpoints лепша працуе для аналізу стадый, калі яе спрыяваць як мерыяе паверхне. Зберагачыце адна ідеальная версія, адзин прыклад неудачы і запіс пра вярнэнне да поперадней версіі, прычаму расшыроўваць масштабы. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцужок задач. Рэгулюйце стан графа так, каб ён быў простым і з адзінаковым типам дадзеных. Вярсткаваныя блокі маскуюць інфармацыю пра тое, канферы які вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
2. Codex CLI — Esc Esc больш не ёсць спосабам вярнэння да поперадней версіі
Этап 2 Codex CLI Esc працюе найкраща, калі яго розглядаць як вимерную паверхню. Зафіксавце адна «золатая» копія дадзеных, адзин прыклад неудачы і запіс пра поверненне да пярвоначальнага стану пры розшырэнні масштаба. Разглядзайце гэты этап як кантракт межа вхіднымі дадзенымі та пераканаленымі выхіднымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху та не прабуйце прымусіваць завершэнне роботы без паведамлення пра частковыя наследкі. Храніце стан графа як просты та з адначытаемымі дадзенымі. Вкладаныя структуры дадзеных маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спакоююць возобнавленне роботы пасля перерываў.
Корэкцыя
Этап карэкцыі працюе наяўней, калі яго спрыяваць як мерыемую паверхню. Запісаце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да поперадней версіі перш чым расширваць масштабы. Запісвайце часы выканання і кост токеноў або запытаў праза функцыйнае рэзультат. Відкрытыя данні пра косцы з’являюцца рана, таму не будзе неспакою з рахункамі, калі праця перейдзе з дэмовай среды ў спакульную. Храніце стан графа як плоскі і з адначынным типам. Вярстакаваныя блокі маскуюць, який вузел запісаў канкрэтны поле, і спакшваюць продажчыку роботу пасля перарываў.
{"timestamp":"…","type":"event_msg","payload":{"type":"thread_rolled_back","num_turns":N}}
RolloutItem::EventMsg(EventMsg::ThreadRolledBack(rollback)) => {
history.drop_last_n_user_turns(rollback.num_turns);
}
На дыску [src] rollout/src/recorder.rs:1549
Этап розгортання src на дыске працюе найэфектывней, калі яго спрыяваць як до мерыемагучай паверхні. Зберажыце адна ідеальная копія даных, адзін прыклад неудачы і запіс працэў па анулюванню розгортання пры расшырэнні масштаба. Храніце настройкі пазырочна ад коду прыемленае. Файлы сэраўнавання, базы секретных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Храніце стан графа ў простам і типаваным формате. Вярнутыя блокі дадзеных маскуюць інфармацыю пра тое, канфігурацыйны вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
$CODEX_HOME/sessions/YYYY/MM/DD/rollout-YYYY-MM-DDThh-mm-ss-<uuid>.jsonl
Два режыму форка з абсалютна разнымі правіламі фізыкі [src]
Два режыма фаркінгу з стэйджамі працуюць найкраща, калі іх розглядаць як вимерную паверхню. Зафіксавайце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Документавайце як шлях успеху, так і шлях вярнэння разам. Перапрыбуткі, людзкія контралініі та обработка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней. Храніце стан графа у простаму і типаваны формат. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакоююць продовжэнне роботы пасля перерываў.
3. Pi — ўжоўно едыні бесплатны двунаправае навігатор
3 Pi – едын стадія – працуе наўсёрэйш, калі яго спрыяваць як мерымабельную паверхню. Зафіксавайце адны «золаты» прыклад, адну справу з бягам і прымітку па адварцыю, перш чым расширваць масштаб. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок збягае, прычына бягу должна вказваць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты роботы графа трэба зберагаць у простай форме з адначытаемымі дадзеннямі. Вярнутыя структуры дадзеных маскуюць інфармацыю пра тое, каней вузел запісаў канкрэтны поле, і спакойваюць працу пасля перарываў.
Две рэалізацыі сесый, адна падключаная [src]
Два варыянта рэалізацыі сесій у адной стадзіі працуюць найкраща, калі іх спрыяглядаць як мерыемую паверхню. Запісаце адны ідеальны прыклад роботы, адны прыклад неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Спрыяглядзіце гэтую стадзію як кантракт межа вхіднымі даннымі та перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху та адмовіцеся ад беззвучнага частковага завершэння. Рэгулюйце стан графа так, каб ён быў плоскім та з адначыным типам дадзеных. Вкладаныя блокі маскуюць, який вузел запісаў канкрэтны поле, і спакшуюць возобнавленне роботы пасля перарываў. Два варыянты рэалізацыі сесій у адной стадзіі працуюць найкраща, калі іх спрыяглядаць як мерыемую паверхню. Запісаце адны ідеальны прыклад роботы, адны прыклад неудачы і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Зберагачыце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных та флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всего графа.
На дыску [src + measured]
Для стадіі «On disk src measured» неабяжна прадзефінавацыя вхідных дадзеных, адпраўніка крока і крэтарыяў завершэння перад зменым коду. Аперацыяныя працавнікі павінны магчымае перапрацаваць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія пераказы і обработка некоректных паведамленняў ёсць часткай продукту, а не элементамі пазнейшага дапрацоўвання. Неабяжна атрымаць пашчаткованне чалавека для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны пра вырабніцтва. Кампайляванне коду не ўзроўнаважваецца з повнасцю бізнес-функцый.
~/.pi/agent/sessions/--<cwd, leading slash stripped, / : \ → - >--/<ISO-timestamp>_<sessionId>.jsonl
const safePath = `--${resolvedCwd.replace(/^[/\\]/, "").replace(/[/\\:]/g, "-")}--`;
id 019fe5b5-8da6-707e-b29e-7940aca8ca25
file /tmp/fakehome/.pi/agent/sessions/--tmp-proj--/2026-08-09T08-48-28-582Z_019fe5b5-….jsonl
Дрэва [src + measured]
Для стадіі вычыслення параметра дрэва src неабяжна прадзеўначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі павінны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшае, прычына неудачы павінна вказываць на адзін конкрэтны аспект, а не на заплутаны процес. Неабяжна ўключыць людзкія пераказы для тых крокоў, якія ведуць да выдаткаў грошэй або зміняюць даны ў працоўным режыме. Компіляцыйныя налашчэння не ўзроўнаўцуюцься з пачатковым станом бізнес-процэсаў.
{"type":"session","version":3,"id":"019fe5b5-…","timestamp":"…","cwd":"/tmp/proj"}
{"type":"message","id":"14700d42","parentId":null,…}
{"type":"message","id":"bc58a399","parentId":"14700d42",…}
{"type":"session_info","id":"a263a229","parentId":"bc58a399","name":"demo"}
/tree — самая цікавая частка
Для стадіі «Цікавая частка дрэва» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрацавляйце з гэтай стадіяй як з кантрактом межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, узначыце перакананні на успех і адмовіцеся ад тыхняга частковага завершэння без паведамлення. Заставьце людзкія апраўды на тых элементах, якія витрачаюць грошы або зменяюць даны для працы. Компіляцыйныя налашчэння не ўзначаюць павнае завершэння бізнес-процэсу. Для стадіі «Цікавая частка дрэва» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць крок з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Зберагайце налашчэнні параду ўнутры коду прыкладнага програма. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функций павінны знаходзіцца ў аднам месцы, якое працавнікі можуць аудытаваць, не чытаючы весь код.
aph.
/fork і /clone [src + measured]
Калі працуеце зэтапам fork і clone src, спачатку запісайце умовы: неабяжлівыя данні, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцвачыць пазнейшыя змены коду. Дакументавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і обробка некоректных паведамленняў ёсць часткаю продукту, а не пазнейшым дапрацоўкам. Стварайце контрольныя пункты пасля дорогіх крокаў. Функцыя продажу не павінна занова вырахоўваць кашты за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
{"type":"session","version":3,"id":"019fe5b5-b4cf-…","cwd":"/tmp/proj",
"parentSession":"/tmp/fakehome/.pi/agent/sessions/--tmp-proj--/2026-08-09T08-48-28-582Z_019fe5b5-8da6-….jsonl"}
Натыўнае архіваванне файлаў: падтверджана яго відсутнасць [src]
Калі працуеце з фазай паверакання файлоў Native, спачатку запішыце умовы: неабходныя даны, сигнал успеху і тое, што выканаецца у разе частковага нявыпання. Такі список контролю дапамагае залічваць пазнейшыя змены ў кодзе чыстаюча.
Расшырэнне, якое заполняе празора, і што з яго не так
Калі працуеце над стадзіяй «Расширэнне, якое запоўняе», спачатку запісайце контракт: неабходныя даны, сигнал успеху і тое, што выканаецца у разе частковага невыпання. Такі список пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Спрацаввайце гэтую стадзію як контракт межа данымі і перакананымі выходамі. Дайце назву артыфактам, задаце перакананні успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зробіце пераконтроўку пасля дорогіх крокаў. Система вярнення не павінна знову ставіць плату за той самы вызов LLM, калі аператар праканае пазнейшы вузел. Калі працуеце над стадзіяй «Расширэнне, якое запоўняе», спачатку запісайце контракт: неабходныя даны, сигнал успеху і тое, што выканаецца у разе частковага невыпання. Такі список пераконтроўкаў дапамагае заліцвачыць пазнейшыя змены ў кодзе. Зберагачыце настройкі параду ўнутры коду прыемленае. Файлы сераў, хранільнікі секрэтных дадзеных і флагі функций павінны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.
await performRestore(state, ctx, undoRef, "files"); // internally pushes a NEW before-restore
state.redoStack.pop(); // pops the one just pushed; undoRef stays on top
matchesKey('\x1b','escape') → true
matchesKey('\x1b','escape escape') → false
4. opencode — лінейная історыя та ўсё, што можна перадзрабатваць
Этап лінейной історыі 4 opencode працюе найкраща, калі яго розглядаць як вимерную плошчу. Запісаўце адна ідеальная версія, адзін прыклад неудачы та прыметку па аброшчанні перад расширэнням масштаба. Дакументавайце як успішны, так і варыянт вярнення да нормальнасці. Перапрыбуткі, людзкія контралі та обработка некоректных паведамленняў є часткай продукту, а не наступным этапам дорабачання. Храніце стан графа ў простаму та типаванаму формате. Вкладаныя блокі маскуюць, який вузел запісаў кожны поле, і спакоююць продовжэнне роботы пасля перерываў.
Цяпер это SQLite [src]
Этап «It s SQLite now» працюе найкраща, калі яго розглядаць як меркавыя паверхню. Запісаце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметкі па абяцуванні перад расшырэнням масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзервавайце стан графа ў простаму і типізаванаму формате. Вкладныя блокі маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакоююць продовжэнне выканання пасля перерываў.
~/.local/share/opencode/opencode.db (+ -wal / -shm)
ID-ы не ў формате ULIDs [src] packages/schema/src/identifier.ts
Ідэнтыфікаторы не ўскладняюць роботу на даным этапе, калі іх спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Спрыявайце гэты этап як кантракт межа вхіднымі даннымі та перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаць критэрыя успеху та адмовіцеся ад беззвучнага частковага завершэння. Зберагачыце стан графа у простаму та типаванаму формате. Вкладзеныя блокі маскуюць інфармацыю пра тое, який вузел запісаў кожны поле, і спаказваюць працу пасля перерываў.
length 26 = 12 hex time prefix + 14 base62 random
current = BigInt(Date.now()) * 0x1000n + counter // ms << 12 | monotonic counter
value = descending ? ~current : current // descending = bitwise NOT
Ідэнтыфікаторы не ўскладняюць роботу на даным этапе, калі іх спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адну справу з бягам і прыметку па вярнэнню да пачатковага стану пры расшырэнні масштаба. Зберагачыце настройкі паза кодам прыемліка. Файлы сераўнавання, хранільнікі секрэтных данных та флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всего графа.
Історыя ў лінейным формате [src] packages/core/src/session/sql.ts
Для лінейнага этапу src у гісторыі неабяжна прадзеўначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае перадзеўжваць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Неабяжна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія пераказы і обработка некоректных паведамленняў ёсць часткай продукту, а не чымсь, што дадаецца пазней. Неабяжна атрымваць людзкую згоду для тых крокоў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Працэс кампілявання не ўзроўнаважваецца з повнасцю бізнес-функцыяў.
revert() = анулюванне [src] packages/opencode/src/session/revert.ts
Для параграфу «выканаленне змян у пакетах src» неабяжна ўзначыць вхідныя даны, адпаведальнага за этап і крэтыяры завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымае перазапускаць этап з вядомай точкі контролю, не прабуючы спадарваць схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі этап не выйшае, прычына неудачы павінна вказываць на адзін конкрэтны аспект, а не на заплутаны процес. Неабяжна ўключыць людзкія апраўленні для тых крокоў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе виробніцтва. Компіляцыйныя налашчэнні не є гарантыяй полнай адпаведнасці працэсу выконання задач.
unrevert() = перадзрабаткаць [src]
Для стадії redo src, калібруемай пры нявозможнае вярненне, паказваць неабходныя даны, адпаведальнага за крок і крэтырыя для завершэння перад змінайом коду. Аперацыяныя працавнікі павінны магчымае перадзягнуць крок з вядомага пункта контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрыяць гэтай стадіі як даговору межа данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, паказваць перакананні на успех і адмовіцца ад тыхоўскага частковага завершэння. Заставіць людзкую апраўду на тых кроках, дзе витыкаюць грошы або змінююцыся даны для працы. Кампайляванне на час не ўзроўнаваліся з пачатковай цэласнасцю бізнес-процэса.
if (session.revert.snapshot) yield* snap.restore(session.revert.snapshot)
yield* sessions.clearRevert(sessionID)
Для параграфу «redo src» без адаптавання неабяжна практычная визначэнне інпутаў, адпаведальнага за крок і крэтарыяў завершэння працы перад зменым коду. Аператары должны магчымаць паўтарную запуск кроку з вядомага пункту контролю, не прымуджаючыся вычысляць скрыты стан. Конфігурацыю трэба заставляць параду ўнутры коду аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функцияў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф.
Калі параграф «redo» не працуе [src]
Калі працуеце над стадзіяй src, калі аператываецца процес, спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконваець у тым, што пазнейшыя змены коду будуць чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зрабіце контрольную пазнаку пасля дорогіх крокаў. Система вярнення не павінна зноў выклікаць той самы калленд LLM, калі аператар перапрыбуе пазнейшы вузел.
const remove = msgs.slice(index + (session.revert.partID ? 1 : 0))
for (const msg of remove) yield* sessions.removeMessage({sessionID, messageID: msg.info.id})
yield* sessions.clearRevert(sessionID)
Snapshots: shadow git з дрэвамі і без комітаванняў [src]
Калі працуеце з функцыяй «Snapshots shadow git with stage», спачатку запісайте умовы виконання: неабяцковыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список контроля дапамагае заліцвачваць пазнейшыя змены ў кодзе. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына нявыпання павінна вказываць на адну конкрэтную абавязак, а не на заплутаны ланцужок задач. Стварайте контрольныя пункты пасля дорогіх крокаў. Програма для продакцыі не павінна зноў стягваць плата за той самы вызов LLM, калі аператар праканае выконанне наступнага элемента.
yield* add()
const result = yield* git(args(["write-tree"]))
return result.text.trim()
Fork [src + docs]
Калі працуеце над стадзіяй Fork src docs, спачатку запісайце контракт: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду ў правільным напрамку. Спрыймайце гэтую стадзію як контракт межа даннімі і перакананымі выходамі. Дайце назву артыфактам, задаце правіла пераканання успеху і адмовіцеся ад тыхоўскага частковага завершэння. Зрабіце перапытаку пасля дорогіх крокаў. Функцыя адновлення не должна зноў выклікаць той самы калленд LLM, калі аператар прабуе зноў запрацаваць з пазнейшым вузлам. Калі працуеце над стадзіяй Fork src docs, спачатку запісайце контракт: неабяжлівыя данні, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду ў правільным напрамку. Зберагачыце настройкі параду ўнутры коду аплікацыі. Файлы сераў, сховішчы секрэтных даных і флагі функций должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць без неабяжлівага чытання всей структуры.
5. qwen-code — без тэневага репазітарыю, а адкатванне є разрушальным
5-й код qwen без стадіі “цэнт” працюе наяўнасты, калі яго розглядаць як вимерную паверхню. Запісаўце адна “золатая” транскрыпцыю, адзін прыклад неудачы і прыметку па адвярненню роботы перш чым расширваць масштаб. Дакументаваце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Храніце стан графа як плоскі і з адначытаемым типам. Вярнутыя блокі маскуюць, який вузел запісаў канкрэтны поле, і спакшваюць продыранне пасля перарываў.
Корэкцыя [src]
Этап карэкцыі src работае наяўней, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная версія, адзін прыклад неудачы і запіс пра вярнэнне да поперадней становішчы пры расширэнні масштаба. Валіце малыя, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Рэзультаты роботы графа павінны быць простымі та з адначыя типамі дадзеных. Вкладаныя структуры дадзеных маскуюць інфармацыю пра тое, який вузел запісаў канкрэтны поле, і спакоююць продовжэнне роботы пасля перерываў.
Тры незв’язаныя схемы зберагачэння [src] packages/core/src/config/storage.ts
Этап трохіцых незв’язаных схэмаў зберагачвання працюе найкраща, калі яго розглядаць як виміроўваную паверхню. Зафіксуйце адна ідеальная версія, адин прыклад неудачы і запіс про відкатанне перш чым расширваць масштаб. Разглядайце этап як кантракт межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Паказвайце назвы артыфактаў, задаюце критэрыя успеху і не падтрымайце тыхія частковыя завершэння. Раздзеляйце політыку часткавага абробкі дадзеных і політыку ўтрымання іх. Змена адной з яных не должна прымусваць перапісванне другой, калі зменяюцца паказнікі якасці. Этап трохіцых незв’язаных схэмаў зберагачвання працюе найкраща, калі яго розглядаць як виміроўваную паверхню. Зафіксуйце адна ідеальная версія, адин прыклад неудачы і запіс про відкатанне перш чым расширваць масштаб. Зберагайце настройкі параду ад коду прыемлівача. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.
getProjectHash(root) = sha256(win32 ? root.toLowerCase() : root) // full 64 hex, for tmp/
sanitizeCwd(cwd) = cwd.replace(/[^a-zA-Z0-9]/g, '-') // for projects/
FileHistoryService [src]
Для стадії src у FileHistoryService неабяжна практыка задаць вхідныя даны, адміністратара крока і критэрыя завершэння пры перадзеіснаванні коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Неабяжна практыка аддако задокументаваць як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней. Неабяжна практыка аддаць людзкую затверджэнняе для тых крокаў, якія выкарыстоўваюць грошы або зміняюць даны ў працэсе. Працэс складання коду не ўзроўнаважваецца з повнасцю бізнес-функцый.
this.fileCheckpointingEnabled =
params.fileCheckpointingEnabled ?? (!params.sdkMode && (params.interactive ?? false));
/rewind вычышае вашы будучы [src]
Для адміністрацыі павертання зносіцца ваша будучая стадія, таму перш чым зменшваць код, неабходна ясная нараджэння ўводных дадзеных, власніка крока і крэтарыяў выходу. Аператары должны магчымае перзапускнуць крок з вядомай точкі контролю, не падозрываючы схованы стан. Валіце маленькія, тэставальныя елементы працы над велікімі скрыптамі. Калі крок не выйшаў, прычына неудачы павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Заставьте людзкія апраўды на тых этапах, дзе відбываецца выдатак грошэй або зміняюцыся даныя для працы. Компіляцыйны механізм не є гарантыяю цэласнасці бізнес-процэсаў.
const removed = this.state.snapshots.slice(targetIdx + 1);
this.state.snapshots = this.state.snapshots.slice(0, targetIdx + 1);
await this.cleanupOrphanedBackups(removed); // ← physically deletes the backup files
Forks несу свае резервныя копіі [src]
Для стадіі адміністрування резервных копій у Forks неабямо прадзеўляць вхідныя даны, абавесцелювальніка крока і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Спрацавляйце гэтую стадію як кантракт межа вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даўце назвы артыфактам, прадзеўляць перагледы успеху і адмовіцеся ад тыхнай частковай завершэння без паведамлення. Заставіце людзкую апраўду на тых кроках, дзе выкорыстоўваюцца грошы або зміняюцыся даны для працы. Компіляцыйныя налашчэння не ўзроўнаўваюцца з павнай завершанасцю бізнес-процэсаў. Для стадіі адміністрування резервных копій у Forks неабямо прадзеўляць вхідныя даны, абавесцелювальніка крока і крэтырыя завершэння пры зміне коду. Аперацыйныя працавнікі павінны магчымаць перзапуск крока з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Зберагачыце налашчэнні параду ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцый павінны знаходзіцца ў аднам месцы, якое працавнікі можуць перагледзець, не чытаючы весь код.
aph.
6. Разам
Калі працуеце над этапам 6 «Разам», спачатку запісайце угоду: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконтроўвае чыстасць пазнейшых змян у кодзе. Документавайце як шлях успеху, так і шлях вяснавання. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў ёсць частью продукту, а не пазнейшым дапрацоўкам. Стварайце контрольныя пункты пасля дорогіх крокаў. Система вярнення не павінна зноў ставіць плату за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
Храненне
Калі працюеце над стадзіяй Storage, спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага неяксамоства. Такі список пераканаець у тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест вялікіх скрыптав. Калі якісь крок неяксамоства, гэтае неяксамоства павінна адначасова паказваць адную адпаведнасць, а не заплутаны ланцужок задач. Перад налаштаваннем запитоў пераканайце рэкалі на фіксаваным наборы пытанняў. Частае змена запитоў рэдка калі лечыць слабую спроможнасць выкарыстоўвання інформацыі.
Структура размовы і ўздвоенне
Калі працуеце з структурой кансэрвацыі і стадзіяй форкінгу, спачатку запісайце кантракт: неабяжлівыя даннэ, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі чэк-ліст дапамагае захаваць чыстасць пазнейшых змян у кодзе. Спрытывайце гэту стадзію як кантракт межа даннэмі і перакананымі выходамі. Дайце назвы артыфактам, задаце перакананні на успех і адмовіцеся ад тыхоўскага частковага завершэння. Зробіце чэкпоінт пасля дорогіх крокаў. Система адновлення не должна зноў выклікаць той самы калл LLM, калі аператар прабуе зноў запрацаваць з пазнейшым вузлам.
Адкруцьце і зробіце занова
Калі працюеце з этапамі адкручвання та павторнага выкарыстання, спачатку запісайце умовы кантракта: неабяжлівыя даны, сигнал успеху та тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выкарыстання та кост токена або запытку пад функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі працэс пераходзіць з дэмаверсіі ў спяльныя среды. Зробіце контрольную паўзу пасля дорогіх крокаў. Функцыя адновлення не должна зноў нарахоўваць кост той самай вызову LLM, калі аператар прабуюць зноў выконаць пазнейшы вузел.
7. Тры лініі дыяграмы проекта
Калі працуеце з 7 стадзяміяй дыяграмы Three design lineages, спачатку запісайце умовы: неабяжлівыя данні, сігнал успеху і тое, што выходзіць пад частыя неудачы. Такі список контролю дапамагае заліцвачыць змяны ў кодзе пасля таго. Зберагаюце настройкі за межамі коду прыемліка. Файлы сераўнавання, хранільнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Ставяйце контрольныя пункты пасля дорогіх крокаў. Програма для продакцыі не должна занова ставіць плату за той самы вызов LLM, калі аператар перазапускае пазнейшы вузел.
8. Што насправды трэба рабіць
Калі працюеце над 8 пунктамі «Што насправды трэба реалізаваць», спачатку запісайце угоду: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага невыпання. Такі список контроля дапамагае заліцвачыць пазнейшыя змены ў кодзе. Документавайце як шлях успеху, так і шлях вярнення да нормы. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў є частью продукту, а не пазнейшым дапрацоўкам. Стварайце контрольныя пункты пасля дорогіх крокаў. Система вярнення не должна занова ставіць плату за той самы вызов LLM, калі аператар перапрыбуе пазнейшы вузел.
9. Што вы не пераканалі
Калі працуеце над 9-ю стадзіяй «Што вы зрабілі», спачатку запісайце умовы контракту: неабяжлівыя даны, сигнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына нявыпання павінна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Зробіце перапактаванне пасля дорогіх крокаў. Програма не павінна зноў стягваць плата за той самы вызов LLM, калі аператар праканае пазнейшы вузел.
Справакі
Калі працюеце на стадыі Рэферэнсаў, спачатку запішыце кантракт: неабходныя даннэ, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрыятлівае ставленне да гэтай стадыі як да кантракту межа даннэмі і перакананымі выходамі. Дайце назву артыфактам, задаць тэсты на успех і не падзеўляйцеся частым, непрыканальным завершэнням. Зробіце чэкпоінт пасля дорогіх крокаў. Система адновлення не должна зноў выклікаць той самы калл LLM, калі аператар прабуе зноў запрацаваць пазнейшы вузел. Калі працюеце на стадыі Рэферэнсаў, спачатку запішыце кантракт: неабходныя даннэ, сігнал успеху і тое, што выходзіць пад частым неудачам. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Зберагаеце настройкі праза код аплікацыі. Файлы сяродавішча, хранільнікі секрэтных дадзеных і флагі функций должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў.
Чэк-ліст для аператараў
У стадії перагляду крокаваў эксплуатацыі неабходна праказаць вхідныя даны, адпаведальнага за кожны крок і крэтарыя для завершэння працы перад змінайом коду. Аператары должны магчымае запускаваць крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан.
Запісвайце час выконання і вартасьць токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразлівае праказаванне вартасцей запобегае неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спакульную.
Заставьце людзкія апраўды для тых крокав, якія витрачаюць грошы або зменяюць даны ў працэсе виробніцтва. Конфігурацыя, створаная ў часе компіляцыі, не гарантуе полнай адпаведнасьці з бізнес-трэбованнямі.
Напісце кароткі посібнік: як зменяць клучы, як спрачыслаць чергу запытаў, як анулюваць пярэдніе змены.
Зберагаўце настройкі праза код аплікацыі. Файлы среды, хранільнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь код аплікацыі.
Неабяжна людская празначэнне для тых элементаў, якія выдвайуць грошы або зменяюць данні праработкі. Працаванне ў часе компілявання не абяжаецца пачынкамі бізнес-процэсаў.
Перш чым пераводзіць стэк, заморажуйце версіі, зафіксавайце «золаты» транскрыпты для критычных ліній працы і паказвайце крокі для адвярнення змян. У спадзеленых средах неабходны ліміты частоты, перакананні ў правах на викорыстоўванне та чысты власнік для ротацыі секрэтных даных. Валіце надзейнасць, а не крэатыўныя разовыя дамэстрацыі.
Запіс для 413b940c57b7: не кладзіце ключы прадаўцаў у репазітарый, задаце верхнюю межу токенаў на сесію і зберагаце транскрыпты праз адносна да фіксатуў для евалюацыі, каб пазнейшыя замены модэляў заставаліся парабяльнымі.