
2026/08/20 7:09
協同型人間エージェントプロトコル (CHAP)
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
CHAP は、人的意思決定および AI 意思決定における断片化されたストレージを置き換えることを目的とした統合プロトコルであり、構造化されたエンドツーエンド監査チェーンを作成することでその実現を目指しています。その主な目標は、人が AI のドラフトを編集する workflows を形式化することであり、コードの差分、推論、意図ステータスなどの特定の詳細を記録して全ての変更を追跡します。TypeScript および Python などの言語で互換性のあるワイヤーフォーマットを実装し、同一の JSON-RPC 2.0 バイトを出力させることで、CHAP は既存のツール(例:Cursor)が MCP サーバートランспортを介して人間のオーバーライドとボットの警告をシームレスに統合するか、あるいは A2A サーバートランспортを介してオーケストレーターに対してスキルを公開できるようにします。現在はパブリックドラフト段階(v0.2)であり、フレームワークはキーのローテーションやログの期限切れ後も維持される署名された非否認性のある承認を提供します。LangGraph や Claude Desktop などの主要な AI エコシステム向けのブリッジおよび Pydantic AI や Google ADK などのフレームワーク向けの Python アダプターを含んでいます。究極的には、CHAP はカジュアルな編集セッションを構造化された監督データへと変換し、組織(個人の開発者から GMP 規制下にある製造業者まで)が「偽陽性」などの理由でタグ付けされたオーバーライドを分析して、重要な歴史的文脈を失うことなくプロンプトエンジニアリング戦略の改善を可能にします。
本文
CHAP: 人間とエージェントが共同で実務をこなすためのプロトコル
CHAP (Collaborative Human-Agent Protocol) は、ボットによるドラフトに対して人間が編集を加えた際、そのデータを「封筒」と呼ばれる形式で保存します。これにより、6 ヶ月後のクエリや再生成、検証が可能になります。
なぜ CHAP が存在するのか
現在の意思決定プロセスには以下の課題があります。
- 情報の散在: 判断はアプリケーションコード、チャット履歴、チケットコメント、人間の記憶に散在しています。
- 復元性の欠如: 不具合が 6 週間後に起きた場合、経緯の再構築に45 分かかり、推測に頼る部分が半分以上を占めます。
- 情報の一元化不足: エージェントと人間の相互作用を統一的な形式で扱うことが困難です。
CHAP の解決策
- 意思決定を一元化した場所で処理します。
- エージェントのドラフトは「アーティファクト」として扱います。
- 人間の編集は、差分(diff)、根拠(rationale)、管理可能なタグを含む構造化されたオーバーライドとして定義されます。
- これらはすべてコンテンツハッシュによってチェーン化され、ログを個別に
するのではなく、チェーン全体をクエリで検索できます。grep
90 秒間の概要説明
Cursor を使用して個人開発者がプルリクエストを検証しているシナリオを 23 秒で実行します。以下のコードは、実際の開発環境のスタックに応じて選択して読み進めてください。
1. ワークスペースを起動する
埋め込み型コーディネータと SQLite 永続化ストレージ、そして 2 つの参加者(人間とエージェント)を作成します。
TypeScript:
import { Coordinator } from "@brightbeamai/chap-coordinator"; import { SqliteStore } from "@brightbeamai/chap-coordinator/storage/sqlite"; const coord = new Coordinator({ store: new SqliteStore("./chap.db") }); coord.api.workspace.create({ workspace: "wsp_pr_reviews", profiles: ["core/1.0", "review/1.0"] }); coord.api.participant.join({ workspace: "wsp_pr_reviews", from: "human:me@local", type: "human" }); coord.api.participant.join({ workspace: "wsp_pr_reviews", from: "agent:cursor#v1", type: "agent" });
Python:
from chap_coordinator import Coordinator from chap_coordinator.storage.sqlite import SqliteStore coord = Coordinator(store=SqliteStore("./chap.db")) def send(method, params): return coord.dispatch({ "jsonrpc": "2.0", "id": method, "method": method, "params": params, }) send("workspace.create", { "workspace": "wsp_pr_reviews", "profiles": ["core/1.0", "review/1.0"], }) send("participant.join", { "workspace": "wsp_pr_reviews", "from": "human:me@local", "type": "human", }) send("participant.join", { "workspace": "wsp_pr_reviews", "from": "agent:cursor#v1", "type": "agent", })
2. ボットがドラフトを作成し、人間がオーバーライドする
既存の Cursor インテグレーションを拡張して、封筒形式でのイベント発行を実現します。ボットのレビュー結果に対し、人間が異議を唱えてオーバーライド(修正)を行います。
TypeScript:
// 1. タスク作成 const { task_id } = coord.api.task.create({ workspace: "wsp_pr_reviews", from: "agent:cursor#v1", assignee: "agent:cursor#v1", kind: "code_review", input: { pr_id: "PR-482" }, }); // 2. タスク完了(出力を提出) coord.api.task.complete({ workspace: "wsp_pr_reviews", from: "agent:cursor#v1", task_id, output: cursorReview, }); // 3. レビュー依頼を送信 coord.api.review.request({ workspace: "wsp_pr_reviews", from: "agent:cursor#v1", task_id, artefact: cursorReview, to: "human:me@local", }); // 4. オーバーライド(人間による修正と根拠の付与) coord.api.decide.override({ workspace: "wsp_pr_reviews", from: "human:me@local", task_id, intent_preserved: true, // 意図を維持しつつ修正 diff: [{ op: "replace", path: "/comments/0/severity", value: "info" }], rationale: "誤検知。これはバグではなく、フレームワークの慣習です。", tags: ["false-positive", "framework-pattern-misread"], });
Python:
# 1. タスク作成 r = send("task.create", { "workspace": "wsp_pr_reviews", "from": "agent:cursor#v1", "assignee": "agent:cursor#v1", "kind": "code_review", "input": {"pr_id": "PR-482"}, }) task_id = r["result"]["task_id"] # 2. タスク完了 send("task.complete", { "workspace": "wsp_pr_reviews", "from": "agent:cursor#v1", "task_id": task_id, "output": cursor_review, }) # 3. レビュー依頼 send("review.request", { "workspace": "wsp_pr_reviews", "from": "agent:cursor#v1", "task_id": task_id, "artefact": cursor_review, "to": "human:me@local", }) # 4. オーバーライド(修正と根拠の付与) send("decide.override", { "workspace": "wsp_pr_reviews", "from": "human:me@local", "task_id": task_id, "intent_preserved": True, "diff": [{"op": "replace", "path": "/comments/0/severity", "value": "info"}], "rationale": "誤検知。フレームワークの慣習であり、バグではありません。", "tags": ["false-positive", "framework-pattern-misread"], })
インタフェースについての注記
- TypeScript: 型付きファサード(
)を提供し、完全な自動補完とコンパイル時チェックを可能にします。coord.api.* - Python: JSON-RPC の封筒形式(
)を保ちつつ、各呼び出しの要件に合わせてラップするスタイルを採用しています。テストではcoord.dispatch({...})
ヘルパー関数が慣用句として使用されています。send() - 共通性: どちらのクライアントから呼び出された場合でも、送信されるワイヤー上のバイト列は同一であり、監査チェーンはバイト単位で完全に一致します。
3. 2 ヶ月経過後、これまでの活動を分析する
プロトコルの実益を発揮します。参考リポジトリに提供されている分析スクリプトを使用して、監査チェーン(SQLite)を読み込み、オーバーライドをグループ化します。
TypeScript 版の参考コード:
$ npm --prefix reference/core-plus-review run analyze -- --db ./chap.db wsp_pr_reviews
Python 版の参考コード:
$ python3 reference/python/analyze_overrides.py --db ./chap.db wsp_pr_reviews
オーバーライド学習レポート(出力例)
オーバーライドは推測を不要にします。パターン名を参照することで改善方向が明確になります。
オーバーライド学習レポート ======================== 合計オーバーライド数:47 タグ別分類: false-positive ████████████████ 31 (66%) framework-pattern-misread ███████████ 22 (47%) cosmetic-pref ████ 8 (17%) トップファイルパス: src/handlers/ 18 オバーライド src/components/ 9 オバーライド
オーバーライド封筒の詳細
オーバーライド封筒は CHAP で最も重要なデータ構造です。特に以下の 2 つのフィールドに注意してください。
:intent_preserved- 改善型オーバーライド: 人間がエージェントの決定そのものを承認しつつ表現を修正し直すケース。
- 置換型オーバーライド: 人間が異なる判断を下したケース。
- 重要性: これらは異なる失敗モードであり、それぞれ異なる解決策が必要です。
- 改善型率が極めて高い場合:エージェントのリトリバル(検索)が不十分であることを示唆します。
- 置換型率が高い場合:ポリシー自体が曖昧であったか、あるいはエージェントのタスクコンテキストが間違っていた可能性があります。
:tags- チームで合意した統制された語彙です。シンプルに保ってください。
- 3 ヶ月後に「どのプロンプトが改善が必要か」や「どのファイルパスでボットが一貫して誤っているか」といった質問に対して、集約次元として機能します。
インストール方法
- TypeScript / Node.js:
npm install @brightbeamai/chap-coordinator - Python:
pip install chap-coordinator
どちらの方法でも、コア機能に加え、以下の内容が含まれます。
プロフィールreview/1.0- 実行可能な参考コード
参考実装の配置場所:
- TypeScript:
(コア) /reference/
(ライブラリ)packages/coordinator/ - Python:
(コア) /reference/python/
(ライブラリ)packages/coordinator-py/
詳細なハンズオンガイドは
examples/00-five-minute-start.md を参照してください。
今日リリースされているもの
CHAP 0.2 は公開ドラフト版です。以下の内容がリポジトリに含まれています。
- 仕様書:
- コア機能(7 つのメソッド、1 つの封筒形式、1 つのワイヤーフォーマット)を統合した単一ドキュメント。
- さらに 11 のオプションプロフィールを備えています。
または個別のSPECIFICATION.md
とcore/SPEC.md
フォルダから閲覧可能です。profiles/
- 2 つの参考実装:
- 合計 39 のメソッドハンドラを実装済み。
- TypeScript:
、HTTP サーバーはpackages/coordinator/
など。reference/core/ - Python:
、HTTP サーバーはpackages/coordinator-py/
。reference/python/ - 両実装とも同じ JSON-RPC 2.0 ワイヤーで動作し、準拠テストパスします。
- 準拠ハルネス:
- 23 のテストベクトル、署名・正規化・チェーン検証が含まれます。
- in-toto 認証書出力が可能。
- Minimum / Recommended の 2 つの準拠レベルを主張可能です。
- MCP サーバー透過:
- CHAP コーディネータは MCP サーバーとして提示でき、すべての CHAP メソッドをツールとして公開します。
- Claude Desktop、Cursor、Claude Code などで自然言語で CHAP ワークスペースを駆動できます。
- A2A サーバー透過:
- CHAP コーディネータは A2A エージェントとしても提示でき、各メソッドを離散的なスキルとして広告します。
- Azure AI Foundry, Amazon Bedrock AgentCore, Google ADK などのオーケストレーターから URL で登録・委任できます。
- 内側ラップヘルパー:
- 外部 MCP ツール呼び出しや A2A 交換を
ペアに変換するユーティリティです。task.create + task.complete - 入力・出力の正規化ハッシュが、生成されたアーティファクト上の引用として記録されます。
- 外部 MCP ツール呼び出しや A2A 交換を
- フレームワークブリッジ:
- 承認、編集、却下といった操作を、監査チェーン上の
として記録するためのアダプターです。decide.approve / decide.override / decide.reject - 対象: LangGraph, Pydantic AI, AG2, LlamaIndex, Google ADK など(オプション)。
- 承認、編集、却下といった操作を、監査チェーン上の
- 12 つの実践的シナリオ:
- 個人開発者から GMP 規制下での製造業に至るまでの実際のケースが紹介されています。
注意: 変更は Semantic Versioning に従います。プロフィールインターフェースはコアよりも早く変化します。厳密な安定性を必要とする本番デプロイメントは、1.0 のリリースを待つことをお勧めします。
このプロトコルを採用することで得られるもの
- 堅牢な監査チェーン: キーの回転、ログの有効期限切れ、または従業員の離職などに対しても存続します。すべての封筒はコンテンツハッシュによってリンクされています。1 回の
ですべてを取得可能。audit.read - 構造化された監督データ: 通常の業務に伴う副産物として得られます。追加のアノテーションパイプライン不要です。オーバーライド自体が即座に分析可能なデータセットとなります。
- 否認不可能な承認: セキュリティ署名付き/1.0 に参加して OIDC ベインドの署名を取得できます。audit-scitt/1.0 に参加して、サーバー依存なしの検証可能な外部トランスペアランスログを取得可能です。
- 既存システムとの互換性: MCP や A2A を代替するものではありません。これらと並存します。
- エージェント ↔ ツール: MCP
- エージェント ↔ エージェント: A2A
- エージェント + 人間 → 共有業務記録: CHAP
次に読むべきもの
: 12 の現実的なユースケースを紹介。最も有益な次の読み物です。IN_PRACTICE.md
: リポジトリの内容、CHAP と MCP/A2A の関係、再利用される規格、コントリビューション方法について。ABOUT.md
: 7 つのコアメソッド。プロトコルの全体表面は 1 つの画面に収まります。core/SPEC.md- arXiv への技術報告書: 完全版論文です。アーキテクチャ、設計根拠、プロフィールセマンティクス、脅威モデルなどが含まれます。
引用について
学術的または技術的な作業で CHAP を参照する場合は、以下の形式を引用してください。
@techreport{chap2026, author = {Shahid, Arsalan and Suttie, Gordon and Black, Philip}, title = {Collaborative Human-Agent Protocol (CHAP): An open protocol for auditable, structured multi-human and multi-agent collaboration}, institution = {Brightbeam AI}, year = {2026}, type = {Technical Report}, number = {arXiv:2606.09751}, url = {https://arxiv.org/abs/2606.09751} }
ライセンス:
- CC-BY 4.0(仕様書)
- Apache 2.0(コード)
- 著作権無償、あらゆる言語、あらゆるデプロイ環境での使用を許可。