Аджентик Харнесс
"Agentic Harness" is the new black. Все бегают с идеей оркестрации агентов, создания своих "обвесов" и обвязок агентов, чтобы стать ещё продуктивнее и свободнее, и загрузить агентов на 150% (хотя пока что загружены на 150% сами люди...хе-хе).
Задумался в выходные, как было бы эффективно и реально управлять набором агентов, которые бы разрабатывали мне софт? Чтобы и контекст проекта сохранить централизованно, и понимать, кто из агентов какие задачи делал, сделал и т.п. Потому что очень не хочется иметь какую-то очередную "нахлобучку" поверх Claude Code к которой надо ещё прицеплять с десяток других тулзов и всё вместе связывать. Думал, думал и придумал.
Следите за руками: берем таск-менеджер, создаём в нем себе электрическую команду работничков: по одному аккаунту на соответвующую агентскую роль. Назначаем задачи через таск-менеджер с канбан-бордой, агент подбирает задачу, делает её и пишет результат обратно в таск, параллельно двигая таску в следующее по канбан-состояние. В общем-то ничего нового, всё как у людей. В результате, вместо какого-то "велосипедного" оркестратора у нас обычная Jira/Linear/Monday/Todoist или что там сейчас модно использовать. Высокоуровневые задачи создаём сами, описываем детально задачу внутри таски, двигаем её из бэклога в Selected For Development, и дальше в работу включается нужный агент, на которого мы эту таску назначили. Например, агент может быть в роли продакта: написать документацию, запушить её в базу документов проекта (в том же Confluence или Notion или что там сейчас модно использовать) и добавляет линк в таску, двигая его в Ready for Review. Если происходит ошибка или не хватает вводных, то в комменте к таске появляется соответствующий запрос (прямо всё как у людей, да?), и он назначает таску на своего белого господина. А белый господин дополняет её, и обратно переводит на агента.
Как вы поняли, таск-менеджер становится центральным хранилищем контекста проекта, мониторингом прогресса в работе над проектом и инструментом коммуникации с агентами. Мы ставим задачи агентам не через чат, а через задачи в условной Jira.
Но я подумал ещё чуть дальше (в будущее): если бы в аккаунте пользователя можно было задавать роль (системный промпт) агенту, то можно было бы вообще дизайнить команды прямо через условную Jira. При назначении задачи на юзера, у юзера есть системный промпт, с которым можно стартануть кастомного агента (в Claude Code сабагенту можно назначить промпт динамически). И вот у вас появляется безразмерная команда архитекторов, девопсов, системных аналитиков, маркетологов, ведущих пайтон разработчиков и т.п. которых можно заводить ситуативно или сразу (если вы знаете, что делаете).
В ./ http://CLAUDE.md/ достаточно описать основные принципы работы для агентов, дать им скиллы для управления тасками в таск-менеджере, рассказать какой у вас процесс, и что в каком случае делать. Чтобы агенты стартовали при назначении тасков, можно использовать разные варианты, которые доступны для таск-менеджера: от веб-хуков до procmailrc, который слушает письмо и стартует нужного Claude Code агента с указанным промптом (ролью).
Я себе частично уже это настроил (как на картинке). На серваке установил Plane, сделал скилл агентам, они заводят в нём задачи, вытаскивают контекст, двигают статусы, пишут комменты. Связку "назначил задачу-агент запустился" пока не успел сделать, но это вопрос одного дня. Пока просто агенту говорю: — давай, бери задачу EXT-5 в работу, и он начинает шуршать, вытаскивая задание, сопуствующие материалы из wiki проекта, и фиксит мне баг. О, пока писал пост, уже зафиксил...
Чтобы всё работало, пришлось, конечно, повозиться с сетапом. Например, все секреты я загнал в 1Password с сервисным аккаунтом, написал скилл для 1Password и все агенты могут запрашивать нужные им токены, пароли и т.п. Крутится всё внутри tmux сессий, чтобы можно было с телефона через Termius или с компа через iTerm2 зайти, посмотреть, кто чем занимается.
Такой вот харнесс.