コーディングエージェント
コードベース上で作業するエージェントを構築できます。ファイルの読み取りと編集、サンドボックスでのコマンドやテストの実行、複数ステップの作業の計画、目標に向けた自律的な反復、並列レビュアーのオーケストレーションを、任意のモデルプロバイダー上で、すべてADK-Rustネイティブに行えます。
これはモノリシックなフレームワークではなく、いくつかの目的に特化した要素から構成されています。
| 構成要素 | 提供されるもの | ページ |
|---|---|---|
adk-devtools | ワークスペースディレクトリを対象範囲とする内側のループ用ツール — read_file、write_file、edit_file、glob、grep、bash | 開発ツール |
CodingAgent(adk-agent内、機能 coding) | これらのツールに加え、計画用write_todosツールと最小限のプロンプトをLlmAgentに接続する、1回の呼び出しで使えるハーネス | ハーネス |
CLI (adk-rust code / goal / ultracode) | ネイティブコマンド:単発タスク、自律目標モード、並列ウルトラレビュー | CLI |
グラフワークフロー (adk-graph) | 並列の専門エージェントに分岐して統合 — 「ウルトラ」パターン | ワークフロー |
| 例 | 実行可能な3つのサンプルクレート | 例 |
ADK-Rust は初めてですか? まず 概要 と クイックスタート をお読みください。このセクションでは、エージェント、ツール、 セッション、および(必要に応じて)メモリ と グラフ を基礎とします。
構築できるもの
- 一回限りのコーディングタスク — 「失敗しているテストを通す」「
/healthルートを追加する」など。エージェントが調査、編集、テストの実行を行い、結果を報告します。 - 自律的な目標モード — 目標と、検証可能な成功条件(終了コード 0 で終了する必要がある
コマンド)を与えると、エージェントは合格するか予算を使い切るまで、
計画 → 実行 → 検証 のループを自己修正しながら繰り返します。永続化され、中断後に再開できます。
(Codex/Hermes
/goalスタイル。) - 超レビューのワークフロー — 実装後、正確性、エッジケース、スタイルを確認するレビュー担当に
並列で処理を分散し、その判定を統合して、承認されるまで修正します。
(Claude Code
ultracode/ultrareviewスタイル。)
インストール
# 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"
開発ツールはサンドボックスを優先し、重い依存関係を持たないため、フットプリントは小さく保たれます。
並列の ワークフロー にのみ adk-graph が必要です。
60 秒で始める
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(()) }
ターミナルを使いたい場合は、adk-rust code "make the failing test pass" でも同じことができます —
CLI を参照してください。
次に読むもの
- 開発ツール — ツールセットとサンドボックス化された
Workspace。 - ハーネス —
CodingAgent、計画ループ、権限モード。 - CLI —
code、goal(永続化/再開可能)、ultracode。 - ワークフロー —
adk-graph上での並列超レビュー。 - 例 — 実行可能な 3 つのサンプルクレート。
docs/design/coding-agent.md の完全な設計根拠も参照してください。