コーディングエージェントの例
examples/ にある3つの実行可能なサンプルクレートは、それぞれが実際のAgent(モックなし)として機能し、生成されたコードを実行することで結果を独立して検証します。すべてデフォルトでGemini 3モデルを使用します。まずキーを設定してください:
export GOOGLE_API_KEY=… # or GEMINI_API_KEY
# or: CODING_PROVIDER=openai OPENAI_API_KEY=…
coding_agent
4つのモードで動作するハーネス:
# Multi-language demo (Rust, Python, JavaScript) in a temp workspace:
cargo run --manifest-path examples/coding_agent/Cargo.toml
# Build a medium program over a persistent multi-turn session:
cargo run --manifest-path examples/coding_agent/Cargo.toml -- multiturn
# Scenario tour — increasing complexity, each independently verified:
cargo run --manifest-path examples/coding_agent/Cargo.toml -- tour
# A single task in your own directory:
cargo run --manifest-path examples/coding_agent/Cargo.toml -- ./some/dir "make tests pass"
- demo — 言語をまたがるワンショットタスク(
rustc/python3/nodeを記述して実行します)。 - tour — 複雑さが増していく5つのシナリオ(
hello→multifile→fixtest→debug→refactor)。それぞれPASS/FAILの要約で自己検証されます。 - multiturn — 1つのAgent/Runner/Sessionが、5ターンにわたってPython
todoCLI を成長させ(追加/リスト → 完了 → 削除 → 堅牢なエラー → テスト)、自身の以前の作業に基づいて構築します。テストスイートを実行して検証されます。
読むべき点: CodingAgent ハーネス、plan→act→observe ループ、マルチターンコンテキストの保持。
coding_graph
超レビュー ワークフロー を adk-graph StateGraph として:
実装 → 並行する正確性/エッジケース/スタイルレビューア → 統合(遅延ファンイン) → 改訂ループ → 最終化。
cargo run --manifest-path examples/coding_graph/Cargo.toml
読むべき点: 1つのスーパーステップにおける並行Agent、add_deferred_node_fn ファンイン、
条件付き循環ルーティング。生成された関数をインポートし、仕様とエッジケースをアサートすることで検証します。
coding_goal
耐久性のあるチェックポイントを備えた自律的な /goal モード: バグのあるモジュールと失敗するテストをシードし、plan→act→verify を python3 test_stats.py がパスするまでループし、永続化されたチェックポイントを出力し、その後再開をデモンストレーションします(完了した目標はno-opです)。
cargo run --manifest-path examples/coding_goal/Cargo.toml
読むべき点: ベリファイアによってゲートされた目標ループ、アトミックな目標状態チェックポイント、再起動をまたいだ再開。
streaming_bash
単一の EventStream から LlmAgent のツールアクティビティをライブでレンダリングするWeb UI(Axum + WebSocket): bash の標準出力/標準エラーのストリーミングと、ワンショットの
read_file / grep / glob の結果をそれぞれ独自のカードとして表示します。
cargo run --manifest-path examples/streaming_bash/Cargo.toml # web UI
cargo run --manifest-path examples/streaming_bash/Cargo.toml -- cli
読むべき点: ToolContext::emit_progress ストリーミング、およびUIが任意のツールの出力を汎用的にレンダリングできるようにするファーストクラスの
Event::tool_calls() / Event::tool_results() / event.tool_progress_stream()
アクセサ。 Streaming Tool Progress を参照してください。
推奨されるパス
coding_agent(tour) — ハーネスが複雑さの増すタスクを解決する様子をご覧ください。coding_agent(multiturn) — セッションを通じてプログラムを構築する様子をご覧ください。coding_goal— 自律的で、ベリファイアによってゲートされた、耐久性のある目標モード。coding_graph— 並行超レビューオーケストレーション。
CLI (code / goal / ultracode) は、これらのパターンをファーストクラスのコマンドとしてパッケージ化しています。
← Coding Agent の概要に戻る