chargehand について
chargehandはClaude CodeとOpenCodeのワーカーを統括し、コードベースの質問への回答や変更を行い、固定コミットに照合した引用付きの型付き結果を返します。根拠のある出力を必要とする開発者やプログラム向けで、予算やタスク制御、実行ログをコードで管理します。
主な機能
- 01検証済み引用付きの型付き結果
- 02タスクグラフによる質問分割
- 03ツール・予算・操作のプリセット
- 04サンドボックスブランチとドラフトPR
- 05実行ログとPrompt CI
活用シーン
- 01ファイル根拠付きのコードベース回答
- 02引用根拠に基づく変更案のレビュー
- 03制限付きコンテナでの並列コーディングタスク
MCP 対応
stdioまたはHTTPのMCPサーバーを、HTTP APIやCLIとともに提供します。MCPクライアントからコーディングエージェントの実行を送信・管理できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
chargehand
コーディングエージェント(Claude Code、OpenCode)のオーケストレーターです。質問や変更を送ると、すべての主張が固定されたコミットのファイルを引用する、型付きの JSON が返されます。
アクティブです。今月も開発しています。
flowchart LR
caller[You or a program<br/>CLI · HTTP · MCP] -- request --> intake[Intake<br/>picks an action]
intake -- answer or split --> workers[Agent sessions<br/>Claude Code or OpenCode]
intake -- ask · deny · improve --> result
workers -- claims + citations --> resolver[Evidence resolver<br/>checks each citation]
resolver --> result[Typed result<br/>claims · open questions · cost]
workers -. code preset, driven batches .-> branch[Tested branch<br/>or draft pull request]
resolver --> log[(Run log<br/>tokens · cache · prompts)]
目的
コーディングエージェントは文章で回答します。エージェントを呼び出すプログラムには、検証可能な情報が必要です。コミット上のファイル、差分、セッションメッセージ、または呼び出し元自身の入力に結び付いた主張に加え、信頼度と、回答の根拠となった正確なプロンプトが必要です。また、制御フロー(タスクグラフ、予算、再試行、並列処理)をプロンプトではなくコードで管理し、各エージェントのコンテキストを小さく、キャッシュ可能で、破棄可能な状態に保ちたいと考えました。
できること
- 検証済みの引用付きで回答します。 引用とは、ファイルと行範囲、コミット、差分範囲、セッションメッセージ、または入力 ID です。主張がワーカーから返される前に、各引用が固定されたコミット上に存在することを確認します。ワーカーには修正の機会が 1 回与えられ、それでも検証に失敗する主張は未解決の質問に移されます。
- 質問を分割します。 インテークで分割が選ばれ、プリセットで許可されている場合、読み取り専用のサブタスク 2~4 件に分割し、タスクグラフとして実行します。後続のサブタスクでは、最初のサブタスクのキャッシュ済みプロンプトプレフィックスを再利用します。
- プリセットでは、ツール、トークンと費用の予算、許可するアクションを設定します。
default、cheap、thorough、strict、draft(独自の事実を持ち込むプログラム向け)、review、およびサンドボックス内でテストに合格するブランチを書き込むcodeがあります。 - バッチを自動実行します。 タスクの一覧を、並列の Claude Code セッションとして実行します。各セッションはロックダウンされたコンテナで動作し、ドラフトのプルリクエストを作成して終了します。
- お使いのツールと連携します。 MCP サーバー(stdio または HTTP)、HTTP API、CLI、Claude Code プラグイン(
/chargehand:change:1 つのプロンプトから、ローカルブランチ上のレビュー済み変更まで)と、ブラウザー上のオペレーターコンソールを提供します。 - 自身の動作を計測します。 実行ログには、トークン数、キャッシュヒット数、費用、各呼び出しのプロンプトチェーンが記録されます。Prompt CI は、マージ前にペア評価でプロンプトとプリセットの変更をチェックします。
対象外:独自のエージェントループ、モデルプロバイダーへの直接呼び出し、モデルゲートウェイ、メモリストア(MCP 経由でお使いのものを利用します)、ホスト型サービスです。解決できる引用は実在するものを指しますが、引用されたテキストが主張を裏付けているかの確認は、計画段階であり、まだ実装されていません(ロードマップ)。
警告
1.0 より前のバージョンです。イメージには
latestタグがありません。正確なバージョンを指定し、アップグレードする前に変更履歴をお読みください。
クイックスタート
リポジトリをクローンして、chargehand 自体について質問してみましょう。.NET 10 SDK、git、そして PATH 上でサインイン済みの Claude Code 2.1.283 が必要です(claude を一度実行してください)。プロファイルがない場合、ワーカーは CLI 自身のログインとデフォルトモデルを使用します。
git clone https://github.com/Egoushka/chargehand.git && cd chargehand
cat > request.json <<EOF
{
"contract_version": "request/v1",
"text": "Where does a split node decide whether to fork the first node's session? Cite the code.",
"context": { "interactive": false, "preset": "default",
"repository": { "path": "$PWD", "commit": "$(git rev-parse HEAD)" } }
}
EOF
dotnet run --project src/Chargehand.Cli -- run < request.json
標準出力に result/v1 が出力されます。これには、引用付きの主張、未解決の質問、信頼度、費用が含まれます。クイックスタートガイドでは、各フィールド、Claude Code の代わりに OpenCode を使う方法、実行が失敗した場合の対処方法を説明しています。
クローンせずに MCP クライアントから使うには、リリースを指定して dnx で nuget.org のパッケージを実行します。
claude mcp add chargehand -e CLAUDE_CODE_OAUTH_TOKEN=<token> -- dnx Chargehand@<version> --yes -- mcp
仕組み
- インテークはリクエスト(
request/v1)を読み込み、1つのアクションを含むタスク仕様を作成します。アクションはanswer、split、ask、denyまたはimproveです。最後の3つは、質問、理由または改善されたリクエストを示して実行を停止します。プリセットでは、リスクまたはコストの推定値がしきい値を超えた場合に、承認を求めて実行を停止することもできます。 - ワーカーは、固定されたコミットのリポジトリのクローン上で、プロファイルが許可するディレクトリ内において動作する、通常の Claude Code または OpenCode のセッションです。chargehand 自体がモデルプロバイダーを呼び出すことはありません。
- エビデンスリゾルバーは、すべての引用を git、セッション、リクエストと照合して確認します。不変条件は、引用が解決されない限り、主張が結果に含まれないことです。
- 結果(
result/v1)には、主張、未解決の質問、使用状況、プロンプトチェーンが含まれます。同じレコードが実行ログにも記録され、show、cache、routesがこれを読み取ります。
書き込み実行も、サンドボックス化されたワーカーを使って同じ経路をたどります。code プリセットはリポジトリのテストでブランチを検証し、駆動型のバッチでは、送信先許可リスト、Docker ソケットを単独で保持するランナー、プルリクエストを開く前のチェックゲートが追加されます。ARCHITECTURE.md にコードの構成を示しています。
数値
| 値 | 出典 | |
|---|---|---|
| 引用の解決件数、読み取り専用の実行 | 50件中50件(フェーズ3)、99件中99件(フェーズ4) | ベンチマーク |
| 1つの通常のセッションに対する分割のコスト | ブラインドスコアは0.967対0.950で、実行あたり1.53倍($0.00754対$0.00492) | フェーズ4 |
| Prompt CI が阻止した意図的なプロンプトのデグレード | 2件中1件。しかも、スコアに完全性を追加した後のみ | Prompt CI |
| 公開リポジトリでの品質ベンチマーク | 固定された4つのリポジトリを対象に13件のタスク。実際の実行はまだありません | ベンチマーク |
| ユーザー | 1人、自分 | 自分で数えました |
教訓
- 測定した質問では、並列処理のメリットはありませんでした。 分割ですべての引用が解決されましたが、スコアのわずかな向上に対し、コストは1.5倍になりました。そのため、提供されている
default、review、draftのプリセットでは分割を許可していません (ADR 0017)。 - 実行時チェックですでに強制されている内容を測るスコアでは、何も検出できません。 最初の Prompt CI スコアは根拠のある記述かどうかを測定していましたが、これはすでにリゾルバーが強制していたため、主張の3分の1を削除するプロンプトも通過しました。現在のスコアでは、根拠の確かさに完全性を掛け合わせています(ADR 0019)。
ドキュメント
- 概要:概要、実行の仕組み、対象外の内容、ステータス
- できることと、その根拠:各機能のステータスとエビデンス
- クイックスタート · Docker Compose でインストール:クローンから、またはリリースイメージから
- MCP クライアントから利用する · HTTP サーバーを実行する · ウェブ UI
- ブランチへの書き込み · 駆動型の書き込みセッション · 複数のランナー
- change コマンド:Claude Code プラグイン
- メモリとサービス · Prompt CI · ベンチマーク
- リファレンス:コマンド、ルート、プリセット、コントラクト、プロファイルフィールド、環境変数
- アーキテクチャ · 設計上の決定 · 変更履歴 · ロードマップ
- コントリビューション · セキュリティ · Apache-2.0 ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。