AIDive

Пакет к видео

Набор ограничений ultracode: пять настроек, чек-лист разветвления и измеренные пары

11 мин чтения

TL;DR и вердикт

  • Ultracode не делает Claude Code умнее. Он меняет то, что говорят модели, и убирает три защиты, поэтому запуск тратит больше и останавливается позже.
  • Правило: разветвляйте, только если результат оценивает набор тестов или набор правил и задача делится на независимые части. Всё остальное запускайте обычным способом, на high.
  • Пять настроек ограничивают запуск: рекомендация по размеру workflow со значением small, потолок в 4 одновременных агента, одна более дешёвая модель для всех агентов workflow, ключевое слово вместо переключателя и выключенное автопродолжение на лимите использования.
  • Два файла с ограничениями: settings.json и ultracode-caps.sh. Чек-лист находится в when-to-fan-out.md. Измеренные пары лежат в paired-runs.csv.
  • Рекомендация по размеру это совет, а не предел. В нашем запуске она говорила «меньше 5 агентов», а запуск использовал 9.

Что говорят источники

Ключевое слово или переключатель. Если набрать ultracode в промпте, эта одна задача включается в workflow. Просьба своими словами, например «use a workflow», работает как то же согласие s1. Ключевое слово ничего не делает в промпте, переданном через -p, в нештампованном вводе Agent SDK или в запланированной задаче s1. Переключатель устроен иначе. При включённом ultracode Claude планирует workflow для каждой значимой задачи, и один запрос может превратиться в несколько workflow подряд s1. Документация добавляет, что сессия с включённым ultracode упирается в лимит сессии или недели раньше, чем та же работа с выключенным s1.

Подставленная фраза. При включённом ultracode справочник по написанию workflow говорит: «author and run a workflow for every substantive task by default. The goal is the most exhaustive, correct answer you can produce» и что «token cost is not a constraint.» Тот же текст цитируется в публичном issue под названием «Ultracode overrides the workflow size guideline» s8. У каждого workflow в последовательности свой бюджет агентов, поэтому четыре фазы по 15 агентов дают 60 агентов, хотя ни один отдельный workflow не нарушает рекомендацию s8.

Три защиты. Ultracode отключает три проверки. Предупреждение Large workflow не появляется. Лимит сессии на одновременных субагентов не применяется к субагентам, которых Claude запускает инструментом Agent. В режиме разрешений auto вас не просят подтвердить первый запуск workflow s1.

Рекомендация по размеру. Small означает меньше 5 агентов, medium меньше 10, large меньше 50. По умолчанию medium, а на тарифе Pro с версией v2.1.271 или новее small. Claude Code передаёт её модели как совет, а не как предел, так что промпт, просящий другого масштаба, по-прежнему её перекрывает s1. Жёсткие пределы: по умолчанию 16 одновременных агентов и 1000 агентов на запуск. Предупреждение о большом workflow срабатывает выше 25 агентов или 1,5 миллиона прогнозируемых токенов, и оно только предупреждает s1.

Наш собственный запуск. Мы набрали ключевое слово на песочнице из двух файлов и 16 строк кода, с рекомендацией по размеру small, и попросили обзор только для чтения. Запуск использовал 9 агентов: 2 искателя и 7 верификаторов. Каждый искатель прочитал около 45,2 тыс. токенов. Обычного запуска того же промпта мы не делали, поэтому собственной парной цифры у нас нет.

Парный тест. На тарифе за $200 разработчик дал одну и ту же спецификацию обычному запуску и запуску с ultracode. Оба прошли 136/136 скрытых проверок. Обычный запуск закончился за 25 мин, потратив 8% 5-часового лимита. Запуск с ultracode был прерван на 76 мин, когда ушло 18%, и использовал 12 агентов в двух командах (9 и 3), а не 1000. В пересчёте на минуту расход был примерно равен: он просто не останавливался s3.

Ещё три пары на тарифе Pro. Одиночный агент против workflow, те же находки: 115 тыс. против 972 тыс. токенов, 52 тыс. против 936 тыс. и 102 тыс. против 683 тыс. Счётчик /usage сдвинулся на 4 против 12, 7 против 12 и 4 против 8 пунктов, что автор суммирует как примерно вдвое больше квоты, до трёх раз. Время работы на скрипте плана Opus составило 173 с против 178 с. На четырёх независимых исследовательских задачах параллельный вариант был быстрее в 1,6 раза при 2,3x токенов s4.

Пара с 30-кратной ценой. Один агент на xhigh потратил 1 ч 13 мин и около $18 по ценам API. Max с ultracode потратил 9 ч 14 мин, с 40 субагентами, и около $554. По одному запуску, по прайс-листу API, не по счёту подписки s11.

Как выглядит пара. В публичном тестовом репозитории лежит одна пара «одиночный агент против workflow» на одной задаче. Одиночный агент использовал 181 646 токенов, workflow 1 326 703. Стоимость по цене API составила $0.2678 против $1.3744. Время работы 43 с против 80 с, а счётчик сессии сдвинулся на +0 против +12 пунктов s22. Это одна пара, так что читайте её как форму, а не как закон. Документация относит субагентов и workflow к факторам расхода токенов: каждый агент, которого запускает workflow, шлёт собственные запросы поверх основного разговора s5. Исследовательская команда Anthropic измерила примерно в 4 раза больше токенов у агента, чем у чата, и примерно в 15 раз больше у мультиагентной системы s20.

Где это окупается: Bun. Bun переписали с Zig на Rust примерно 50 динамическими workflow, которые шли непрерывно 11 дней. Исходный код составлял 535 496 строк на Zig, и порт прошёл путь от старта до 100% прохождения набора тестов на всех платформах за 11 дней s19. Судьёй был готовый набор тестов.

Где это окупается: охота за багами. Anthropic подложила 70 багов в кодовую базу на 116 тыс. строк. За 3 запуска одиночный агент нашёл 14, 15 и 27. Workflow нашёл 66 в каждом из своих 3 запусков s24. Этот тест шёл на Managed Agents, продукте API, а не в Claude Code. Anthropic не привела стоимость и советует начинать с ограниченной задачи s24. Блог запуска говорит, что большинству традиционных задач программирования не нужна комиссия из 5 рецензентов s2.

Убежавший запуск. Скрипт, написанный моделью, на тарифе Max 20x запустил 221 агента за 51 минуту. После первой ошибки лимита сессии было запущено ещё 189 агентов. В таблице автора отчёта насчитано 47 465 299 токенов, включая кэш s7. Две оговорки автора: у 189 поздних агентов не зафиксировано ответов модели, а запасной вариант в скрипте продолжал рассылать задачи, когда слияние ничего не вернуло. Этот запуск шёл на v2.1.266, до паузы на лимите использования s7. Второй публичный отчёт описывает два workflow из 56 и 104 агентов, 1 472 855 и 1 752 360 токенов, где 92 из 160 агентов упали с лимитом сессии s21. Автор говорит, что о включённом ultracode сообщалось без того, чтобы пользователь его включал.

Рычаги. CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS принимает значение от 1 до 256 и требует v2.1.269 s10. CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL запускает всех агентов workflow на одной модели, а остальные субагенты сохраняют свои, начиная с v2.1.296 s18. При включённом autoContinueAtUsageLimit запуск, упёршийся в лимит, ставится на паузу и возобновляется после сброса, до двух ожиданий, а в третий раз агент падает. При выключенном затронутые агенты падают у стены s1. Блог запуска говорит, что бюджет в промпте, например «use 10k tokens», задаёт предел s2. Вид /workflows показывает расход токенов каждого агента, а x останавливает запуск s1. /usage отмечает поведение, на которое приходится 10% и более недавнего использования, а v2.1.299 добавила предупреждения для workflow s5 s18.

Набор ограничений

Блок настроек. Ограничение 1 это рекомендация по размеру, ограничение 4 это ultracode со значением false, чтобы единственным входом было ключевое слово, а ограничение 5 это выключенное автопродолжение. Положите его в .claude/settings.json или в любой файл настроек. Ключ workflowSizeGuideline работает в любом файле настроек начиная с v2.1.219 s1.

settings.json

{
  "workflowSizeGuideline": "small",
  "ultracode": false,
  "autoContinueAtUsageLimit": false
}

settings.json on GitHub

Строки окружения. Ограничения 2 и 3. Замените заполнитель полным идентификатором модели, на которой должны работать ваши агенты workflow.

ultracode-caps.sh

#!/usr/bin/env bash
# Source this file before you launch Claude Code: `source ultracode-caps.sh && claude`.
# These two lines are caps 2 and 3 of the five. Caps 1, 4 and 5 live in settings.json.

# Cap 2: at most 4 workflow agents run at once. The default is 16 (fewer on a machine
# with few CPUs). Accepted values are 1 to 256. Needs Claude Code v2.1.269 or later.
export CLAUDE_CODE_WORKFLOW_MAX_CONCURRENT_AGENTS=4

# Cap 3: run every workflow agent on one cheaper model, while your other subagents
# keep theirs. Replace the placeholder with the full model id you want to pay for.
# Needs Claude Code v2.1.296 or later.
export CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL="<your-cheaper-model-id>"

# Optional kill switch for a shared machine: no workflows at all.
# export CLAUDE_CODE_DISABLE_WORKFLOWS=1

ultracode-caps.sh on GitHub

Чек-лист, который вы проходите перед тем, как набрать ключевое слово.

when-to-fan-out.md

# When to fan out: the two-condition checklist

Fan out (use the ultracode keyword in one prompt) only if both answers are yes.

1. Does a test suite or a rule set judge the output?
   - [ ] A suite that already exists and says pass or fail without anyone's opinion.
   - [ ] Or a written rule file the output is reviewed against.
2. Does the job split into independent pieces?
   - [ ] No piece waits on the result of another piece.
   - [ ] Each piece can be checked on its own.

If either answer is no, run plain at high effort. A plain run costs one bill. A
workflow costs one bill per agent.

Jobs that usually pass both tests:
- A port or migration across many files with a test suite as the judge.
- A review of a whole codebase against a rule file.
- A translation of many files with the same prompt.
- A cleanup pass over a pile of similar documents.

Jobs that usually fail one of them:
- A small feature, a bug fix, a refactor of one module.
- Anything where "good" is a matter of taste.
- A chain of steps where each one needs the previous result.

Before you start:
- [ ] Run a slice first (one folder, ten files) and read the token total.
- [ ] Put a budget in the prompt, for example "use 10k tokens".
- [ ] Open /workflows and watch per-agent tokens. Press x to stop.
- [ ] After the run, open /usage and read the share that went to workflows.

when-to-fan-out.md on GitHub

Измеренные пары и случаи из источников, по одной строке на каждую, с идентификатором источника.

paired-runs.csv

source_id,run,measure,baseline,workflow_or_fanout,note
s22,rebuild-your-claude-md pair (rep 2),tokens,181646,1326703,"all four usage fields summed, 14 agent transcripts on the workflow side"
s22,rebuild-your-claude-md pair (rep 2),API cost in USD,0.2678,1.3744,single agent vs workflow
s22,rebuild-your-claude-md pair (rep 2),wall time in seconds,43,80,single agent vs workflow
s22,rebuild-your-claude-md pair (rep 2),session meter points,+0,+12,"/usage before to after: 17% to 17% vs 19% to 31%"
s24,70 planted bugs in 116k lines,bugs found,"14, 15 and 27 (3 runs)","66 in each of 3 runs","Managed Agents, not Claude Code; no cost given"
s19,Bun port from Zig to Rust,test suite passing,,100%,"about 50 dynamic workflows, 11 days, 535,496 lines of Zig"
s6,fixed worker and gate files,tokens for workflow execution and monitoring,100%,about 20%,"self-reported, no plan stated; runs 5 to 6 hours down to 20 to 40 minutes"
s7,runaway run on Max 20x,agents started,,221,"51 minutes; 189 started after the first session-limit error; 47,465,299 tokens including cache"
s21,ultracode reported on without the user enabling it,agents started,,"56 and 104","1,472,855 and 1,752,360 tokens; 92 of 160 agents failed with the session limit"
s20,multi-agent research system,tokens vs a chat,about 4x for an agent,about 15x for multi-agent,Anthropic's own data
s3,same spec on a $200 plan,hidden checks passed,136/136,136/136,"both runs perfect"
s3,same spec on a $200 plan,time and 5-hour limit used,"25 min, 8%","76 min (cut off), 18%","12 agents in two teams (9 and 3)"
s4,Opus plan script,tokens,115k,972k,"Pro plan; /usage 4 vs 12 points; 173 s vs 178 s"
s4,compact script,tokens,52k,936k,"Pro plan; /usage 7 vs 12 points"
s4,Claude.md script,tokens,102k,683k,"Pro plan; /usage 4 vs 8 points"
s4,four independent research jobs,time and tokens,"102 s, about 33k","about 64 s, 76k","parallel 1.6x faster for 2.3x tokens"
s11,Cybercity,time and API cost,"1 h 13 m, about $18 (1 agent)","9 h 14 m, about $554 (40 subagents)","xhigh vs max with ultracode; one run each; API list prices"

paired-runs.csv on GitHub

Две заметки к набору. Ключ ultracode важен, только если иначе вы начинали бы сессии с включённым переключателем, а значение false означает, что каждое разветвление это решение, которое вы принимаете в одном промпте. Полное отключение workflow убирает и ключевое слово, и переключатель: задайте "disableWorkflows": true в ~/.claude/settings.json s1.

Сделайте это в понедельник

  • Скопируйте settings.json в настройки проекта и проверьте, что /config показывает рекомендацию по размеру как small.
  • Подключите ultracode-caps.sh в оболочке, из которой запускаете Claude Code, подставив настоящий идентификатор модели вместо заполнителя.
  • Проверьте, что переключатель ultracode выключен в /effort, и используйте ключевое слово в отдельном промпте, когда нужно разветвление.
  • Перед любым разветвлением ответьте на два вопроса в when-to-fan-out.md. Если один ответ «нет», запускайте обычным способом, на high.
  • Сначала запустите срез и прочитайте итог токенов в /workflows, прежде чем расширять задачу.
  • Добавьте бюджет в промпт, например «use 10k tokens».
  • Держите /workflows открытым при первом запуске и нажмите x, если число агентов растёт выше ожидаемого.
  • После запуска откройте /usage и отметьте долю, ушедшую на workflow.

Двигаться дальше

Зафиксируйте исполнителя и шлюз, а не поручайте их написание модели. Один пост на Hacker News сообщает, что расход токенов на исполнение и мониторинг workflow удалось довести примерно до 20% от прежнего, а workflow, которые занимали 5-6 часов, теперь занимают 20-40 минут. Это данные самого автора, тариф не указан s6. Метод состоит из двух частей. Файл агента workflow-worker получает один фрагмент плана и узкие права на написание и запуск тестов только для своей части. Файл агента workflow-gate принимает результаты параллельных агентов, а последовательные проверки переезжают в Makefile с двумя целями: make workflow-serial-gate проверяет дерево git и запускает тесты для изменённого, а make workflow-final-gate запускает чистые тесты на всём s6. Проверка шлюза, которая раньше занимала 10 минут для сложных планов, теперь занимает секунду, по словам того же поста. Эти 20% относятся к исполнению и мониторингу, а не к созданию плана или реализации. Чтобы попробовать, напишите два файла агентов один раз, храните их в репозитории и направьте на них промпт workflow.

Прочитайте отчёт об убежавшем запуске, прежде чем доверять сгенерированному скрипту. Issue показывает таблицу по фазам и единственный шаблон, стоящий за 189 лишними агентами: когда агент слияния ничего не возвращает, скрипт откатывается на исходный список и идёт дальше s7. Просите у модели скрипты, которые останавливаются на упавшем агенте. Держите автопродолжение выключенным в любом запуске, за которым вы не следите.

Поймите, почему рекомендация проигрывает. Issue 92631 показывает текст рекомендации рядом с фразой ultracode и объясняет, почему вторая побеждает при расхождении s8. Если нужен жёсткий потолок, число одновременных агентов ограничивает переменная параллелизма, а то, что они тратят, ограничивает бюджет в промпте.

Используйте тред запуска для широких задач. Самое острое возражение в первый день есть в треде запуска, с такими комментариями, как «an exciting new way to burn up as many tokens as possible» и «Quantity of output is not the issue right now. Quality is.» s9. Успехи, о которых там пишут, имеют общую форму: обзор по файлу правил, перевод кодовой базы, наведение порядка в отсканированных страницах.

Managed Agents это другой продукт. В тесте с 70 багами использовались динамические workflow Managed Agents, доступные только через API. Если вы строите на API, начинайте с ограниченной задачи, как советует Anthropic s24. Настройки Claude Code туда не переносятся.

Чему не стоит верить. Анекдоты о квотах без тарифа и без числа это сведения из вторых рук. Один комментатор пишет, что 6 агентов съели 4-часовую квоту, а другой сообщает о порте почти на 2 миллиарда токенов, который обошёлся в $20 на дешёвой модели другого вендора через собственный клон комментатора s23 s9. Ни то ни другое не является измерением Claude Code на тарифе. Число попадает в ваши заметки, только когда к нему приложены тариф, модель, версия и задача.

FAQ

Стоит ли ключевое слово столько же, сколько переключатель? Нет. Ключевое слово запускает одну задачу как workflow. Переключатель планирует workflow для каждой значимой задачи, так что один запрос может стать несколькими s1. Оба тратят поверх вашего разговора, потому что каждый агент шлёт собственные запросы s5.

Ограничивает ли значение small рекомендации по размеру запуск 4 агентами? Нет. Это совет, отправляемый модели, и промпт или фраза ultracode могут его перекрыть s1 s8. В нашем запуске она говорила «меньше 5», а запуск использовал 9. Жёсткие пределы это переменная параллелизма и ваша собственная остановка.

Что происходит, когда запуск упирается в мой лимит использования? При включённом autoContinueAtUsageLimit интерактивная сессия claude.ai ставит запуск на паузу и продолжает после сброса, до двух ожиданий, начиная с v2.1.271. Более ранние версии роняют затронутых агентов s1. При выключенном агенты падают на лимите, и запуск на этом заканчивается.

Зачем более дешёвая модель для агентов workflow? Большая часть workflow это проверки, и каждый агент шлёт собственные запросы. CLAUDE_CODE_WORKFLOW_SUBAGENT_MODEL переводит всех агентов workflow на одну модель и не трогает ваших остальных субагентов s18. Проверьте результат на срезе, прежде чем на него полагаться.

Можно ли по-прежнему пользоваться ultracode? Да, для задач, которые проходят оба вопроса чек-листа. У порта Bun судьёй был полный набор тестов s19. Для небольшой функции или исправления бага по умолчанию подходит обычный запуск на high.

Файлы