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

# Creazione di un agente ACP personalizzato

> Crea un agente personalizzato che viene eseguito all'interno di Devin Desktop tramite l'Agent Client Protocol.

Questa pagina descrive cosa devi implementare per creare un agente [ACP](/it/desktop/acp) personalizzato che funzioni con Devin Desktop.

Per la specifica completa del protocollo, consulta [agentclientprotocol.com](https://agentclientprotocol.com/). Le librerie client ufficiali sono disponibili per [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">
  ## Nozioni di base
</div>

Gli agenti ACP vengono eseguiti come sottoprocessi locali che Devin Desktop avvia quando necessario. Tutte le comunicazioni avvengono tramite JSON-RPC su stdio.

<div id="methods-you-must-implement">
  ### Metodi da implementare
</div>

Come minimo, il tuo agente deve gestire questi metodi di Devin Desktop:

* [`initialize`](https://agentclientprotocol.com/protocol/initialization) — Negozia la versione del protocollo, dichiara le capacità del tuo agente e restituisce le informazioni sull'agente (nome, versione).
* [`session/new`](https://agentclientprotocol.com/protocol/session-setup) — Crea una nuova sessione per una directory di lavoro e restituisce un ID di sessione. Devin Desktop passa il cwd ed eventuali server MCP configurati.
* [`session/prompt`](https://agentclientprotocol.com/protocol/prompt-turn) — Riceve un messaggio dell'utente, gestisce il turno del prompt e restituisce un `stopReason` al termine.
* [`session/cancel`](https://agentclientprotocol.com/protocol/prompt-turn) — Interrompe qualsiasi attività in corso per una sessione quando l'utente annulla.

<div id="prompt-turn-lifecycle">
  ### Ciclo di vita di un turno di prompt
</div>

Durante un turno `session/prompt`, il tuo agente invia aggiornamenti in streaming a Devin Desktop come notifiche JSON-RPC:

* `session/update` con `agent_message_chunk` per trasmettere in streaming il testo dell'assistente.
* `session/update` con `tool_call` e `tool_call_update` per mostrare le invocazioni degli strumenti e il loro stato nell'interfaccia utente di Devin Desktop.
* `session/request_permission` per chiedere all'utente l'autorizzazione prima di eseguire un'invocazione di uno strumento sensibile.
* `session/update` con `plan` se il tuo agente gestisce un [piano dell'agente](https://agentclientprotocol.com/protocol/agent-plan).

Il turno termina quando il tuo agente restituisce una risposta `session/prompt` con uno `stopReason` (ad es. `end_turn`, `cancelled`, `max_tokens`).

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

Per testare il tuo agente con Devin Desktop:

1. Aggiungi una voce per il tuo agente nella [configurazione del registry locale](/it/desktop/acp#local-registry-config), impostando `cmd` con il percorso del binario del tuo agente locale (o di uno script wrapper).
2. Apporta modifiche al tuo agente e ricompilalo secondo necessità.
3. Esegui `Reload ACP Connections` dalla command palette per caricare la versione più recente — non serve riavviare Devin Desktop tra un'iterazione e l'altra.

<div id="limitations">
  ## Limitazioni
</div>

Devin Desktop al momento non supporta tutte le parti della specifica ACP. Di seguito sono riportate le principali differenze da tenere presenti quando si sviluppa un agente destinato a Devin Desktop:

* **Le modalità di sessione non sono supportate.** Le [modalità di sessione](https://agentclientprotocol.com/protocol/session-modes) non sono esposte nell'interfaccia utente di Devin Desktop. Se il tuo agente deve consentire agli utenti di scegliere tra più modalità (ad es. plan / build / review), esponile invece come [opzione di configurazione della sessione](https://agentclientprotocol.com/protocol/session-config-options) con la categoria `"mode"`.
* **Le funzionalità del terminale non sono esposte.** Devin Desktop non dichiara le [funzionalità del terminale](https://agentclientprotocol.com/protocol/terminals), quindi gli agenti non possono creare terminali nell'interfaccia utente di Devin Desktop. Gli agenti devono eseguire i comandi nel proprio sottoprocesso e inviare l'output tramite aggiornamenti `tool_call`.
