El arnés de codificación (CodingAgent)
CodingAgent es un arnés ligero — incluido en adk-agent detrás de la característica coding
— que conecta las herramientas de desarrollo, una herramienta de planificación write_todos
y un prompt de sistema mínimo de codificación sobre un LlmAgent normal. Es configuración
sobre LlmAgent, no un nuevo tipo de agente, así que mantiene la compilación predeterminada de adk-agent
ligera (la característica incorpora adk-devtools).
Compila uno
use adk_agent::coding::CodingAgent;
use adk_devtools::Workspace;
let coding = CodingAgent::builder()
.model(model) // any adk-model provider (required)
.workspace(Workspace::new("./my-repo")) // sandboxed (required)
.instruction("Follow the project's existing style; prefer small diffs.") // optional, appended
.build()?;
let agent = coding.agent(); // Arc<dyn Agent> — hand to a Runner
Opciones del generador:
| Método | Efecto |
|---|---|
.model(Arc<dyn Llm>) | El modelo (obligatorio). |
.workspace(Workspace) | El espacio de trabajo al que se limitan las herramientas (obligatorio). |
.name("…") | Nombre del agente (predeterminado "coding-agent"). |
.instruction("…") | Orientación adicional añadida al prompt base de codificación. |
.tool(Arc<dyn Tool>) | Registrar una herramienta adicional (MCP, herramienta de función, …). |
.without_todos() | Deshabilitar la herramienta de planificación write_todos. |
Qué está conectado
-
El conjunto de herramientas de desarrollo — read/write/edit/glob/grep/bash, limitado al workspace.
-
write_todos— una herramienta de planificación que el modelo usa para registrar y actualizar una lista breve de tareas. Vuelve a leerla desde el harness:for todo in coding.todos() { println!("[{}] {}", todo.status, todo.content); // pending | in_progress | completed } -
Un prompt mínimo — instrucciones base de menos de 1k tokens ("explora antes de que cambies", "lee antes de editar", "verifica ejecutando tests", "haz seguimiento de un plan"), mantenidas pequeñas a propósito para que las capacidades provengan de las herramientas y las habilidades en lugar de un prompt enorme.
El ciclo
Ejecutas un CodingAgent como cualquier agente — a través de un Runner. Dentro de un turno, el
LlmAgent subyacente ya ejecuta un ciclo de plan → actúa → observa: llama a las
herramientas, ve sus resultados y continúa hasta que termina. Un turno típico:
write_todos(...) # plan
glob / grep / read_file # explore
edit_file / write_file # change
bash("…test…") # verify
write_todos(... completed) # update plan
→ final summary
Para trabajos de múltiples turnos, reutiliza el mismo Runner + sesión entre llamadas y el
agente se basa en su propio trabajo previo (vuelve a leer y editar los archivos que escribió).
Consulta el ejemplo de coding_agent (modo multiturn).
Memoria y habilidades
Como es un LlmAgent por debajo, todo lo demás en ADK se compone:
- Adjunta un
MemoryService(por ejemplo, el grafo de conocimiento bi-temporal) en elRunnerpara memoria de proyecto entre sesiones. - Añade habilidades lazy mediante
adk-skillpara ampliar capacidades sin inflar el prompt. - Los hooks/guardrails (
adk-plugin,adk-guardrail) controlan las llamadas a herramientas de forma determinista.
Cómo ejecutarlo
El harness produce un Arc<dyn Agent>; manéjalo con adk-runner (consulta el
inicio rápido) o usa el
CLI, que envuelve todo esto.
Siguiente: El CLI →