ghuntley/how-to-build-a-coding-agent
A workshop that teaches you how to build your own coding agent. Similar to Roo code, Cline, Amp, Cursor, Windsurf or OpenCode.
ghuntley/how-to-build-a-coding-agent – ローカルのClaude駆動型コーディングアシスタントを構築するワークショップ
何であるか – 6つの段階的なバージョンを経て、AnthropicのClaudeモデルをローカルな「コーディングアシスタント」に変換する手順を示すチュートリアル(実行可能なGoソースファイル付き)。このリポジトリでは、ファイル読み取り、ディレクトリ一覧表示、シェル実行、ファイル編集、コード検索といった新しいツールを順次追加し、クラシックな アシスタント-ツール ループを実証します。
なぜ重要か – 大規模言語モデルを軽量化し、ファイルシステムアクセス、コマンド実行、grepスタイルの検索といった重い処理を明示的でサンドボックス化されたツールに任せることで、今後広がるパターンの具体的な実例を提供します。読者は全体のアーキテクチャ、Goベースのツールレジストリ、ClaudeのJSON構造化されたツール呼び出しを実関数に接続する方法を確認できます。
主な機能(READMEに記載)
| 機能 | 得られるもの |
|---|---|
| Claude統合 | Anthropic APIにユーザーのメッセージを送信し、応答を受信するシンプルなGoクライアント。 |
| 段階的アシスタント | 6つの実行可能なプログラム(chat.go、read.go、list_files.go、bash_tool.go、edit_tool.go、code_search_tool.go)を用意しており、それぞれ新しい機能を追加。 |
| ツールシステム | 名前、説明、入力スキーマ、Go関数という一貫した定義により、Claudeがツール使用プロトコルで呼び出せるようにする。 |
| ファイル操作 | 任意のファイルを安全に読み取り、ディレクトリの内容を一覧表示、ファイルの編集・作成を実行。 |
| シェルコマンド実行 | 制限付きのbashコマンドを実行し、stdout/stderrをClaudeに返す。 |
| コード検索 | ripgrep を使用してコードベース全体でパターン検索。 |
| 詳細ログ出力 | --verbose フラグで、完全なイベントループ、ツールディスパッチ、エラー詳細を表示。 |
| サンプルデータ | すぐにツールを試せる小規模なデモファイル(fizzbuzz.js、riddle.txt、AGENT.md)。 |
| 開発環境 | オプションの devenv 設定により、Go、Node、Python、Rust、.NET、および一般的な開発ツールをプロビジョニング可能。 |
アーキテクチャ概要(READMEより)
- ユーザー入力 → Anthropicクライアント経由でClaudeに送信。
- Claudeは直接応答するか、ツールリクエスト(例:
read_file)を返す。 - アシスタントはレジストリからリクエストされたツールを検索し、Go関数を実行。結果またはエラーをキャプチャ。
- 結果をClaudeにフィードバック。Claudeは最終的な回答を生成するか、さらにツールをリクエストする。
- このループは、Claudeが通常のテキスト応答を返すまで繰り返される。
README内の図は以下の2つの視点を示しています:
- アプリケーションの進化 – 各段階のプログラムが新しいツールを追加する様子。
- イベントループ – メッセージ、ツールディスパッチ、結果処理の実行時フロー。
はじめ方(READMEに従って)
- 前提条件
- Go 1.24.2 以上(または提供されている
devenvセットアップを使用)。 - Anthropic APIキー(
export ANTHROPIC_API_KEY=…)。
- Go 1.24.2 以上(または提供されている
- セットアップ
- 推奨:
devenv shellを実行して環境をロード。 - 手動でクローン後、
go mod tidyを実行。
- 推奨:
- 最初のバージョンを実行
go run chat.go # 基本的なClaudeチャット go run read.go # ファイル読み取りツールを追加 go run list_files.go # ディレクトリ一覧表示を追加 go run bash_tool.go # シェルコマンドツールを追加 go run edit_tool.go # ファイル編集ツールを追加 go run code_search_tool.go # ripgrepベースの検索を追加- 詳細ログは
--verboseを使用。 - READMEに示されたサンプルプロンプト(例:「fizzbuzz.jsを読む」、「git statusを実行」)を試す。
- 詳細ログは
- トラブルシューティング – APIキーの確認、
go mod tidyの実行、--verboseの使用、ファイル権限の確認。
技術スタック
- 言語 – Go(JSONスキーマ生成にGo構造体を活用)。
- LLM – 公開API経由でアクセスするAnthropic Claude。
- ツール – 高速なコード検索に
ripgrep、コマンド実行に標準OSシェル。 - オプションの開発環境 –
devenv(複数言語ランタイムおよびツールを提供)。
どの人にとって役立つか
- LLM駆動型アシスタントに興味があり、システム機能を安全に公開する方法を知りたい開発者。
- Claudeとのツール統合の具体的な例を求めるGoプログラマー。
- すぐに使える段階的なチュートリアルを探している教育者やワークショップ主催者。
著者が提案する次のステップ
- カスタムツールの追加(例:HTTP APIコールャー、ウェブスクレイパー)。
- ツールを連鎖させてより複雑なワークフローを構築。
- セッション間で永続的なメモリを実装。
- Web UIフロントエンドの構築。
- 他のLLMプロバイダーでの実験。
結論 – このリポジトリは、ClaudeとGoを用いてローカルAIコーディングアシスタントを構築する実践的で手を動かすガイドであり、明確で段階的な方法で現代のアシスタント-ツールパターンを示しています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- Dispatch
- プロジェクト