メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.devin.ai/llms.txt

Use this file to discover all available pages before exploring further.

このページでは、Devin Desktop で動作するカスタム ACP エージェントを構築するために必要な実装について説明します。 プロトコルの完全な仕様については、agentclientprotocol.comを参照してください。公式クライアントライブラリは、RustTypeScriptPythonKotlinJavaで利用できます。

基本

ACP エージェントは、Devin Desktop によって必要に応じて起動されるローカルのサブプロセスとして実行されます。通信はすべて、stdio 経由の JSON-RPC で行われます。

実装が必要なメソッド

最低限、エージェントは Devin Desktop の以下のメソッドに対応する必要があります。
  • initialize — プロトコルバージョンをネゴシエートし、エージェントの対応機能を通知して、エージェント情報 (名前、バージョン) を返します。
  • session/new — 作業ディレクトリ用の新しいセッションを作成し、セッション ID を返します。Devin Desktop は cwd と設定済みの MCPサーバーを渡します。
  • session/prompt — ユーザーメッセージを受け取り、プロンプトターンを実行し、完了時に stopReason を返します。
  • session/cancel — ユーザーがキャンセルしたときに、そのセッションで進行中の処理を中止します。

プロンプトターンのライフサイクル

session/prompt ターンの間、エージェントは JSON-RPC 通知として更新を Devin Desktop にストリーミング送信します。
  • アシスタントのテキストをストリーミングする agent_message_chunk を含む session/update
  • ツール呼び出しとそのステータスを Devin Desktop UI に表示するための tool_call および tool_call_update を含む session/update
  • 機密性の高いツール呼び出しを実行する前にユーザーに確認を求める session/request_permission
  • エージェントが agent plan を維持している場合は、plan を含む session/update
ターンは、エージェントが stopReason (例: end_turncancelledmax_tokens) を含む session/prompt レスポンスを返すと終了します。

テスト

Devin Desktop を使ってエージェントをテストするには:
  1. ローカルレジストリ設定にエージェントのエントリを追加し、cmd にローカルのエージェントバイナリ (またはラッパースクリプト) のパスを指定します。
  2. 必要に応じてエージェントに変更を加え、再ビルドします。
  3. Command Palette から Reload ACP Connections を実行して最新バージョンを反映します。反復のたびに Devin Desktop を再起動する必要はありません。

制限事項

Devin Desktop は現在、ACP 仕様のすべてに対応しているわけではありません。Devin Desktop を対象とするエージェントを構築する際に把握しておくべき主な違いは、次のとおりです。
  • セッションモードはサポートされていません。 Session modes は Devin Desktop UI では利用できません。エージェントでユーザーがモード (例: plan / build / review) を選択できるようにする必要がある場合は、代わりに "mode" カテゴリの session config option として公開してください。
  • ターミナル機能は公開されていません。 Devin Desktop は terminal capabilities を通知しないため、エージェントは Devin Desktop UI でターミナルを作成できません。エージェントは独自のサブプロセスでコマンドを実行し、tool_call の更新を通じて出力をストリーミングして返す必要があります。