Эксперименты
ACP Thread Bound Agents
Обзор
Этот план определяет, как OpenClaw должен поддерживать ACP-агенты в каналах с поддержкой потоков (в первую очередь Discord) с производственным жизненным циклом и восстановлением. Связанный документ:
Целевой пользовательский опыт:
- пользователь создает или фокуси рует ACP-сессию в потоке
- сообщения пользователя в этом потоке маршрутизируются в привязанную ACP-сессию
- вывод агента стримится обратно в ту же персону потока
- сессия может быть постоянной или одноразовой с явными элементами управления очисткой
Краткое изложение решений
Долгосрочная рекомендация — гибридная архитектура:
- Ядро OpenClaw отвечает за аспекты плоскости управления ACP
- идентификатор сессии и метаданные
- привязка потока и решения по маршрутизации
- инварианты доставки и подавление дубликатов
- семантика очистки жизненного цикла и восстановления
- Бэкенд среды выполнения ACP является подключаемым
- первый бэкенд — это сервис плагина на основе acpx
- среда выполнения отвечает за транспорт ACP, очереди, отмену, переподключение
OpenClaw не должен перереализовыв ать внутренности транспорта ACP в ядре. OpenClaw не должен полагаться на чисто плагиновый путь перехвата для маршрутизации.
Архитектура конечной цели (святой грааль)
Рассматривать ACP как первоклассную плоскость управления в OpenClaw с подключаемыми адаптерами среды выполнения. Непреложные инварианты:
- каждая привязка потока ACP ссылается на валидную запись сессии ACP
- каждая сессия ACP имеет явное состояние жизненного цикла (
creating,idle,running,cancelling,closed,error) - каждый запуск ACP имеет явное состояние выполнения (
queued,running,completed,failed,cancelled) - создание, привязка и первоначальная постановка в очередь являются атомарными
- повторные попытки команд идемпотентны (без дублирования запусков или дублирования вывода в Discord)
- вывод в привязанном потоке является проекцией событий запуска ACP, а не побочными эффектами ad-hoc
Долгосрочная модель владения:
AcpSessionManager— единственный писатель и оркестратор ACP- менеджер сначала находится в процессе шлюза; позже может быть перемещен в выделенный сайдкар за тем же интерфейсом
- на каждый ключ сессии ACP менеджер владеет одним актором в памяти (сериализованное выполнение команд)
- адаптеры (
acpx, будущие бэкенды) — это только реализации транспорта/среды выполнения
Долгосрочная модель персистентности:
- переместить состояние плоскости управления ACP в выделенное хранилище SQLite (режим WAL) в каталоге состояния OpenClaw
- сохранить
SessionEntry.acpкак проекцию для совместимости во время миграции, а не как источник истины - хранить события ACP только для добавления, чтобы поддерживать воспроизведение, восстановление после сбоев и детерминированную доставку