コーディング・ハーネス (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 と同じように、CodingAgentRunner 経由で実行します。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 skillsadk-skill 経由で追加し、プロンプトを肥大化させずに能力を拡張します。
  • フック/ガードレール(adk-pluginadk-guardrail)が tool 呼び出しを決定論的に制御します。

実行方法

ハーネスは Arc<dyn Agent> を生成します。adk-runner でそれを操作します(quick start を参照)か、これらすべてをまとめた CLI を使用します。

次へ: The CLI →