misterdev について
misterdevは、リポジトリの変更を計画・編集し、完了前に検証ゲートで各変更を確認するCLIおよびMCPサーバーです。予算を管理し、回帰時にロールバックできる目標主導のビルドを求める開発者向けです。
主な機能
- 01目標のタスク分解
- 02アンカー指定のコード編集
- 03ビルド・テスト・Lint・型チェック
- 04予算に応じたモデル選択
- 05分離したgit worktreeでの並列実行
活用シーン
- 01リポジトリの目標に沿った機能実装
- 02検証ゲートを使った失敗テストの修正
- 03独立したコードタスクの並列実行
MCP 対応
MCPサーバーとして、misterdevはMCPクライアントにビルドや管理機能を提供します。また、他のMCPサーバーに接続し、許可リストに基づいてビルド中に検出済みツールを呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
misterdev
自律型 LLM ビルドオーケストレーターです。目標をタスクに分解し、アンカー付き SEARCH/REPLACE でコードを編集し、完了を報告する前に、ビルド/テスト/Lint/型チェックのゲートをすべて通して各変更を検証します。CLI または MCP サーバーとして実行できます。
misterdev にリポジトリと目標を指定します。コードベースをシンボルグラフとして読み込み、目標を具体的なタスクに分解し、各タスクについて「試行・編集・検証」のループで作業します。アンカー付き SEARCH/REPLACE による編集を出力し、ディスク上のファイルに適用したうえで、ビルド、テスト、Lint、型チェック、および有効化した任意のゲートからなる一連の正確性ゲートに変更をかけます。ゲートが RED で失敗すると、その変更はブロックされます。チェック対象がないゲートは SKIP となり、ブロックされることはありません。変更によってテストスイートにリグレッションが生じた場合、misterdev は git を通じて変更を元に戻します。すべてのゲートがグリーンでなければ、変更はマージされません。
$ misterdev build . "add rate limiting to the public API"
planning goal → 3 tasks (model: anthropic/claude-sonnet-4-6, budget $100.00)
task 1/3 middleware: token-bucket limiter api/limiter.py
edit 1 hunk applied · syntax ok
gates build GREEN · tests GREEN (142 passed) · lint GREEN · typecheck GREEN
task 2/3 wire limiter into request pipeline api/app.py
edit 2 hunks applied
gates build GREEN · tests RED (1 failed) → rolling back, regenerating
edit 2 hunks applied (attempt 2)
gates build GREEN · tests GREEN (145 passed) · lint GREEN · typecheck GREEN
task 3/3 docs + config surface README.md, config.py
gates all GREEN
done 3/3 tasks · 145 tests green · $0.38 over 11 calls
misterdev が信頼するのはゲートだけなので、このループは誠実です。「モデルが完了したと言った」ことがゴールになることはありません。ゴールとなるのはビルド、テスト、差分です。
インストール
pip install misterdev
# or
uv pip install misterdev
Python 3.10 – 3.13 に対応しています。任意のエクストラを追加すると、コアのインストールを肥大化させずに機能を拡張できます。
pip install 'misterdev[local-embeddings]' # offline semantic context ranking (fastembed, no API key)
pip install 'misterdev[lsp]' # LSP semantic-diagnostics gate
pip install 'misterdev[web]' # headless-browser web verification gate (+ playwright install chromium)
pip install 'misterdev[mcp]' # Model Context Protocol tool-host substrate
エクストラはすべてオプトインで、タイムアウトが設定されています。エクストラが必要とする実行時依存関係がない場合、そのエクストラが有効にするゲートは失敗せずに SKIP となります。
できること
自律型ビルドループ
misterdev に目標を与えると、プロジェクトを分析し、タスクを計画し、編集して検証するという一連のサイクル全体を、目標が達成されるか予算を使い切るまで繰り返します。編集にはアンカー付き SEARCH/REPLACEのハンクを使用します。モデルが出力するのは変更箇所だけで、それをディスク上のファイルに適用するため、5,000 行のモジュールでも再出力せずに編集でき、出力トークンの上限にも達しません。マッチングではまず完全一致を試し、次に空白やインデントのずれを許容しますが、常に一意のアンカーを要求するため、ファイルの一部だけが書き込まれることはありません。
複数言語対応のシンボルグラフコンテキスト
tree-sitter のシンボルグラフにより、misterdev はPython、Rust、TypeScript/JavaScript、Go、Java、C/C++、C#、Swift、Kotlinの構造を理解できます。ファイルごとのアウトラインとプロジェクト全体の構造マップが計画と編集に活用されます。また、大きなファイルはシンボルのアウトラインと、タスクに関連するシンボルの逐語的なウィンドウとして送信されるため、コンテキストとコストはファイルの大きさではなく編集の規模に応じて変わります。
正確性ゲート
すべての変更は、ビルド → Lint → テスト → 型チェックの順序付きゲートを通過します。これに加えて、任意のゲートとして、変更を適用する前に各差分をレビューする敵対的批評器(独立した第 2 のモデル)、目標チェック、主張検証器、ミューテーションスコアリング、ランタイムスモーク、Web、ビジョン検証を追加できます。ゲートが RED で失敗すると、その変更はブロックされます。チェック対象がないゲートは SKIP となり、ブロックされることはありません。リグレッションは git を通じて元に戻されるため、作業ツリーが後戻りすることはありません。
動的なモデル選択
misterdev はモデルごとのパフォーマンス台帳を維持し、それをコストを考慮したセレクターと組み合わせて、OpenRouter の幅広いモデル全体から、費用対効果の高いモデルを選択します。各タスクは能力の段階(収集した無料/低価格モデル → 高性能な中位モデル → 最先端モデル)を順に進み、より安価なモデルが基準を満たせない場合にのみ、より高性能なモデルへ切り替わります。最上位の段階は最後の試行用に確保されるため、最先端モデルの利用は通常の選択肢ではなく、まれに使う安全策です。中位モデルでは行き詰まる難しいタスクは最先端モデルが完了し、簡単なタスクは無料/低価格モデルで解決します。品質が下がることはありません。質の低いコードを書く弱いモデルは基準を満たせず、ポリシーが次の段階へ進むためです。自動フェイルオーバーによりOpenRouter または Anthropicで動作し、レスポンスをキャッシュして二重の支払いを避けます。また、トークン予算によって、設定した上限内に支出を抑えます。
並列ワークツリー
互いに独立したタスクはそれぞれ分離された git ワークツリーで並行して実行されるため、独立した作業が同じツリーを奪い合うことはありません。統合ゲートは各ウェーブの後にフルテストスイートで再検証し、テストに不具合をもたらすタスクを取り消します。これにより、相互汚染のない並列処理を実現します。
自己改善
misterdev は、自身の実際の失敗をフィンガープリント付きの永続的なストリームとして保持し、自身のソースコードに対して AlphaEvolve 方式の「改善した場合のみ採用」ループを実行します。何が壊れたのかを特定し、原因(ハーネスのアーティファクト、観測のギャップ、能力)を分類して、対象を絞った構造的な自己編集を提案します。そして、最適化に一度も使用していないホールドアウトタスクセットでチャンピオンを上回り、リグレッションがゼロの場合にのみ、その編集を採用します。報酬ハッキングを防ぐガードレールによって、テストとベンチマークは切り離されています。その結果、特定のベンチマークに過剰適合することなく、失敗のクラス全体を時間とともに取り除くループが実現します。docs/path-to-100.md をご覧ください。
misterdev evolve --benchmark <polyglot-benchmark checkout> --workdir <scratch dir> で実行します(デフォルトはドライランです。実際に適用・判定・採用するには --live を追加し、ベンチマークの最も苦手な領域ではなく実際のビルド失敗ストリームを対象にするには --from-failures を追加します)。project.yaml の evolution.benchmark_dir/evolution.noise_band でデフォルトを設定できるため、呼び出し側で対応するフラグを省略できます。どちらもデフォルトでは未設定で、オプトインです。evolve_async MCP ツールを使うと、同じ処理をバックグラウンドで実行できます(job_status でポーリングします)。リポジトリシークレット OPENROUTER_API_KEY を設定すると、 .github/workflows/evolve.yml を通じて、夜間に --scheduled --live --from-failures の処理も実行されます。これは同じ排他的ロックとサーキットブレーカーによって制御されるため、実行中に重複したトリガーや、繰り返し失敗するトリガーが発生しても、何もせず安全に終了します。
正確性の面では、misterdev は再現を最優先します。イシュー駆動のタスクでは、受け入れ基準から失敗するテストを合成し、クリーンなツリーでそのテストが実際に失敗することを検証します(何も再現しないテストは、信頼せずに破棄します)。その後、修正を進めてテストを成功させます。これにより、モデルは説明文ではなく、具体的に検証された目標に向けて編集します。
二つの時間スケールでの進化 (実装済み。orchestrator.runtime_tooling でオプトインします。docs/two-timescale-evolution.md をご覧ください) は、記憶を持たないランタイムエージェントでは実現できない自己改善を可能にします。ランタイムでは、モデルがタスク専用の小さなヘルパーツールを作成し、サンドボックス内で実行できます(強化されたネットワークなしのコンテナーを使用するため、信頼できないコードがホストやリポジトリに触れることはありません。コンテナーエンジンがない場合、この機能は無効になります)。その出力は編集に利用されます。その後、作成されたすべてのツールはタスクの結果とともにツールコーパスに保存されます。これは通常の実行から生まれる副産物です。そして、意図的な昇格処理により、ホールドアウトタスクの分割(再現コーパスから選ばれたベースライン)で成功が汎化するツールが、能力ごとに最良のものを保持する永続的なツールライブラリに採用され、以降の実行で利用できるようになります。高速ループが作成し、低速ループが勝者だけを残します。スキャフォールドの自己編集を守るものと同じホールドアウトゲートによって、ライブラリの汎化性能が保たれ、ベンチマークへの過剰適合を防ぎます。能力はタスクごとに再発明されるのではなく、実行を重ねるごとに蓄積されます。これは、現在主流のオープンソーススキャフォールドに欠けている記憶です。python -m misterdev.core.evolution.tool_promotion <project> で昇格処理を実行できます。
拡張性
ツール、ゲート、ターゲットは、Python エントリーポイントを通じて自動登録されます。pip install misterdev-plugin-x を実行すると、コアを一切編集せずに機能を追加できます。misterdev は実行時にエントリーポイントを検出し、機能を組み込みます。動作する例は examples/misterdev-plugin-hello にあります。misterdev の拡張をご覧ください。
エージェント型 MCP
misterdev は Model Context Protocol サーバーに接続し、検出したツールをビルド中にモデルから呼び出せるようにします。呼び出しは上限が設定され、オプトインで、ツールの許可リストによって制限されます。トランスポートには stdio と認証付きのリモート streamable-http があり、Glama のようなホスト型 MCP ゲートウェイを指定すれば、ツールをローカルで実行することなく、ツールカタログ全体をビルドから利用できます。
ベンチマーク
Aider の polyglot ベンチマーク(非公開のテストスイートを含む Exercism の演習)におけるゲート検証済みの pass@1。モデルは anthropic/claude-sonnet-4-6 です。
| 言語 | 解決数 | 成功率 |
|---|---|---|
| JavaScript | 9 / 10 | 90% |
| Python | 8 / 10 | 80% |
| Rust | 7 / 10 | 70% |
継続的なストレステストでは、3 つの言語で失敗ゼロの 20/20 を達成しました。これには、難しいとよく言われる演習(ボウリング、forth、任意精度の小数)も含まれます。解決の判定には、モデルの自己申告ではなく、演習に用意された非公開テストを使用しています。詳細な数値、方法、再現方法については、docs/benchmark-results.md をご覧ください。テストスイート:1,941 件すべて成功 — docs/TESTING.md。
CLI リファレンス
フラグを覚えたくない場合は? 何をしたいかを説明するだけで使えます。プロジェクトのセットアップも devplan も不要です。misterdev が手間なく処理します。
$ misterdev "add rate limiting to the public API"
⠸ Building…
アクションを示す語(add、fix、implement、write、create、…)は、ビルドに直接進みます。LLM によるルーティング呼び出しも、確認プロンプトも、余計な手順もありません。クエリや管理を示す語(list、status、what、how、check、run、…)は、モデル呼び出しによって対応する操作に割り当てられ、プレビューが表示されます。変更を伴う操作の前には確認を求めます。
$ misterdev "check what's broken and fix it cheaply, run in parallel"
→ I'll run: misterdev build . fix broken tests --budget 5 --parallel
proceed? [Y/n]
以下のフラグベースのコマンドも、スクリプトや上級ユーザー向けに引き続き使用できます。
すべての操作は misterdev コマンドで実行できます。
| コマンド | 動作 |
|---|---|
misterdev scan <dir> | ディレクトリ配下のプロジェクトを検出して登録します。 |
misterdev list | 登録済みのすべてのプロジェクトを一覧表示します。 |
misterdev status [path] | プロジェクトのタスクとその状態を表示します。 |
misterdev report [path] | 最新のビルドのコスト/トークン数、モデルごとの台帳のパフォーマンス、監査証跡を要約します。読み取り専用で、再実行は行いません。 |
misterdev run [path] | 保留中のタスクを実行します。パスの代わりにゴールが指定された場合は build に切り替えます。--dry-run、--force、--status が使用できます。 |
misterdev plan [path] | プロジェクトを分析し、作業を提案して、対話形式で計画を作成します。--budget、--no-rollback が使用できます。 |
misterdev build [path] [goal] | 自律的にビルド、デバッグ、完了までを行うワークフローです。ゴールを直接指定した場合、path のデフォルトは . です。フラグについては以下をご覧ください。 |
サブコマンドなしで misterdev を実行すると、対話形式の計画作成が始まります。
misterdev build のフラグ
| フラグ | 効果 |
|---|---|
--budget <float> | 実行に使用する予算の上限(ドル単位。デフォルトは 100)を指定します。 |
--commit | タスクが完了するたびにコミットします。 |
--parallel | 独立したタスクを、分離されたワークツリーで並行して実行します。 |
--dry-run | 計画のみを行い、実行せずにタスクを表示します。 |
--interactive、-i | タスク間で確認を待ちます。 |
--no-verify | 最終検証フェーズをスキップします。 |
--no-suggest | 提案のスキャンをスキップします。 |
--no-rollback | 回帰したタスクの自動二分探索/リバートを無効にします。 |
--focus <area> | 作業対象を特定の領域に限定します。 |
--allow-dirty | 未コミットの変更がある状態でのビルドを許可します。 |
--max-tasks <n> | 今回の実行で計画/実行するタスク数の上限を設定します(コストを制限します)。 |
prompt には、自由形式のテキストまたはモードを示す語(debug、complete、review、new <description>)を指定します。
misterdev は MCP サーバー(misterdev-mcp)としても提供されているため、Claude Desktop、Claude Code、Cursor、または任意の MCP クライアントから、フラグを覚える必要なく平易な英語で操作できます。クライアントが呼び出すのはツール(build、scan、status、list_projects、run)だけです。オーケストレーション全体は、独自のモデルとコンテキスト予算を使って misterdev 自身のプロセス内で実行され、クライアントには短い概要だけが返されます。コードベースがクライアントのコンテキストウィンドウに入ることはありません。
// Claude Desktop config (claude_desktop_config.json)
{
"mcpServers": {
"misterdev": {
"command": "misterdev-mcp",
"env": { "OPENROUTER_API_KEY": "sk-..." }
}
}
}
あとは、*「misterdev に API のレート制限を追加してもらって。費用は 5 ドル以内にして」*と頼むだけです。変更を伴うツール(build、run)は、作業ツリーに変更があると実行を拒否し、デフォルトで保守的な予算を適用します。
Claude Code との連携。 build ツールは spec_text パラメーターを受け取ります。Claude が作成した完全な仕様を渡すと、misterdev は独自の分析と仕様生成の段階をスキップし、コードベース独自のゲートスイートを使って、分解 → 実行 → 検証へと進みます。設計は Claude が担当し、実行、正確性ゲート、ロールバックは misterdev が担当します。
# In Claude Code / MCP client
misterdev.build("/path/to/repo", spec_text="""
Feature: add a token-bucket rate limiter to /api/v1/*
...full spec...
""")
mcp エクストラが必要です:pip install 'misterdev[mcp]'。
misterdev の拡張
プラグインは、misterdev.* グループにエントリーポイントを宣言する通常の Python パッケージです。インストールすれば misterdev が読み込みます。コアへの変更は不要です。
ツールはクラスで、ゲートは GateOutcome を返す呼び出し可能オブジェクトです。
# misterdev_plugin_hello.py
from misterdev.core.execution.outcomes import GateOutcome, GREEN, RED
class HelloTool:
gather_safe = True # opt into the agentic gathering loop
gather_description = "Return a friendly greeting for a name."
def __init__(self, config: dict):
self.name = config.get("name", "hello")
def execute(self, project, name: str = "world", **_ignored):
return True, f"Hello, {name}!"
def no_shouting_gate(ctx) -> GateOutcome:
build = (ctx.commands or {}).get("build_command") or ""
if build and build.isupper():
return GateOutcome(RED, "build_command is ALL CAPS; please calm down")
return GateOutcome(GREEN)
# pyproject.toml — the entry points are the whole contract
[project.entry-points."misterdev.tools"]
hello = "misterdev_plugin_hello:HelloTool"
[project.entry-points."misterdev.gates"]
no_shouting = "misterdev_plugin_hello:no_shouting_gate"
ターゲットも、misterdev.targets グループを通じて同じ方法で登録します。ツール、ゲート、pyproject.toml、メモを含む、実行可能な完全なサンプルは examples/misterdev-plugin-hello にあります。
設定
ディレクトリで misterdev を初めて実行すると、project.yaml が自動的に作成されるため、すぐに使い始めるのにセットアップは不要です。リポジトリのルートに独自の設定ファイルを配置すると、ビルド/テスト/Lint コマンド、モデル、予算、ゲートを指定できます。
name: "My App"
language: "python"
build_command: "python -m compileall -q ."
test_command: "pytest -q"
lint_command: "ruff check ."
llm:
provider: "openrouter" # openrouter | anthropic
model: "anthropic/claude-sonnet-4-6"
api_key_env_var: "OPENROUTER_API_KEY"
主な設定項目:
- モデルと予算 —
llm.model、プロバイダー/フェイルオーバー、実行あたりの上限額(--budgetでも指定できます)。 - ゲート — 任意のゲート(敵対的クリティック、ミューテーション、ランタイムスモーク、Web、ビジョン、目標チェック)はデフォルトでは無効で、
orchestrator.*キーの下で有効にします。 - MCP —
mcp.serversの下でサーバーを宣言し、orchestrator.mcp_enabled/orchestrator.mcp_tool_useでツールの使用を有効にします。ホスト型ツールカタログを利用するには、リモートゲートウェイを指定します。 - ターゲット —
targets:ブロックを使うと、多言語モノレポで言語ごとのビルド/テスト/Lint を定義し、タスクごとに振り分けられます。
ガイド: はじめに · 設定 · プラグイン · MCP。project.yaml.example には、すべての設定キーが記載されています。
要件
- Python 3.10 – 3.13
- git(タスクごとのブランチ、ワークツリー、ロールバックはすべて git を通じて実行します)
- OpenRouter または Anthropic の API キー
- ゲートごとに必要となるツールチェーン(任意)— Web ゲート用の Playwright ブラウザー、LSP ゲート用の言語サーバー、ツールホスト基盤用の MCP SDK(いずれも対応するエクストラからインストール)
開発
git clone https://github.com/dcondrey/misterdev
cd misterdev
uv sync
uv run ruff check .
uv run pytest -q
コントリビューションを歓迎します。CONTRIBUTING.md を参照し、GitHub でイシューを作成するか、プルリクエストを送ってください。
ライセンス
misterdev は デュアルライセンスです。
- AGPL-3.0-or-later — GNU Affero General Public License の条件に基づき、オープンソースでの使用は無料です。
- 商用ライセンス — AGPL の義務を負わずに、クローズドソース製品またはプロプライエタリ製品で使用する場合に利用できます。
プロジェクトに合ったライセンスをお選びください。
David Condrey が開発 ·
github.com/dcondrey/misterdev
静的ロゴは assets/logo.svg にあります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。