Практические замечания: у вашего агента для программирования проблемы с памятью. Хранение большего количества данных не поможет.
Пошаговое руководство по практическим заметкам: у вашего агента для кодирования проблемы с памятью. Хранение большего количества данных не поможет: контракты, проверки и слоты для вставки кода для команд, использующих эту схему.
В этом руководстве пошагово описывается процесс создания рабочей системы от сырьевых материалов для решения проблемы: у вашего кодинг-агента есть проблемы с памятью, и хранение большего объема данных не поможет её решить. Основное внимание уделяется практическим шагам, четкой проверке состояния и коду, который можно просто добавить в репозиторий без необходимости догадываться о его назначении. На этапе обзора необходимо определить входные данные, ответственного за выполнение шага и критерии завершения перед внесением изменений в код. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии системы. Необходимо одновременно задокументировать успешный сценарий выполнения и сценарий восстановления. Повторные попытки, проверки человеком и обработка неработоспособных сообщений являются частью продукта, а не элементами, добавляемыми позже.
Хранение большего объема данных усугубляет ситуацию
При работе над задачей хранения большего объема данных сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Предпочитайте небольшие, тестируемые модули вместо обширных скриптов. Если какой-то шаг не сработает, причина неудачи должна указывать на конкретную ответственность, а не на запутанную цепочку операций. Выполняйте контрольные точки после дорогостоящих шагов. Механизм возобновления работы не должен повторно оплачивать один и тот же вызов большой языковой модели, когда оператор пытается выполнить следующий этап.
Сначала несколько слов о том, кто пишет эти заметки
При работе над первым этапом запишите сначала контракт: необходимые входные данные, сигнал о успехе и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Укажите названия элементов, определите критерии успеха и не допускайте безусловного частичного выполнения задачи. Вносите контрольные точки после дорогостоящих операций. Система возобновления работы не должна снова взимать плату за один и тот же вызов 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» сначала запишите условия использования: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Запишите также время выполнения и стоимость токенов или запросов рядом с функциональными результатами. Отображение затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам. Выполняйте контрольные точки после дорогостоящих шагов. Система возобновления работы не должна снова взимать плату за один и тот же вызов большой языковой модели при повторной попытке обработки последующего узла. При работе над этапом «Старение согласно правилу 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: не храните ключи поставщика в репозитории, установите лимит токенов на каждую сессию и сохраняйте копии данных рядом с фиксами для оценки, чтобы последующие замены моделей оставались сопоставимыми.
На этапе 0 записей по укреплению безопасности лучше всего работает подход, при котором рассматривается измеримая поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Записывайте временные показатели, стоимость токенов или запросов вместе с функциональными результатами. Отслеживание затрат на раннем этапе предотвращает неожиданные счета при переходе от демо-среды к общедоступным средам.
Подробности укрепления безопасности 0/782: измерьте время выполнения, класс ошибки и расход токенов для данной записи, затем решите, следует ли сохранять изменения, опираясь на фиксированный набор вопросов, а не на устные описания.
Для этапа 1 записей по укреплению безопасности определите входные данные, ответственного за выполнение шага и критерии завершения перед изменением кода. Операторы должны иметь возможность перезапустить шаг с известной точки контроля, не догадываясь о скрытом состоянии. Документируйте как успешный путь выполнения, так и путь восстановления. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не элементами последующей доработки.
Подробность укрепления 1/782: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных примеров.
При работе над вторым этапом записи о укреплении сначала запишите контракт: необходимые входные данные, сигнал успешного выполнения и то, что происходит при частичной неудаче. Такой чек-лист обеспечивает честность последующих изменений в коде. Рассматривайте этот этап как контракт между входными данными и проверенными выходными данными. Дайте названия элементам, определите критерии успеха и не допускайте безответственного частичного выполнения задачи.
Подробность укрепления 2/782: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных примеров.
Метод усиления безопасности на 3-й стадии работает наилучшим образом, когда его рассматривают как измеримую поверхность. Соберите один идеальный пример работы, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Храните конфигурацию вне кода приложения. Файлы среды, хранилища секретов и флаги функций должны находиться в одном месте, чтобы операторы могли их проверять, не читая весь код.
Подробности усиления безопасности 3/782: измеряйте время выполнения, класс ошибок и расход токенов для данной записи, затем принимайте решение о сохранении изменений на основе фиксированного набора критериев, а не на основе единичных примеров.