Agent Instruction Surfaces

Инструкцию размещают не по длине текста, а по требуемой области действия, моменту загрузки, сроку жизни и силе принуждения. Неправильная поверхность либо постоянно съедает контекст, либо создаёт иллюзию контроля там, где нужен исполнимый guardrail.

Четыре вопроса до выбора файла

  1. Когда это знание нужно? Всегда, при работе с определёнными путями, только в процедуре или только в побочной задаче.
  2. Что должно пережить compaction? Постоянная норма, повторно загружаемая процедура или только итог изолированного исследования.
  3. Насколько обязательно соблюдение? Совет модели, маршрутизация контекста или детерминированный запрет.
  4. Кто должен видеть промежуточную работу? Основная сессия либо отдельный контекст, возвращающий только результат.

Матрица поверхностей

Названия реализаций различаются между harness, но роли устойчивы:

Поверхность Когда загружается Для чего годится Главный риск
корневой файл инструкций при старте, постоянно команды сборки, карта репозитория, общие нормы каждая строка платится во всех задачах
локальный/путевой файл при касании области правила модуля или типа файлов вне области правило отсутствует
skill по совпадению задачи или явному вызову процедура, runbook, checklist остаётся советом и может не сработать по trigger
subagent при делегировании, в отдельном окне поиск, аудит, анализ логов, независимая проверка родитель получает сжатый итог, а не доказательства целиком
hook / permission / policy-as-code по событию жизненного цикла обязательная проверка, блокировка, автоматизация неверный hook детерминированно ломает работу
output style / role prompt при старте, высоко в иерархии существенная смена роли и формы ответа вытесняет или конфликтует с базовым поведением
разовый system-prompt append на один запуск временный доменный или форматный режим высокая постоянная цена внутри запуска

Матрица описывает механику Claude Code на сентябрь 2026 года, поэтому конкретное поведение загрузки помечено volatile. Общий принцип не зависит от продукта: чем уже область применимости, тем позже должно раскрываться знание (Context Layers).

Выбор по типу требования

  • Факт, который нужен почти в каждой задаче, — в корневую карту.
  • Ограничение, связанное с путём или типом файла, — в path-scoped rule.
  • Последовательная процедура с человеческим управлением — в skill.
  • Побочная работа, промежуточные результаты которой загрязнят основную сессию, — в subagent.
  • «Всегда сделать X» или «никогда не делать Y», если нарушение реально опасно, — в детерминированный hook/permission, а не в прозу.
  • Если проблему можно убрать стандартной структурой проекта, предпочтительнее Convention Over Instruction.

Особенно важно различать skill и subagent. Skill сохраняет процедуру в основном потоке, где её можно направлять. Subagent покупает изоляцию: его инструментальные следы не входят в родительский контекст, возвращается только handoff. Вопрос выбора звучит так: понадобится ли основной сессии сам промежуточный вывод или только заключение?

Авторитет не равен надёжности

Высокое место в prompt hierarchy повышает вероятность следования, но не превращает текст в границу безопасности. Запрет в system prompt всё равно остаётся вероятностным и уязвимым к конфликтам, длинной сессии и prompt injection. Обязательная политика исполняется вне модели (Agent Harness).

У hooks тоже два класса. Команда, HTTP/MCP-вызов и проверка кода могут запускаться детерминированно; hook, который вызывает LLM для решения, детерминирован только по факту запуска, но не по вердикту. Смешивать эти гарантии нельзя.

Гигиена поверхности

  • у постоянно загруженного файла есть владелец и регулярный review;
  • устаревшая компенсация ограничения модели удаляется после повторной проверки на новом поколении;
  • процедура выносится из корневого файла, а не дублируется;
  • требования безопасности имеют машинное принуждение;
  • trigger skills проверяется отдельно от качества самой процедуры;
  • после compaction проверяется, какие поверхности harness загружает заново, а какие теряет.

Фиксированный предел вроде «не больше 200 строк» — эвристика конкретного продукта. Инвариант другой: в постоянно загруженном слое остаётся только знание, цена отсутствия которого выше постоянной цены контекста.

Связано с

  • Agent First Repository — корневой файл как карта, а не энциклопедия
  • Agent Harness — мягкий и жёсткий контуры исполнения
  • Context Layers — когда разные слои попадают в prompt
  • Convention Over Instruction — как вообще удалить инструкцию
  • Tool Catalog — описание инструмента как ещё одна поверхность управления поведением