ACP プロトコル
源码版本v2026.7.20
職務
ACP(Agent Client Protocol)はエディタ/IDE と agent が通信する標準プロトコル。acp_adapter/ が Hermes を ACP server として露出し、ACP 対応クライアント(Zed、VS Code 拡張など)が直接 Hermes を駆動できる:セッション管理、リソース読み書き(ファイル/画像)、編集承認、由来(provenance)の追跡、権限でツールを隔離。これにより Hermes はメッセージプラットフォームにとどまらず、開発ワークフローにも組み込める。
主要ファイル
server.py ヘッダ:1-92— "ACP agent server — exposes Hermes Agent via the Agent Client Protocol"リソース処理:96-150—_MAX_ACP_RESOURCE_BYTES、_resource_display_name、_is_text_resource/_is_image_resourceリソース テキスト/画像変換:201-296—_format_resource_text/_resource_link_to_parts/_image_data_url(リソース→OpenAI content parts)SessionState / SessionManager:159-175— ACP セッション状態と管理cwd 翻訳:29-62—_translate_acp_cwd/_normalize_cwd_for_compare(エディタ作業ディレクトリの整列)toolsets 展開:129-159—_expand_acp_enabled_toolsetsclass EditProposal:26-51— 編集提案(ファイル書き / patch)build_edit_proposal:178-220— ツール呼び出しから提案を構築(write_file / patch_replace / patch_v4a)承認リクエスタ:51-69—set_edit_approval_requester/ token 機構permissions.py— ツール権限隔離provenance:22-111—build_session_provenance/session_provenance_meta(操作由来追跡)auth.py/entry.py/events.py__main__.py— ACP server 起動入口(5 行)acp_registry/agent.json— agent メタデータマニフェスト(クライアント発見用)acp_registry/icon.svg— アイコン
データフロー
- ACP クライアント(エディタ)が
acp_registry/agent.jsonで Hermes ACP server を発見し起動(acp_adapter/__main__.py)。 - クライアントがセッションを開始 →
SessionManager:175がSessionStateを生成、cwd を整列(acp_adapter/session.py:29)、toolsets を展開(acp_adapter/session.py:129)。 - クライアントがメッセージ/リソースを送る →
リソース変換:201が ACP resource(ファイル/画像、acp_adapter/server.py:96のサイズ制限付き)を OpenAI content parts に変換し、run_conversation:588に渡す。 - agent がファイルを変更したいとき、ツール呼び出しは
build_edit_proposal:178でEditProposalになり、承認リクエスタ(acp_adapter/edit_approval.py:51) でユーザーに確認を求める。 - ツール実行は
acp_adapter/permissions.pyの権限管理に従う。各操作はacp_adapter/provenance.py:22で provenance を記録する。 - ストリーミング出力とイベント(
acp_adapter/events.py) をクライアントに返す。
まとめ
ACP は Hermes をエディタワークフローに組み込む:セッション管理、リソース読み書き、編集承認、権限隔離、由来追跡。コアは server.py(プロトコル適合)+ session.py(セッション)+ edit_approval.py(人による編集承認)。ゲートウェイ層と補完的——ゲートウェイはメッセージプラットフォーム、ACP は IDE を接続する。