コーディング・ハーネス (CodingAgent)
CodingAgent は薄いハーネスであり、adk-agent において coding
機能の背後で提供され、dev tools、計画用の write_todos ツール、
そして最小限のコーディング用システムプロンプトを通常の LlmAgent に組み込みます。これは configuration
over LlmAgent であり、新しいエージェント型ではないため、デフォルトの adk-agent ビルドを
軽量に保ちます(この機能は adk-devtools を取り込みます)。
1つをビルドする
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
ビルダーオプション:
| メソッド | 効果 |
|---|---|
.model(Arc<dyn Llm>) | モデル(必須)。 |
.workspace(Workspace) | ツールが制限されるワークスペース(必須)。 |
.name("…") | エージェント名(デフォルトは "coding-agent")。 |
.instruction("…") | ベースのコーディングプロンプトに追加される追加ガイダンス。 |
.tool(Arc<dyn Tool>) | 追加のツール(MCP、関数ツール、…)を登録します。 |
.without_todos() | write_todos のプランニングツールを無効にします。 |
何が組み込まれているか
-
開発ツールセット — workspace にスコープされた read/write/edit/glob/grep/bash。
-
write_todos— モデルが短いタスクリストを記録・更新するために使う計画ツール。ハーネスから読み戻します:for todo in coding.todos() { println!("[{}] {}", todo.status, todo.content); // pending | in_progress | completed } -
最小限のプロンプト — 1k トークン未満のベース指示(「変更する前に調査する」、「編集する前に読む」、「テストを実行して検証する」、「計画を追跡する」)で、能力が大きなプロンプトではなくツールとスキルから来るよう、意図的に小さく保っています。
ループ
あなたは通常の agent と同じように、CodingAgent を Runner 経由で実行します。1 回のターンの中で、基盤となる LlmAgent はすでに plan → act → observe ループを実行しています。ツールを呼び出し、その結果を確認し、完了するまで続けます。典型的な 1 ターン:
write_todos(...) # plan
glob / grep / read_file # explore
edit_file / write_file # change
bash("…test…") # verify
write_todos(... completed) # update plan
→ final summary
複数ターン の作業では、同じ Runner とセッションを呼び出し間で再利用すると、agent はそれまでの作業を基に積み上げます(自分が書いたファイルを再読込して編集します)。coding_agent の例(multiturn モード)を参照してください。
メモリとスキル
内部が LlmAgent であるため、ADK 内の他のすべては組み合わせ可能です:
MemoryService(たとえば bi-temporal knowledge graph)をRunnerに接続して、セッションをまたぐプロジェクトメモリを実現します。- lazy skills を
adk-skill経由で追加し、プロンプトを肥大化させずに能力を拡張します。 - フック/ガードレール(
adk-plugin、adk-guardrail)が tool 呼び出しを決定論的に制御します。
実行方法
ハーネスは Arc<dyn Agent> を生成します。adk-runner でそれを操作します(quick start を参照)か、これらすべてをまとめた CLI を使用します。
次へ: The CLI →