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

# Criando um agente ACP personalizado

> Crie um agente personalizado que é executado no Devin Desktop por meio do Agent Client Protocol.

Esta página aborda o que você precisa implementar para criar um agente [ACP](/pt-BR/desktop/acp) personalizado que funcione com o Devin Desktop.

Para consultar a especificação completa do protocolo, acesse [agentclientprotocol.com](https://agentclientprotocol.com/). Bibliotecas de cliente oficiais estão disponíveis em [Rust](https://agentclientprotocol.com/libraries/rust), [TypeScript](https://agentclientprotocol.com/libraries/typescript), [Python](https://agentclientprotocol.com/libraries/python), [Kotlin](https://agentclientprotocol.com/libraries/kotlin) e [Java](https://agentclientprotocol.com/libraries/java).

<div id="basics">
  ## Noções básicas
</div>

Os agentes ACP são executados como subprocessos locais iniciados pelo Devin Desktop sob demanda. Toda a comunicação ocorre por JSON-RPC via `stdio`.

<div id="methods-you-must-implement">
  ### Métodos que você deve implementar
</div>

No mínimo, seu agente precisa oferecer suporte a estes métodos do Devin Desktop:

* [`initialize`](https://agentclientprotocol.com/protocol/initialization) — Negocie a versão do protocolo, informe as capacidades do seu agente e retorne as informações do agente (nome, versão).
* [`session/new`](https://agentclientprotocol.com/protocol/session-setup) — Crie uma nova sessão para um diretório de trabalho e retorne um ID da sessão. O Devin Desktop passa o cwd e todos os servidores MCP configurados.
* [`session/prompt`](https://agentclientprotocol.com/protocol/prompt-turn) — Receba uma mensagem do usuário, execute o turno de prompt e retorne um `stopReason` ao finalizar.
* [`session/cancel`](https://agentclientprotocol.com/protocol/prompt-turn) — Interrompa qualquer trabalho em andamento de uma sessão quando o usuário cancelar.

<div id="prompt-turn-lifecycle">
  ### Ciclo de vida do turno de prompt
</div>

Durante um turno `session/prompt`, seu agente envia atualizações ao Devin Desktop como notificações JSON-RPC:

* `session/update` com `agent_message_chunk` para transmitir em streaming o texto do assistente.
* `session/update` com `tool_call` e `tool_call_update` para exibir chamadas de ferramenta e seu status na Devin Desktop UI.
* `session/request_permission` para pedir permissão ao usuário antes de executar uma chamada de ferramenta sensível.
* `session/update` com `plan` se seu agente mantiver um [plano do agente](https://agentclientprotocol.com/protocol/agent-plan).

O turno termina quando seu agente retorna uma resposta `session/prompt` com um `stopReason` (por exemplo, `end_turn`, `cancelled`, `max_tokens`).

<div id="testing">
  ## Testes
</div>

Para testar seu agente com o Devin Desktop:

1. Adicione uma entrada para seu agente na sua [configuração do registro local](/pt-BR/desktop/acp#local-registry-config), apontando `cmd` para o caminho do binário do seu agente local (ou de um script wrapper).
2. Faça alterações no seu agente e refaça a build quando necessário.
3. Execute `Reload ACP Connections` na Paleta de Comandos para reconhecer a versão mais recente — não é preciso reiniciar o Devin Desktop entre as iterações.

<div id="limitations">
  ## Limitações
</div>

No momento, o Devin Desktop não oferece suporte a todas as partes da especificação ACP. A seguir estão as principais diferenças que você deve considerar ao desenvolver um agente para o Devin Desktop:

* **Modos de sessão não têm suporte.** Os [modos de sessão](https://agentclientprotocol.com/protocol/session-modes) não são exibidos na UI do Devin Desktop. Se o seu agente precisar permitir que os usuários escolham entre modos (por exemplo, plan / build / review), exponha-os como uma [opção de configuração de sessão](https://agentclientprotocol.com/protocol/session-config-options) com a categoria `"mode"`.
* **Capacidades de terminal não são expostas.** O Devin Desktop não anuncia [capacidades de terminal](https://agentclientprotocol.com/protocol/terminals), portanto os agentes não podem criar terminais na UI do Devin Desktop. Os agentes devem executar comandos em um subprocesso próprio e transmitir a saída de volta por meio de atualizações `tool_call`.
