ACPスレッドバウンドエージェント

概要

OpenClawがスレッド対応チャンネル(まずDiscord)でACPコーディングエージェントをサポートする方法を定義する。本番レベルのライフサイクルとリカバリを含む。

関連ドキュメント:

ターゲットのユーザー体験:

  • ユーザーがACPセッションをスレッドにspawnまたはfocusする
  • そのスレッド内のユーザーメッセージがバインドされたACPセッションにルーティングされる
  • エージェント出力が同じスレッドペルソナにストリーミングされる
  • セッションは永続または明示的なクリーンアップコントロール付きワンショット

決定事項のまとめ

長期的な推奨はハイブリッドアーキテクチャ:

  • OpenClawコアがACP制御プレーンの責務を所有
    • セッションのアイデンティティとメタデータ
    • スレッドバインディングとルーティング判断
    • 配信の不変条件と重複抑制
    • ライフサイクルのクリーンアップとリカバリセマンティクス
  • ACPランタイムバックエンドはプラガブル
    • 最初のバックエンドはacpxベースのプラグインサービス
    • ランタイムがACPトランスポート、キューイング、キャンセル、再接続を担当

OpenClawはコア内でACPトランスポートの内部実装を再実装すべきではない。 OpenClawはルーティングのためにプラグインのみのインターセプションパスに依存すべきではない。

北極星アーキテクチャ(理想型)

ACPをOpenClawのファーストクラスの制御プレーンとして扱い、プラガブルなランタイムアダプターを持つ。

譲れない不変条件:

  • すべてのACPスレッドバインディングは有効なACPセッションレコードを参照
  • すべてのACPセッションは明示的なライフサイクル状態を持つ(creatingidlerunningcancellingclosederror
  • すべてのACPランは明示的な実行状態を持つ(queuedrunningcompletedfailedcancelled
  • spawn、bind、初期エンキューはアトミック
  • コマンドリトライは冪等(重複する実行やDiscord出力なし)
  • バウンドスレッドのチャンネル出力はACPランイベントの投影であり、アドホックな副作用ではない

長期的な所有権モデル:

  • AcpSessionManagerがACPの唯一のライターかつオーケストレーター
  • マネージャーは最初にgatewayプロセス内に存在し、同じインターフェースの背後で専用サイドカーに移動可能
  • ACPセッションキーごとに、マネージャーが1つのインメモリアクターを所有(コマンド実行のシリアライズ)
  • アダプター(acpx、将来のバックエンド)はトランスポート/ランタイム実装のみ

長期的な永続化モデル:

  • ACP制御プレーン状態を専用SQLiteストア(WALモード)に移行(OpenClawの状態ディレクトリ配下)
  • 移行中はSessionEntry.acpを互換性投影として維持するが、ソースオブトゥルースではない
  • ACPイベントを追記のみで保存し、リプレイ、クラッシュリカバリ、決定論的配信をサポート

このドキュメントの残りの部分には、配信戦略、ルーティング、状態マシン、アクターモデル、冪等性、リカバリ、ライフサイクル、設定、実装仕様、テスト計画、リスクと緩和策、受入チェックリスト、およびターゲット付きリファクタリングの付録が含まれる。詳細は英語版の完全なドキュメントを参照。