Спасибо! Замечание валидное. Про «простую задачу» я в тексте сформулировал не совсем точно. Это скорее характеристика задач нашего бенча, а не то, что определяется в рантайме.
Статья написана по профилю v0.0.3. В этой версии LoopBreaker срабатывал, в частности, на три одинаковых вызова инструмента подряд, когда совпадают имя и аргументы, и добавлял инструкцию перестать повторять тот же подход и попробовать следующий шаг сделать иначе. Аналогично он реагировал на повторяющиеся ошибки.
Отдельно был порог в 12 tool-раундов. После него агент получал жёсткую подсказку сворачивать исследование и заканчивать. Это не лимит выполнения, длинный прогон на этом месте не обрывается.
В текущей v0.0.4 этот механизм уже смягчили: на 12 раундах предлагается делать не разрозненные правки, а вносить множественные изменения разом через написания скрипта и не повторять неудачные попытки. На 24 шаге добавляется инструкция заканчивать: провести проверку, исправить ошибку и закончить задачу.
По сути, этими подсказками мы стараемся дожимать модель до результата, не давая ей тратить оставшиеся шаги на повторение уже неработающей стратегии. При этом механизм явно не универсальный: на каких-то задачах такие подсказки могут начать мешать и подталкивать модель к преждевременному завершению. Если знаете открытые задачи, где LoopBreaker ломает нормальную длинную траекторию, буду очень рад примерам. На них как раз интересно проверять и дорабатывать профиль.
DeepSeek Harness предлагают интересный и смелый подход, но пока нет доказательств, что это дает какой-то прирост. Кроме того, такая полная кастомизация через плагины, где даже сам агентный цикл является плагином, мне кажется слишком "гиковой" (далеко не каждый разработчик захочет переписывать харнесс под себя, по сути, с нуля). У Deep Agents в этом плане попроще: есть агентный цикл LangChain и 6 хуков, чтобы кастомизировать поведение на разных этого цикла.
Логирование у DeepSeek Harness действительно интересно реализовано. Это может быть удобно для сбора трейсов поведения агента. Я тут на днях даже issue завел в Arize, чтобы поддержали преобразование нужных компонентов логов в трейсы для OpenInference/OTel: CHAIN → LLM → TOOL/AGENT. Тогда трейсы можно будет собирать в Arize Phoenix. У Deep Agents и без журнала логов есть состояние, которое фиксирует шаги агента, по которым можно откатываться, форкаться и так далее. Ну и сбор трейсов в Arize Phoenix уже есть, в статье он показан.
Если вы пользуетесь Claude Code/Codex для личных и рабочих задач, в которые не входит создание собственных агентов, то, возможно, практически вам из статьи ничего и не нужно :) Она просто дает дополнительное понимание того, как устроены современные агентные харнессы.
Если же задача построить своего агента есть, то можно скормить тому же Claude Code или Codex скиллы LangChain и, обладая знаниями из статьи, поручить ему собрать кастомного агента под вашу задачу — со своими тулами и MCP, песочницей, памятью, субагентами, middleware, правилами доступа и подтверждений и т. д. Если на Гигачате захотите такого агента собрать, то для этого тоже скиллы есть.
Причем с Codex есть еще вариант: Deep Agents Code (dcode) уже умеет авторизоваться через ChatGPT и использовать Codex в рамках подписки. Для подписки Claude Code такого подключения к Deep Agents, потому что Антропики не любят, когда их подписку в других харнессах используют.
Ничего против ACP не имею :) Но ACP сам по себе же не заменяет харнесс. Он про то, как агента подключить к IDE или еще какому-либо клиенту. А саму внутреннюю механику агента — цикл, работу с контекстом, планирование, субагентов и т. д. — все равно надо либо реализовать самому, либо взять готовую в виде Claude Code, OpenCode, Deep Agents и прочих харнессов.
Для этого у LangChain для этого уже есть отдельная интеграция deepagents-acp: она позволяет агенту на их стеке работать как ACP-сервер.
Спасибо за ваш комментарий и полезные уточнения! При личном использовании можно даже ничего не указывать в scope, потому что GIGACHAT_API_PERS подставляется там по умолчанию.
Спасибо! Замечание валидное. Про «простую задачу» я в тексте сформулировал не совсем точно. Это скорее характеристика задач нашего бенча, а не то, что определяется в рантайме.
Статья написана по профилю v0.0.3. В этой версии LoopBreaker срабатывал, в частности, на три одинаковых вызова инструмента подряд, когда совпадают имя и аргументы, и добавлял инструкцию перестать повторять тот же подход и попробовать следующий шаг сделать иначе. Аналогично он реагировал на повторяющиеся ошибки.
Отдельно был порог в 12 tool-раундов. После него агент получал жёсткую подсказку сворачивать исследование и заканчивать. Это не лимит выполнения, длинный прогон на этом месте не обрывается.
В текущей v0.0.4 этот механизм уже смягчили: на 12 раундах предлагается делать не разрозненные правки, а вносить множественные изменения разом через написания скрипта и не повторять неудачные попытки. На 24 шаге добавляется инструкция заканчивать: провести проверку, исправить ошибку и закончить задачу.
По сути, этими подсказками мы стараемся дожимать модель до результата, не давая ей тратить оставшиеся шаги на повторение уже неработающей стратегии. При этом механизм явно не универсальный: на каких-то задачах такие подсказки могут начать мешать и подталкивать модель к преждевременному завершению. Если знаете открытые задачи, где LoopBreaker ломает нормальную длинную траекторию, буду очень рад примерам. На них как раз интересно проверять и дорабатывать профиль.
Спасибо!
DeepSeek Harness предлагают интересный и смелый подход, но пока нет доказательств, что это дает какой-то прирост. Кроме того, такая полная кастомизация через плагины, где даже сам агентный цикл является плагином, мне кажется слишком "гиковой" (далеко не каждый разработчик захочет переписывать харнесс под себя, по сути, с нуля). У Deep Agents в этом плане попроще: есть агентный цикл LangChain и 6 хуков, чтобы кастомизировать поведение на разных этого цикла.
Логирование у DeepSeek Harness действительно интересно реализовано. Это может быть удобно для сбора трейсов поведения агента. Я тут на днях даже issue завел в Arize, чтобы поддержали преобразование нужных компонентов логов в трейсы для OpenInference/OTel: CHAIN → LLM → TOOL/AGENT. Тогда трейсы можно будет собирать в Arize Phoenix. У Deep Agents и без журнала логов есть состояние, которое фиксирует шаги агента, по которым можно откатываться, форкаться и так далее. Ну и сбор трейсов в Arize Phoenix уже есть, в статье он показан.
Если вы пользуетесь Claude Code/Codex для личных и рабочих задач, в которые не входит создание собственных агентов, то, возможно, практически вам из статьи ничего и не нужно :) Она просто дает дополнительное понимание того, как устроены современные агентные харнессы.
Если же задача построить своего агента есть, то можно скормить тому же Claude Code или Codex скиллы LangChain и, обладая знаниями из статьи, поручить ему собрать кастомного агента под вашу задачу — со своими тулами и MCP, песочницей, памятью, субагентами, middleware, правилами доступа и подтверждений и т. д. Если на Гигачате захотите такого агента собрать, то для этого тоже скиллы есть.
Причем с Codex есть еще вариант: Deep Agents Code (
dcode) уже умеет авторизоваться через ChatGPT и использовать Codex в рамках подписки. Для подписки Claude Code такого подключения к Deep Agents, потому что Антропики не любят, когда их подписку в других харнессах используют.Ничего против ACP не имею :) Но ACP сам по себе же не заменяет харнесс. Он про то, как агента подключить к IDE или еще какому-либо клиенту. А саму внутреннюю механику агента — цикл, работу с контекстом, планирование, субагентов и т. д. — все равно надо либо реализовать самому, либо взять готовую в виде Claude Code, OpenCode, Deep Agents и прочих харнессов.
Для этого у LangChain для этого уже есть отдельная интеграция
deepagents-acp: она позволяет агенту на их стеке работать как ACP-сервер.Спасибо за статью! Интересно посмотреть на стриминг такой модели 😁
Как ваша работа соотносится с Harbor https://www.harborframework.com/ ?
Спасибо за ваш комментарий и полезные уточнения! При личном использовании можно даже ничего не указывать в scope, потому что GIGACHAT_API_PERS подставляется там по умолчанию.