docs(delegation): бюджет пишется в промпт сабагента, а не держится в голове #3077
No reviewers
Labels
No labels
Fable 5 ревью
GG-форсайт
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
feedback/max
generative
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
ИРД
вторичка
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#3077
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "docs/delegation-agent-budget"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Что случилось
Прогон разведки 2026-08-24 упёрся в три отказа подряд, и все три — следствие одного пробела в каноне.
repo-hygiene_nextв Caddyfilemera-b2cestimator.pymera-b2cInputValidationError, работа потеряна целикомПочему канон не сработал
delegation.mdуже содержал и «~≤20 tool-calls», и «границы: что НЕ делать». Но всё это записано как ориентир для оркестратора. Агент этих строк не видит: лимит, оставшийся в голове вызывающего, не ограничивает никого. Промпты были написаны без потолка — при формально соблюдённом правиле.Отсюда главная правка: бюджет обязан быть текстом внутри промпта. Потолок вызовов и времени, список запрещённого, и правило деградации «бюджет кончается → отдай что есть, допиши в notes что не успел». Последнее важно отдельно: агент без него молча продолжает копать, потому что альтернативы «сдаться частично» ему никто не предложил.
Потолок размера ответа — отдельный пункт, не следствие токенов
Эмпирика #2203-эпохи в файле уже была («агент на 186k tok / 33 calls упал на StructuredOutput»), но записана как история про токены. Отказ другой: payload больше ~10k символов не парсится как JSON, дальше повтор, дальше потеря всей работы. Токенов при этом может быть немного.
Практическое следствие, вынесенное явно: схему надо проектировать под краткость. Поле
detailс описанием «2-5 предложений» — это приглашение к отказу, если items может быть десяток.Новая секция «Целость результата workflow»
Второй класс проблем, вскрытый тем же прогоном: завершившийся прогон не значит успешный. В одном из прогонов 5 агентов из 10 умерли на обрыве соединения;
parallel()вернул на их местеnull, стадия синтеза отработала на выживших и выдала уверенный текст с числами и ссылками наfile:line. Числа при выборочной проверке оказались верными — но проверять пришлось руками, и без этой проверки вердикт был бы неотличим от выдуманного.В секции: чтение
<failures>иjournal.jsonl, восстановление черезresumeFromRunId(готовые агенты реплеятся из кэша, правило префикса при правке промпта), диагностика зависшего агента по возрасту записи вagent-*.jsonlи типу последнего события, и отличие «завис» от «обрыв соединения, лечится сам».Плюс грабля Windows: перезапись скрипта workflow через python даёт CRLF, и запуск отбивается на
script contains control characters— при том, что синтаксис файла валиден.Границы
Только
.claude/rules/delegation.md, +10 строк, кода не касается. Те же правила добавлены в личный~/.claude/CLAUDE.md(вне репо) — чтобы действовали и в других окнах, и в других проектах.Test plan
TaskStop+resumeFromRunIdпроверено — 5 готовых разведчиков вернулись из кэша, перезапустились только два изменённыхStructuredOutput