> ## 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.

# カスタム ACP エージェントを構築する

> Agent Client Protocol を介して Devin Desktop 内で実行されるカスタムエージェントを構築します。

このページでは、Devin Desktop で動作するカスタム [ACP](/ja/desktop/acp) エージェントを構築するために必要な実装について説明します。

プロトコルの完全な仕様については、[agentclientprotocol.com](https://agentclientprotocol.com/)を参照してください。公式クライアントライブラリは、[Rust](https://agentclientprotocol.com/libraries/rust)、[TypeScript](https://agentclientprotocol.com/libraries/typescript)、[Python](https://agentclientprotocol.com/libraries/python)、[Kotlin](https://agentclientprotocol.com/libraries/kotlin)、[Java](https://agentclientprotocol.com/libraries/java)で利用できます。

<div id="basics">
  ## 基本
</div>

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

<div id="methods-you-must-implement">
  ### 実装が必要なメソッド
</div>

最低限、エージェントは Devin Desktop の以下のメソッドに対応する必要があります。

* [`initialize`](https://agentclientprotocol.com/protocol/initialization) — プロトコルバージョンをネゴシエートし、エージェントの対応機能を通知して、エージェント情報 (名前、バージョン) を返します。
* [`session/new`](https://agentclientprotocol.com/protocol/session-setup) — 作業ディレクトリ用の新しいセッションを作成し、セッション ID を返します。Devin Desktop は `cwd` と設定済みの MCPサーバーを渡します。
* [`session/prompt`](https://agentclientprotocol.com/protocol/prompt-turn) — ユーザーメッセージを受け取り、プロンプトターンを実行し、完了時に `stopReason` を返します。
* [`session/cancel`](https://agentclientprotocol.com/protocol/prompt-turn) — ユーザーがキャンセルしたときに、そのセッションで進行中の処理を中止します。

<div id="prompt-turn-lifecycle">
  ### プロンプトターンのライフサイクル
</div>

`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](https://agentclientprotocol.com/protocol/agent-plan) を維持している場合は、`plan` を含む `session/update`

ターンは、エージェントが `stopReason` (例: `end_turn`、`cancelled`、`max_tokens`) を含む `session/prompt` レスポンスを返すと終了します。

<div id="testing">
  ## テスト
</div>

Devin Desktop を使ってエージェントをテストするには:

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

<div id="limitations">
  ## 制限事項
</div>

Devin Desktop は現在、ACP 仕様のすべてに対応しているわけではありません。Devin Desktop を対象とするエージェントを構築する際に把握しておくべき主な違いは、次のとおりです。

* **セッションモードはサポートされていません。** [Session modes](https://agentclientprotocol.com/protocol/session-modes) は Devin Desktop UI では利用できません。エージェントでユーザーがモード (例: plan / build / review) を選択できるようにする必要がある場合は、代わりに `"mode"` カテゴリの [session config option](https://agentclientprotocol.com/protocol/session-config-options) として公開してください。
* **ターミナル機能は公開されていません。** Devin Desktop は [terminal capabilities](https://agentclientprotocol.com/protocol/terminals) を通知しないため、エージェントは Devin Desktop UI でターミナルを作成できません。エージェントは独自のサブプロセスでコマンドを実行し、`tool_call` の更新を通じて出力をストリーミングして返す必要があります。
