Das Coding-Harness (CodingAgent)

CodingAgent ist ein dünnes Harness — ausgeliefert in adk-agent hinter dem coding-Feature — das die Entwicklertools, ein Planungs-write_todos-Tool und einen minimalen Coding-System-Prompt auf einen normalen LlmAgent verdrahtet. Es ist Konfiguration statt LlmAgent, kein neuer Agententyp, daher bleibt der Standard-adk-agent-Build schlank (das Feature zieht adk-devtools mit hinein).

Build eines

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

Erstellungsoptionen:

MethodeEffekt
.model(Arc<dyn Llm>)Das Modell (erforderlich).
.workspace(Workspace)Der Arbeitsbereich, auf den die Tools beschränkt sind (erforderlich).
.name("…")Agent-Name (Standard "coding-agent").
.instruction("…")Zusätzliche Anleitung, die an den Basis-Coding-Prompt angehängt wird.
.tool(Arc<dyn Tool>)Ein zusätzliches Tool registrieren (MCP, Funktions-Tool, …).
.without_todos()Das Planungs-Tool write_todos deaktivieren.

Was eingebunden ist

  • Das Dev-Toolset — read/write/edit/glob/grep/bash, auf den Workspace beschränkt.

  • write_todos — ein Planungswerkzeug, das das Modell verwendet, um eine kurze Aufgabenliste zu erfassen und zu aktualisieren. Lies es aus dem Harness zurück:

    for todo in coding.todos() {
        println!("[{}] {}", todo.status, todo.content);  // pending | in_progress | completed
    }
  • Ein minimales Prompt — Basisanweisungen mit unter 1k Token ("vor dem Ändern erkunden", "vor dem Bearbeiten lesen", "durch Ausführen von Tests verifizieren", "einen Plan verfolgen"), absichtlich klein gehalten, damit die Fähigkeiten aus Tools und Skills statt aus einem riesigen Prompt kommen.

Die Schleife

Du startest eine CodingAgent wie jeder Agent — über eine Runner. Innerhalb eines Turns führt die zugrunde liegende LlmAgent bereits eine plan → act → observe-Schleife aus: Sie ruft Tools auf, sieht deren Ergebnisse und macht weiter, bis sie fertig ist. Ein typischer Turn:

write_todos(...)            # plan
glob / grep / read_file     # explore
edit_file / write_file      # change
bash("…test…")              # verify
write_todos(... completed)  # update plan
→ final summary

Für mehrere Turns dieselbe Runner + Sitzung über Aufrufe hinweg wiederverwenden, und der Agent baut auf seiner eigenen bisherigen Arbeit auf (er liest und bearbeitet die Dateien erneut, die er geschrieben hat). Siehe das coding_agent-Beispiel (multiturn-Modus).

Gedächtnis & Fähigkeiten

Da es darunter ein LlmAgent ist, lässt sich alles andere in ADK zusammensetzen:

  • Hänge ein MemoryService an (z. B. den bi-temporalen Wissensgraphen) auf dem Runner für projektweites Gedächtnis über Sitzungen hinweg.
  • Füge lazy skills über adk-skill hinzu, um Fähigkeiten zu erweitern, ohne das Prompt aufzublähen.
  • Hooks/Guardrails (adk-plugin, adk-guardrail) begrenzen Tool-Aufrufe deterministisch.

Ausführen

Das Harness erzeugt ein Arc<dyn Agent>; steuere es mit adk-runner (siehe den Quickstart) oder nutze die CLI, die all dies umschließt.

Weiter: Das CLI →

Das Coding-Harness (`CodingAgent`) - ADK-Rust Dokumentation | ADK-Rust