Открытый стандарт для координации AI-агентов: как Cotal решает проблему совместной работы агентов в проде

Я — Denis Shokhirev, архитектор агентных AI-систем из Фрайбурга, Германия. В DennisCraft AI Studio я внедряю агентные решения для B2B-клиентов из DACH: логистика, финтех, промышленная автоматизация. В проде работаю на стеке Claude, Supabase, n8n, Doppler, self-hosted Postgres. Недавно словил баг: два LLM-агента спорили за доступ к очереди задач — один из них завис, второй зациклился. В демо такого не поймать, но в проде это сразу тормозит бизнес-процесс.

Почему координация агентов — это не игрушка

Когда запускаешь не одного, а целую команду AI-агентов, проблемы начинаются не на этапе prompt engineering, а на уровне синхронизации действий и обмена состояниями. В демках часто все ок — агенты болтают через memory, но в реальных задачах это приводит к гонкам, рассинхронизации, потере идемпотентности. На практике:

  • LLM-агенты параллельно берут один и тот же task из Supabase, оба отправляют запросы — дублируют работу.
  • Логика очереди на n8n ломается при одновременных транзакциях.
  • Один агент теряет контекст, другой не обновляет статус — возникает deadlock.

Банальные mutex-замки тут не помогают: агенты — распределённые сущности, часто работают через API, могут быть написаны на разных языках, а LLM вообще не гарантирует стабильность output. Нужен стандарт обмена — как раз то, что предлагает Cotal.

Что такое Cotal и зачем он нужен в проде

Cotal — это открытый протокол описания взаимодействия AI-агентов, ориентированный на production-сценарии. Его задача — формализовать, как агенты обмениваются задачами, статусами, результатами, чтобы минимизировать баги на стыке коммуникаций. В отличие от ad-hoc JSON/REST контрактов, Cotal задаёт явную схему:

  • Описание типов задач и допустимых статусов
  • Явные триггеры переходов между состояниями
  • Событийная модель обмена (event-driven, а не polling)
  • Возможность аудита действий каждого агента

Это не библиотека, а спецификация. Пример схемы задачи на Cotal:


task:
  id: "invoice_456"
  type: "payment_processing"
  status: "awaiting_review"
  assigned_agent: "claude-ops-3"
  allowed_transitions:
    - "awaiting_review" → "approved"
    - "awaiting_review" → "rejected"
events:
  - type: "status_changed"
    timestamp: "2026-09-15T09:23:00Z"
    agent: "claude-ops-3"
    from: "awaiting_review"
    to: "approved"

В результате каждый агент чётко знает, что он может делать, а что нет, и что произойдёт при смене статуса.

Реализация Cotal в стеке: Claude, n8n, Supabase, Postgres

В моих прод-сценариях Cotal-совместимую логику удобно реализовать через Supabase (как storage+auth), n8n (workflow), Postgres (источник правды) и Claude (LLM-агенты). Основная задача — обеспечить атомарность транзакций и аудит событий. Схема взаимодействия:

КомпонентРольКритичный баг без Cotal
ClaudeLLM-агент, выполняет задачиДублирует исполнение одной задачи
SupabaseХранилище задач и статусовПотеря идемпотентности, гонки
n8nОркестрация событий и триггеровНепредсказуемый порядок вызова
PostgresЖурнал событий, источник правдыНеотслеженные переходы статусов

Пример атомарного обновления статуса задачи в Postgres:


import psycopg2
from psycopg2.extras import RealDictCursor

def update_task_status(task_id, new_status, agent_id):
    with psycopg2.connect(...) as conn:
        with conn.cursor(cursor_factory=RealDictCursor) as cur:
            cur.execute("SELECT status FROM tasks WHERE id=%s FOR UPDATE", (task_id,))
            row = cur.fetchone()
            if row["status"] != "awaiting_review":
                raise Exception("Invalid status transition")
            cur.execute("UPDATE tasks SET status=%s WHERE id=%s", (new_status, task_id))
            cur.execute(
                "INSERT INTO events (task_id, agent, action) VALUES (%s, %s, %s)",
                (task_id, agent_id, f"{row['status']}→{new_status}")
            )
        conn.commit()

Этот паттерн позволяет избежать классических гонок: если статус не тот — ошибка, переход невозможен.

Плюсы Cotal для production AI

  • Снимает хаос в коммуникациях: агенты не спорят за задачи, а действуют по схеме
  • Легко заводить аудит: кто что делал, когда и почему
  • Миграция между агентами (Claude ↔ OpenAI) не требует переписывать всё взаимодействие
  • Упрощает compliance: аудит trail и формализованные статусы — must-have для финтеха/логистики

Согласно отчету Anthropic (2024, Anthropic docs), риски LLM-агентов в production связаны именно с неявными контрактами и неатомарными действиями. Cotal решает эти проблемы на уровне схемы.

Типовые проблемы внедрения и решения

  • LLM-agent "забыл" обновить статус — добавляю post-processing check на n8n, который ловит несоответствия
  • Агент генерирует невалидный output — валидирую schema через JSON Schema до записи в Supabase
  • Ограничение по скорости — перехожу с polling на event-driven пайплайн (n8n поддерживает)

В проде эти паттерны сокращают ручной разбор инцидентов минимум в 2 раза — по личной статистике за последние 5 запусков.

FAQ

Можно ли внедрять Cotal без миграции всех агентов?

Да, стандарт совместим с поэтапной интеграцией. Можно обернуть существующих агентов через adapter.

Зачем нужен event-driven, если есть polling?

Polling повышает нагрузку и увеличивает вероятность гонок. Event-driven модель решает эти проблемы и ускоряет реакцию.

Работает ли Cotal только с Claude/OpenAI?

Нет, стандарт описывает взаимодействие на уровне схемы, не завязан на конкретный LLM.

Что делать с legacy пайплайнами?

Можно внедрять Cotal только на критичных участках, где нужны строгие статусы и аудит.

Нужно ли менять базу данных?

Нет, Cotal работает поверх существующих хранилищ, главное — поддерживать atomicity и event log.

В каких местах вашей production-инфраструктуры агенты чаще всего конфликтуют по статусам — на уровне storage, оркестрации или LLM-output? Готов разобрать паттерн и показать, как это решается на практике. Я бесплатно провожу 30-мин аудит стека для DACH-команд, которые строят AI в регулируемых индустриях. Пишите в LinkedIn или в @ger_dennis_ai.

Read more

Computer-Use-Agenten scheitern an Pixeln: wie Sie auf stabile UI-Referenzen über Accessibility Trees umstellen und fehleranfällige Desktop-Automatisierung nicht mehr ständig reparieren

von Denis Shokhirev, Enterprise AI Architect aus Freiburg im Breisgau Ich bin Denis Shokhirev, Agentic AI Systems Architect in Freiburg im Breisgau, Germany, und bei DennisCraft AI Studio setze ich produktive KI-Systeme für DACH-B2B-Kunden auf Basis von Claude, Supabase, n8n, Doppler und selbst betriebenem Postgres um. Die teuersten Fehler in

By Denis Shokhirev

Компьютерные агенты ломаются на пикселях: как перейти на stable UI refs через accessibility tree и перестать чинить flaky desktop automation

Я Denis Shokhirev, Agentic AI Systems Architect из Freiburg im Breisgau, Germany, и в DennisCraft AI Studio я собираю production AI-системы для DACH B2B на Claude, Supabase, n8n, Doppler и self-hosted Postgres. Самая дорогая поломка в desktop automation, которую я вижу у клиентов, почти никогда не связана с моделью: агент

By Denis Shokhirev