Agente de programação

Crie agentes que trabalhem em uma base de código: leiam e editem arquivos, executem comandos e testes em um ambiente isolado, planejem trabalhos com várias etapas, avancem iterativamente em direção a um objetivo de forma autônoma e coordenem revisores em paralelo — tudo nativo do ADK-Rust, em qualquer provedor de modelos.

Isso é composto por algumas peças focadas, em vez de uma estrutura monolítica:

ComponenteO que ele fornecePágina
adk-devtoolsAs ferramentas do ciclo interno — read_file, write_file, edit_file, glob, grep, bash — delimitadas a um diretório de espaço de trabalhoFerramentas de desenvolvimento
CodingAgent (em adk-agent, recurso coding)Um mecanismo de chamada única que conecta essas ferramentas + uma ferramenta de write_todos + um prompt mínimo a um LlmAgentMecanismo
CLI (adk-rust code / goal / ultracode)Comandos nativos: tarefas de execução única, modo de objetivo autônomo e ultra-revisão paralelaCLI
Fluxos de trabalho em grafo (adk-graph)Distribua para agentes especialistas em paralelo e sintetize — o padrão "ultra"Fluxos de trabalho
ExemplosTrês crates de exemplo executáveisExemplos

Novo no ADK-Rust? Leia primeiro a Introdução e o Início rápido. Esta seção se baseia em agentes, ferramentas, sessões e, opcionalmente, memória e grafos.

O que você pode criar

  • Uma tarefa de programação pontual — "faça o teste com falha passar", "adicione uma rota /health". O agente explora, edita, executa os testes e relata os resultados.
  • Modo de objetivo autônomo — forneça um objetivo + uma condição de sucesso verificável (um comando que deve terminar com código 0); o agente repete o ciclo planejar → agir → verificar, corrigindo-se até ser aprovado ou até o orçamento se esgotar. Durável e retomável. (Estilo Codex/Hermes /goal.)
  • Fluxos de trabalho de revisão ultra — implemente e, em seguida, distribua o trabalho entre revisores paralelos de correção/casos extremos/estilo, sintetize seus veredictos e revise até que aprovem. (Estilo Claude Code ultracode/ultrareview.)

Instalação

# 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"

As ferramentas de desenvolvimento priorizam o uso em sandbox e não têm dependências pesadas, portanto a presença permanece pequena; adk-graph só é necessário para os fluxos de trabalho paralelos.

Início rápido em 60 segundos

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

Prefere o terminal? adk-rust code "make the failing test pass" faz o mesmo — consulte o CLI.

Próximos passos

  1. Ferramentas de desenvolvimento — o conjunto de ferramentas e o Workspace em sandbox.
  2. HarnessCodingAgent, o ciclo de planejamento e os modos de permissão.
  3. CLIcode, goal (durável/retomável), ultracode.
  4. Fluxos de trabalho — revisão ultra paralela em adk-graph.
  5. Exemplos — três crates de exemplo executáveis.

Consulte também a justificativa completa do design em docs/design/coding-agent.md.

Agente de programação - Documentação ADK-Rust | ADK-Rust