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étodoEfecto
.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 el Runner para memoria de proyecto entre sesiones.
  • Añade habilidades lazy mediante adk-skill para 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 →

El arnés de codificación (`CodingAgent`) - Documentación ADK-Rust | ADK-Rust