Coding-Agent
Erstelle Agenten, die an einer Codebasis arbeiten: Dateien lesen und bearbeiten, Befehle und Tests in einer Sandbox ausführen, mehrstufige Arbeit planen, sich autonom auf ein Ziel hin iterativ verbessern und parallele Reviewer orchestrieren — alles nativ für ADK-Rust, bei jedem Modellanbieter.
Dies wird aus einigen fokussierten Bausteinen zusammengesetzt und nicht aus einem monolithischen Framework:
| Stück | Was es dir bietet | Seite |
|---|---|---|
adk-devtools | Die Inner-Loop-Tools — read_file, write_file, edit_file, glob, grep, bash — auf ein Arbeitsverzeichnis beschränkt | Dev tools |
CodingAgent (in adk-agent, Feature coding) | Ein One-Call-Harness, das diese Tools + ein Planungs-write_todos-Tool + eine minimale Prompt-Vorlage auf ein LlmAgent verdrahtet | Harness |
CLI (adk-rust code / goal / ultracode) | Native Befehle: One-Shot-Aufgaben, autonomer Zielmodus und paralleles Ultra-Review | CLI |
Graph-Workflows (adk-graph) | Auf parallele Spezialisten-Agenten aufsplitten und zusammenführen — das "ultra"-Muster | Workflows |
| Beispiele | Drei ausführbare Beispiel-Crates | Examples |
Neu bei ADK-Rust? Lies zuerst die Einführung und den Schnellstart. Dieser Abschnitt baut auf Agents, Tools, Sessions und optional Memory und Graphs auf.
Was du bauen kannst
- Eine einmalige Coding-Aufgabe — „mach den fehlgeschlagenen Test grün“, „füge eine
/healthRoute hinzu“. Der Agent erkundet, bearbeitet Dateien, führt Tests aus und berichtet. - Autonomer Zielmodus — gib ein Ziel + eine verifizierbare Erfolgskondition (ein
Befehl, der mit 0 enden muss); der Agent läuft in einer Schleife planen → handeln → verifizieren und korrigiert sich selbst,
bis es klappt oder das Budget aufgebraucht ist. Dauerhaft und fortsetzbar. (Codex/Hermes
/goal-Stil.) - Ultra-Review-Workflows — implementieren, dann an parallele
Reviewer für Korrektheit/Randfälle/Stil verteilen, ihre Urteile zusammenführen und überarbeiten,
bis sie freigeben. (Claude Code
ultracode/ultrareview-Stil.)
Installation
# The harness (pulls in the dev tools) + a model provider
adk-agent = { version = "2.0.0", features = ["coding"] }
adk-devtools = "2.0.0"
adk-model = { version = "2.0.0", features = ["gemini"] }
adk-runner = "2.0.0"
adk-session = "2.0.0"
Die Dev-Tools setzen auf Sandbox-first und haben keine schweren Abhängigkeiten, daher bleibt der Footprint
klein; adk-graph wird nur für die parallelen Workflows benötigt.
60-Sekunden-Schnellstart
use adk_agent::coding::CodingAgent;
use adk_devtools::Workspace;
use adk_runner::Runner;
use adk_session::{CreateRequest, InMemorySessionService, SessionService};
use adk_core::{Content, SessionId, UserId};
use std::sync::Arc;
# async fn run(model: std::sync::Arc<dyn adk_core::Llm>) -> anyhow::Result<()> {
// One call builds a coding agent over a confined workspace.
let coding = CodingAgent::builder()
.model(model)
.workspace(Workspace::new("./my-repo"))
.build()?;
let sessions: Arc<dyn SessionService> = Arc::new(InMemorySessionService::new());
sessions.create(CreateRequest {
app_name: "demo".into(), user_id: "u".into(),
session_id: Some("s".into()), state: Default::default(),
}).await?;
let runner = Runner::builder()
.app_name("demo")
.agent(coding.agent()) // -> Arc<dyn Agent>
.session_service(sessions)
.build()?;
let mut events = runner
.run(UserId::new("u")?, SessionId::new("s")?,
Content::new("user").with_text("Add a function add(a,b) to add.py and run it."))
.await?;
// stream `events`: FunctionCall / FunctionResponse / Text …
# Ok(()) }
Lieber das Terminal? adk-rust code "make the failing test pass" macht dasselbe —
siehe die CLI.
Wohin als Nächstes
- Dev-Tools — das Toolset und die gesandboxten
Workspace. - Harness —
CodingAgent, die Plan-Schleife, Berechtigungsmodi. - CLI —
code,goal(dauerhaft/fortsetzbar),ultracode. - Workflows — paralleles Ultra-Review auf
adk-graph. - Beispiele — drei ausführbare Beispiel-Crates.
Siehe auch die vollständige Designbegründung in
docs/design/coding-agent.md.