Skip to main content
Glama
evex-agent-messaging

evex-agent-messaging

by EvexU2

EVEX Agent Messaging Gateway

Parent Main、Child Main、Role Child の会話操作のための、プロバイダに依存しない MCP トランスポート。 エージェントはこの MCP を呼び出します。OpenHands の Conversation API を直接呼び出すことはありません。

ツール

  • create_child: 完全な構造化 Mission とクリーンな決定論的 Git チェックアウトを検証し、Child のアイデンティティとコールバック機能をバインドしてから、1 つの決定論的 Conversation を作成します。プロバイダはツールなしの受付ターンを 1 回実行し、ACP ブートストラップ後に正確なブランチ/HEAD を復元して再検証し、その後にのみツールを許可して Mission を配信します。チェックアウト権限がない、または不一致の場合は Conversation API 呼び出しは発生しません。ソースロールは Messaging のみを受け取ります。明示的な QA/修復 Mission のみが capabilities: ["runtime_environment"] を要求できます。

  • send_to_parent: 構造化された RESULT/NEEDS_INPUT を、ケイパビリティを所有する Main に配信します。

  • request_user_decision: A/B/C 形式の質問を所有する Main に配信します。

  • cancel_mission / resume_mission: 正確な Child タスクを停止または再開します。

  • publish_navigation_links: 情報提供用の Issue/Main/Child/PR リンクを所有する Main に公開します。

ケイパビリティは、コンパクトで不透明な evx1_ HMAC-SHA256 参照です。これらは、所有する Main、Child、タスクキー、ロール、許可されたアクション、有効期限をバインドします。サーバーは OpenHands の認証情報を保持しますが、それはツール入力、ツール出力、または子環境変数には決して現れません。永続状態はありません。呼び出し元が安定したメッセージキーを提供し、Main がセマンティックリプレイを重複排除します。

作成された各 Child は、非同期のネイティブ Stop フックを受け取ります。フックは、スコープ付き参照を使用してプライベートな /completion-hook エンドポイントを呼び出します。ゲートウェイは終端のネイティブ状態を待機し、制限された最終アシスタント応答を含む 1 つの安定した RECOVERY_WAKE を所有する Main に送信します。これは、モデルが send_to_parent を呼び出さずに終了した場合のプロバイダに依存しないフォールバックです。繰り返されるフックは同じセマンティックメッセージキーを再利用し、データベース、ポーラー、読み取りツール、または受信確認ストアを必要としません。

信頼された Event Gateway/ホストは、main_capability_token(...) を使用して短命の Main ケイパビリティを発行し、それを Main Mission に注入します。MCP は、ケイパビリティ発行ツールをエージェントに公開しません。

Parent は、/home/openhands/workspace/mirrors/<owner>--<repository>.git にある永続的なベアミラーのみを作成または取得します。create_child は /home/openhands/workspace/delivery/child-<child UUID> を導出し、存在しない場合は正確なブランチのワークツリーを作成し、Conversation API に触れる前にリポジトリ、オリジン、ブランチ、HEAD、およびクリーン状態を検証します。既存のワークツリーをリモートでクローン/フェッチしたり、削除したり、リセットしたり、別の目的に再利用したりすることはありません。

Related MCP server: handoff-mcp-server

実行

サーバーは MCP stdio フレーミング (Content-Length ヘッダー) を使用します:

export EVEX_MESSAGING_SECRET='long-random-secret'
export OPENHANDS_URL='http://openhands:8000'
export OPENHANDS_API_KEY='server-only-key'
export OPENHANDS_PUBLIC_URL='http://openhands.example/canvas'
PYTHONPATH=src python3 -m evex_agent_messaging

OpenHands の変数を読み取るのはアダプターだけです。テストまたはサービスを組み込むホストがフェイクプロバイダを注入できるため、スキルと Mission はランタイムに依存しません。

検証

python3 -m unittest discover -s tests -p 'test_*.py' -q

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers