Agent de programmation

Créez des agents qui travaillent sur une base de code : lisent et modifient des fichiers, exécutent des commandes et des tests dans un bac à sable, planifient un travail en plusieurs étapes, progressent de manière autonome vers un objectif et orchestrent des réviseurs en parallèle — le tout natif de ADK-Rust, avec n’importe quel fournisseur de modèles.

Cet ensemble repose sur quelques composants ciblés plutôt que sur un framework monolithique :

ComposantCe qu’il vous fournitPage
adk-devtoolsLes outils de la boucle interne — read_file, write_file, edit_file, glob, grep, bash — limités à un répertoire d’espace de travailOutils de développement
CodingAgent (dans adk-agent, fonctionnalité coding)Un harnais appelable en une seule fois qui relie ces outils + un outil de write_todos + une invite minimale à un LlmAgentHarnais
CLI (adk-rust code / goal / ultracode)Commandes natives : tâches ponctuelles, mode objectif autonome et ultra-révision parallèleCLI
Flux de travail en graphe (adk-graph)Distribuer le travail à des agents spécialistes en parallèle et synthétiser — le modèle « ultra »Flux de travail
ExemplesTrois crates d’exemple exécutablesExemples

Nouveau sur ADK-Rust ? Lisez d’abord l’Introduction et le Démarrage rapide. Cette section s’appuie sur les agents, les outils, les sessions et, facultativement, la mémoire et les graphes.

Ce que vous pouvez créer

  • Une tâche de programmation ponctuelle — « faire réussir le test en échec », « ajouter une route /health ». L’agent explore, effectue les modifications, exécute les tests et rend compte des résultats.
  • Mode objectif autonome — donnez un objectif ainsi qu’une condition de réussite vérifiable (une commande qui doit se terminer avec le code 0) ; l’agent répète la boucle planifier → agir → vérifier en s’auto-corrigeant jusqu’à la réussite ou l’épuisement du budget. Durable et reprenable. (Style /goal Codex/Hermes.)
  • Flux de travail d’ultra-révision — implémentez, puis répartissez le travail entre des réviseurs parallèles de la correction, des cas limites et du style, synthétisez leurs verdicts et révisez jusqu’à leur approbation. (Style Claude Code ultracode/ultrareview.)

Installation

# The harness (pulls in the dev tools) + a model provider
adk-agent = { version = "2.1.0", features = ["coding"] }
adk-devtools = "2.1.0"
adk-model = { version = "2.1.0", features = ["gemini"] }
adk-runner = "2.1.0"
adk-session = "2.1.0"

Les outils de développement sont conçus d’abord pour fonctionner en bac à sable et n’ont pas de dépendances lourdes ; leur empreinte reste donc réduite. adk-graph n’est nécessaire que pour les flux de travail parallèles.

Démarrage rapide en 60 secondes

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(()) }

Vous préférez le terminal ? adk-rust code "make the failing test pass" fait la même chose — consultez le CLI.

Pour aller plus loin

  1. Outils de développement — l’ensemble d’outils et le Workspace en bac à sable.
  2. HarnessCodingAgent, la boucle de planification et les modes d’autorisation.
  3. CLIcode, goal (durable/reprenable), ultracode.
  4. Flux de travail — l’ultra-révision parallèle sur adk-graph.
  5. Exemples — trois crates d’exemple exécutables.

Consultez également la justification complète de la conception dans docs/design/coding-agent.md.