mcpField
P
Pitroom

Pitroom

ローカル
github.comAI・エージェント29今日更新

Pitroom について

Pitroomは、主担当のコーディングエージェントが判断を保ちながら、範囲を限定した作業をワーカーに委任するCLIとエージェントスキル群です。引用箇所を検証し、差分と利用状況の記録を返し、複数のワーカーCLIで並行実行できます。

主な機能

  1. 01調査、修正、テスト、レビューの委任
  2. 02フォールバック付き並列実行
  3. 03引用されたファイル箇所の検証
  4. 04正確な差分と利用記録の返却
  5. 05変更を隔離してから適用
  6. 06ローカルダッシュボードで実行を確認

活用シーン

  1. 01コーディング中のリポジトリ調査の委任
  2. 02独立したコードレビューの並行実行
  3. 03他の編集と分けてワーカーパッチを適用
  4. 04ワーカーの利用状況と実行履歴の追跡

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"atastech-pitroom": {
"command": "npx",
"args": [
"-y",
"pitroom"
]
}
}
}
起動コマンドnpx -y pitroom

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmpitroom0.27.0

ツール

10

掲載時のツール一覧 · 3 日前に更新

パラメーター型必須説明
dirstringいいえプロジェクトディレクトリ(デフォルト:サーバーのディレクトリ)。
webbooleanいいえWeb ツールを許可します。
linkarrayいいえ隔離コピーにリンクする無視対象ディレクトリ。例:["node_modules"]。
modeenumいいえread | isolate | write
taskstringいいえ実行する内容と、ワーカーに必要なコンテキスト。
tierstringいいえcheap、standard、または capable(設定から取得)。
auditbooleanいいえ読み取り:別のワーカーに回答を再確認させます(タスクごとに 1 人)。
filesarrayいいえ添付するファイル。
freshbooleanいいえ読み取り:同じコードについてこの質問に回答済みでも、ワーカーに尋ねます。
groupstringいいえ関連する実行のグループ名。
modelstringいいえそのワーカーのモデル。
tasksarrayいいえまたは、独立したタスクを複数指定し、それぞれにワーカーを 1 人割り当てます。
effortstringいいえlow、medium、high、xhigh。
verifystringいいえ後で実行するコマンド。例:"npm test"。
workerstringいいえワーカー "backend[:model]"。例:"opencode"、"claude:haiku"。デフォルト:設定済みのワーカー。
inPlacebooleanいいえ読み取り:機密情報らしきファイルを除いたスナップショットではなく、ディレクトリ自体を読み取ります。
continuestringいいえ同じワーカーセッションで続行する、完了済みの実行。
waitSecondsnumberいいえ"still running" を返す前に待機する秒数(デフォルト 50、最大 540)。

詳細

Pitroom

高価なコーディングエージェントのための無料ピットクルー

より安く、より速く:読み込み、修正、テスト、レビューを並列で動くワーカーに任せましょう。判断はあなたが下します。

モデル非依存 · 検証済みの回答 · あいまいな感覚ではなく、証拠を提示 · OpenCode / Codex / Claude Code / Gemini CLI / Qwen Code / Kilo Code / Antigravity のワーカー


Release Downloads npm Stars CI License


クイックスタート · ダッシュボード · ベンチマーク · ワークフロー · スキル · コマンド · ワーカー · 責任範囲 · アダプターの作成


Pitroom — 高価なコーディングエージェントのための無料ピットクルー。オレンジ色のClaw’d、青いターミナル顔のCodexのペット、紫と青のGeminiの星が、コーディング用ターミナルで一緒に作業しています。

エージェントが判断 · 安価なワーカーが入力 · 2つ目のモデルがレビュー


Pitroomのダッシュボード:アニメーションするマスコット付きの実行中ワーカー、完了した実行を開いてタスク、ステップ、結果、差分を表示し、その後に履歴タブと統計タブを表示(サンプルデータ)

pitroom dash、サンプルデータを使用


Pitroomを選ぶ理由

Claude Code、Codexなどは、grep、ファイルを開く作業、引用することのないコードのスキャンといった「読み込み」に高価なトークンを費やします。

Pitroomはさらに一歩進みます。

エージェントが主導権を握ったまま、安価なワーカーのピットクルーが並列で下準備を進めます。その間もエージェントは作業を続け、最後に回答、正確な差分、作業記録だけを受け取ります。

あなたのモデルを使います

モデルは固定されていません。

PitroomはワーカーのCLIで設定されているデフォルトモデルを使います。無料枠のモデル、ローカルのMLX/Ollamaモデル、安価な有料モデルのいずれでも使えます。そこで切り替えれば、Pitroomにも反映されます。

あらゆるワーカーCLIに対応

OpenCode、Codex CLI、Claude Code、Gemini CLI、Qwen Code、Kilo Code、Antigravity CLI(LinuxおよびWindowsではベータ版)に対応しています。

1つのグループ内で混在させられます。また、フォールバックチェーンでそれらを横断できます(アダプターの仕組み)。

検証済みの回答

ワーカーが引用するすべてのpath:lineをディスク上で確認します。ディレクトリを含まない引用(ipc.ts:218、src/main/ipc.ts:218)はプロジェクト内で検索し、Schema.parse:432のような呼び出しをファイルと誤認しません。

エージェントは検証済みの情報を信頼し、読み直しを省けます。

設計上、安全です

コミット、プッシュ、リセット、大量削除はできません。gitガードが不正な操作を阻止します。

分離モードでは、適用するまで変更が作業ツリーに反映されません。

さらに多くの機能
その他の12の機能 - **雰囲気ではなく、実際の数値を。** ワーカーが消費したトークン数、エージェントに返されたトークン数、圧縮率、メインモデルを使った場合の料金見積もりを確認できます。`pitroom savings --card card.svg` で共有可能なカードを作成できます。 - **自己修復するワーカーチェーン。** 無料モデルはレート制限されたり、提供終了になったりします。フォールバックワーカーを一度だけリスト(`fallback`)に登録すれば、「model not found」、429、割り当て量のエラーに遭遇した実行は、次のモデルへ自動的に移ります。プランの使用上限によってタスクの途中でワーカーが停止した場合も同様で、次のモデルがタスクを完了します。特定のモデルがハードコードされることはありません。チェーンは自分で決められます。 - **1人ではなく、クルーで。** `pitroom crew` で複数のワーカーを一度に起動し、`pitroom watch --json` で変更ごとに1行をストリーミングしてエージェントがリアルタイムで追跡できます。`pitroom wait -g` ですべての回答を収集し、`pitroom apply -g` で分離されたパッチを順番に適用します。デフォルトでは最大20個のワーカーが同時に動作し(`maxParallel`、上限は30個)、残りはキューに入り、フォールバックチェーンが無料枠のレート制限を吸収します。並行して書き込むワーカーは拒否されます。 - **安いだけでなく、速い。** ワーカーはバックグラウンドで並行して(最大20個同時に)動作するため、エージェントは作業を続けられ、時間のかかる読み取りやレビューで処理が止まることはありません。[ベンチマーク](#benchmarks)では、ワーカーの処理時間470秒分を実時間156秒で完了しました。質問を1つずつ処理する場合より約3倍速く、エージェント自身のコンテキストも小さく保たれました。 - **まず無料で、必要なときだけ高価なモデルを。** 実行とプランのタスクは、OpenCode の無料モデルである `cheap` ティアから始まります。`standard`(Codex)と `capable`(Claude Code)は、それらが必要なタスク向けです。レビュー担当を指定する任意の `review` ティアもあります。無料の Google AI Studio キーを使う Gemini CLI も、追加の低コストなワーカーとして利用できます(モデルごとに1日あたりの少ない割り当て量)。`pitroom models` では、各ワーカーが利用できるもの、モデルごとに指定可能な処理レベル(`low` … `xhigh`)、申告した料金(`costs`)、実際の使用量を確認できます。`--effort` で実行ごとのレベルを設定できます。詳細は[モデル、料金、処理レベル](#models-costs-and-effort)をご覧ください。 - **ダーティーなツリーでも、変更を正確に把握。** Pitroom は一時的な git インデックスを使って作業ツリーのスナップショットを作成するため、インデックス、ブランチ、stash に影響を与えません。これにより、*ワーカーが行った*変更だけを報告し、正確に元に戻せます:`pitroom revert `。 - **権限はエージェントが設定。** エージェントは、タスクとセッションで許可されている権限(読み取り専用、分離コピー、直接編集、Web)を設定して各ワーカーを作成します。ワーカーが自ら権限を拡大することはありません。どの実行にも、git 履歴の変更、`sudo`、公開、シークレットの使用を禁止する固定の制限が適用されます。ワーカーは削除も適用できません。エージェントが `--allow-delete` を渡さない限り、`pitroom apply` はファイルを削除するパッチを拒否します。 - **確実に分離。** `--isolate` は、ワーカーを**現在の**状態のプライベートコピー(独自のリポジトリを使い、オブジェクトは読み取り専用で共有)で実行します。コミット前のファイルと未追跡ファイルも含まれます。その後、パッチを受け取ります:`pitroom apply `(検査を行い、競合がある場合は拒否)または `pitroom discard `。 - **リポジトリを汚しません。** `.pitroom/` フォルダーも、`.gitignore` の編集も、ブランチもありません。記録は `~/.local/state/pitroom` に保存されます。 - **あらゆるエージェントで動作。** 14個の[Agent Skills](https://agentskills.io)を利用できます。ワーカーが実行する superpowers の開発ワークフローに加え、委任機能(`using-pitroom`、`pitroom-research`、`-crew`、`-implement`)、CLI、セッション開始フックでワークフローを読み込む Claude Code / Codex プラグインが含まれます。Claude Code、Codex、Gemini CLI、Cursor、またはシェルコマンドを実行できるものなら何でも使えます。 - **ライブダッシュボードと検索可能な履歴。** `pitroom dash` を実行すると、各実行のタスク、ワーカーの作業手順、結果、差分を履歴や統計とともに確認できるローカルページが開きます。これは、フックやステータス行を表示しないエージェントアプリ向けです。`pitroom history` では、Pitroom が過去に実行したすべてを検索できます。[ダッシュボード](#dashboard)をご覧ください。 - **軽量。** CLI の TypeScript コードは約6,500行、CLI バンドルは約210 KBです(10言語の構文ハイライトを含む、配信するダッシュボードファイル約1.9 MBを除く)。実行時依存関係はありません。
### 安全性の仕組み

実行ごとに、ワーカー独自の安全機構が指定されたモードに設定されます(OpenCode の場合は、OPENCODE_CONFIG_CONTENT を通じて注入される権限プロファイルです)。コミット/プッシュ/リセット/チェックアウト/スタッシュ/クリーン/リベースは禁止され、一括削除や sudo も禁止されます。.env ファイルやキー ファイルの読み取りを拒否するファイル読み取りツール(OpenCode と Claude Code のワーカー)、--web を指定しない限りウェブツールなし、サブエージェントなし、再帰的な委任なしです。ルールは allow/deny のみなので、ヘッドレス実行がプロンプト待ちで停止することはありません。ワーカーの PATH にあるgit ガードは、sh -c "git push"、env git reset、エイリアス、スクリプトによるコミット、プッシュ、リセット、スタッシュ、インデックスへの変更も阻止します。opencode.json に変更が加えられることはありません。これらの安全策はリスクを低減しますが、セキュリティ境界ではありません(責任とSECURITY.mdを参照してください)。


動作を確認する

無料の OpenCode Zen モデルを使った実際の実行例です。エージェントが読み取るトークン数は 163,000 ではなく、約 554 です。

$ pitroom run "Which function builds the read-only permission profile, and which bash commands does it allow?"
pitroom ✔ done · read · 30s · run 20260930-003902-3270
session ses_… · model opencode/muse-spark-1.3-contributor-free

SUMMARY: The read-only permission profile is built by `readProfile()` in src/profiles.ts:89.
Its bash allow-list is `READ_ONLY_BASH` in src/profiles.ts:29-46.
DETAILS:
- Allowed (src/profiles.ts:31-41): `git status*`:31, `git diff*`:32, … `rg *`:40, `wc *`:41.
- Explicit sub-denies: `rg *--pre*`:43, `git *--output*`:44, `git *--ext-diff*`:45.
FILES CHANGED: none

── receipt: worker processed 163k tokens in 6 steps (7 tool calls) · worker cost $0.000
   · returned ~554 tokens, 294× compression · est. saved $0.152 vs Claude Sonnet

実行のたびにレシートが出力され、pitroom savings で合計を確認できます(--card を指定すると共有可能なカードが作成されます。ここに示す数値はサンプルデータで、実測値はベンチマークに記載されています)。

Pitroom の節約額カード


ダッシュボード

pitroom dash --detach を実行すると、127.0.0.1(このマシンからのみアクセス可能)上のライブページのアドレスが表示されます。このページは実行履歴を読み取りますが、以下の2つの操作以外は何も変更しません。Claude Code や Codex アプリのように、フックのメッセージやステータス行が届かない場所で使えます。ブラウザーまたはアプリ内蔵のブラウザーペインで開いてください。スキルは、エージェントがバックグラウンドでワーカーを実行するときにダッシュボードを起動し、アドレスを知らせるよう指示します。

以下のスクリーンショットはサンプルデータ(架空の shop-api プロジェクト)を示しており、実在のプロジェクトではありません。

ライブ。 現在実行中のものと、最新の実行履歴を表示します。実行中のカードにはタイマー、ワーカーの直近の発言、アニメーションするピクセルマスコットが表示されます(完了したカードにはワーカーのロゴが表示されます)。完了したカードには結果が表示され、レビューの場合は指摘事項も表示されます。

ライブタブ:4つの実行中ワーカーとタイマー、進捗バー、その後に承認済みと修正が必要のバッジ、ステップ数、トークン数、節約額を表示した完了済みの実行

カード、監査、履歴、統計、停止/破棄

カードをクリックすると、パネルが展開されます。 タスク、ワーカーが実行したステップごとの内容(読み取ったファイル、検索、コマンド、編集とその時刻。失敗したものには印が付きます)、結果、変更したファイルと差分、詳細(モデル、トークン数、コスト、フォールバック、参照チェック)が表示されます。

実行カードを展開した状態:タスク、10ステップのアクティビティ一覧、結果、変更された5つのファイル(1つは差分を強調表示して開かれている)、詳細

監査結果とスキップされたワーカーもカードに表示されます。 別のワーカーが再確認した調査結果(監査)には、監査済み · 同意 / 一部同意 / 不同意 のバッジが付き、不同意の場合は異議のある主張が表示されます。クォータ切れで除外されたワーカーは、詳細の下に一覧表示されます(「スキップ … 14:05 までクールダウン中」。pitroom cooldown を参照)。

別のワーカーに監査された調査カードを展開した状態。監査したワーカーは不同意を示し、異議のある2つの主張をファイル名と行番号付きで一覧表示している。また、日次クォータを使い切ったためワーカーがスキップされた旨の注記がある

履歴では、Pitroom がこれまでに実行したすべての内容(タスク、回答、ステップの全文)を検索でき、状態、モデル、期間で絞り込めます。各実行はライブと同じカードで開きます。統計には、ワーカーとモデル別、日別の実行回数、成功率、時間、トークン数、節約額が表示されます。

履歴タブ:検索ボックス、フィルター、過去の実行をすべてカード形式で表示統計タブ:合計、日ごとの実行回数、ワーカーとモデルごとのロゴ、成功率、監査された回答を別のワーカーがどれだけ確認したか

停止と破棄。 実行中のカードには停止ボタンがあり、まだ適用されていない完了済みの --isolate カードには破棄ボタンがあります(pitroom stop と pitroom discard と同じ動作です。パッチファイルは残ります)。クルーのカードには、すべての実行を一度に操作する同じボタン(すべて停止、すべて破棄)があります。また、一部の実行が失敗、タイムアウト、または停止した場合、コマンドを再試行を押すと、同じクルーで再実行する pitroom run … --bg コマンドが表示されます。端末にコピーするか、エージェントに渡せます(Windows の PowerShell 用、その他の環境では POSIX シェル用に引用符が付けられます)。各操作の前に、もう一度確認を求めます。このページから行える操作はほかにありません。実行を開始することも、パッチを適用することもありません。POST リクエストには、ページの配信時に使われたシークレット(ダッシュボードを起動するたびに変わります)と、そのページ自身のオリジンが必要です。そのため、別のサイトのウェブページからボタンを押すことはできません。

ダッシュボードは React アプリで、dist/ui に一度ビルドされ、2つの静的ファイルとして配信されます。そのため、CLI に実行時依存関係はありません。システムのライトテーマまたはダークテーマに従います(ボタンで切り替えられます)。


ベンチマーク

実在する公開リポジトリ:PI-Desktop のコミット c2bfe35 を対象に測定しました。追跡対象のファイルは2,349個で、TypeScriptとRustのコードは約419,000行です。エージェントがコードを変更する前によく尋ねる8つの質問を、読み取り専用のクルー1つ(pitroom crew、一度に最大4ワーカー)として、OpenCodeの無料モデル muse-spark-1.3-contributor-free で実行しました。

要するに、このリポジトリでは8つの質問に壁時計時間で156秒かかり、ワーカーは550万トークンを読み、エージェントに7,684トークン(715分の1)を渡しました。その後の監査では、一部の回答が不完全だとわかりました。React、Django、Kubernetesでは、無料モデル4つが範囲を限定した9つの質問で gpt-6-sol と同等の結果を出し、バグを仕込んだレビューのテストでは、ほぼすべてのモデルがほぼすべてのバグを見つけました。以下の表と、表からはわからないことをご覧ください。

PI-Desktop:8つの質問、トークン削減、回答の品質と単独の変更
質問ワーカー時間処理したトークンエージェントへの返却圧縮率検証済み参照数
プラグインランタイムはどこにあり、プラグインを有効化・無効化する関数はどれですか?37 s405,380767529×10/11
エージェントランタイムが会話を圧縮するのはいつですか?(関数と正確な条件)90 s1,250,7197631,639×17/17
Rustホストでは、セッション状態がディスクに永続化されるのはどこですか?71 s854,9691,426600×29/45 ¹
ウィンドウ管理をレンダラーに公開するIPCチャネルはどれですか?32 s165,180716231×3/28 ¹
ツール呼び出しは、エージェントランタイムからRustホストへどのように渡されますか?119 s1,818,5248662,100×14/15
i18nパッケージに依存するパッケージとアプリはどれですか?33 s271,297656414×15/16
自動更新はどこに実装されており、Windowsのポータブルターゲットでは何が変わりますか?29 s215,693743290×20/21
RPCレイヤーをカバーするテストはどれですか?59 s511,2091,747293×6/7
8つすべて壁時計時間156 s5,492,9717,684715×114/160

ワーカーはコードとドキュメントを550万トークン読み取り(96ステップ、ツール呼び出し179回)、エージェントには7,684トークン(回答1つあたり約960トークン)を渡しました。8回の実行を合わせるとワーカー時間は470秒ですが、一度に4つ(当時の上限。現在のデフォルトは20)実行したため、壁時計時間では156秒で完了しました。これは順番に実行する場合の約3倍の速さです。比較しているのは同じワーカー同士であり、エージェントが単独で読んだ場合との比較ではありません。後者は測定していません。pitroom savings では、Claude Sonnetの定価に基づき、これら8つで3.86ドル節約できたと推定しています。

回答は正しかったのでしょうか? リポジトリを照合して手作業で確認したところ、8つの回答全体で重要な主張46件(引用された行とその内容)はすべて正しく、2つの網羅性チェックも正しい結果でした(ウィンドウチャネルはinvokeがちょうど6つ、eventが3つで、config_sync_rpc.rs にテストはありません)。i18nの回答は、そのパッケージをインポートするソースファイル12個を挙げていますが、同じくインポートしているテストとフィクスチャのファイル11個は含めていません。ただし、質問ではそれらについて尋ねていませんでした。Pitroom独自のチェッカーが検証済みとして示す参照数は、これより少なくなっています。¹ この2つの回答は、パスを解決できないファイル名だけの参照(transcripts.rs:651)を記載しているため、該当行が正しくても未検証として数えられます。 監査では、手作業による確認より多くの問題が見つかりました。 8つの回答はそれぞれ、後から別の無料ワーカー(space-bunny 上の pitroom audit)によって再確認され、3件は合意、5件は一部正しいと判定されました。食い違いは、引用した行についてではなく、不完全だったり、わずかにずれていたりする回答に関するものです。項目が漏れているリスト(セッション状態:書き込み先がほかにもある、i18n:深いインポート形式で使う別の利用者がいる、RPC テスト:14件のテストが抜けている)、誤った件数、そして宣言から数行ずれた行を引用している例がいくつかありました。1件は手作業でも確認され、監査の判定が正しかったことがわかりました。RPC の mod tests ブロックには59件のテストがあるのに、回答では約40件とされていました。ほかの回答は手作業では確認されておらず、監査役も間違えることがある無料モデルです。そのため、ワーカーのリストや件数は、重要な場合にエージェントが確認するための良い初期回答として扱ってください。これが --audit の目的です。

隔離されたコピーでの変更: 「resolveUpdateMode の上に1行コメントを追加する」は、16秒、4ステップ(142,491トークン)で完了しました。パッチは1つのファイルに1行だけで、コメントはコードに合致しており、適用するまでは作業ツリーに影響しません。

React、Django、Kubernetes での無料モデルと gpt-6-sol の比較

3つの大規模リポジトリにおける無料モデルと gpt-6-sol の比較。 固定したコミットを使い、React(7,252ファイル)、Django(7,091ファイル)、Kubernetes(31,353ファイル)で同種の作業を行いました。各リポジトリにつき3問、合計9問の範囲を限定した質問です。関数を定義するファイルと行、単語を含むファイル数、その単語を含むファイルを尋ねました。各回答は意見ではなく、git grep と照合して評価します。正確な path:line(ファイルは正しいが行が違う場合は半点)、正確な件数、そしてリストについては見落としたファイルと誤って追加したファイルの両方を減点する F1 スコアを使います。各ワーカーは、読み取り専用で、フォールバックなしに9問へ1回ずつ回答しました。そのため、対応できないモデルは別のモデルに差し替えられず、失敗となります。

ワーカーとモデルスコア中央値の時間中央値のトークン数
Codex gpt-6-sol(effort medium)100%16秒50k
Codex gpt-6-sol(effort low)100%20秒50k
OpenCode muse-spark-1.3-contributor-free100%23秒44k
OpenCode space-bunny-free100%35秒63k
OpenCode mimo-v2.6-flash-free100%37秒42k
OpenCode big-pickle100%42秒91k
OpenRouter nemotron-3-ultra-550b-a55b:free89%27秒42k
OpenCode longcat-2.5-preview-free89%29秒20k
OpenCode nemotron-3-ultra-free89%35秒21k
OpenRouter inkling:free83%14秒41k
OpenCode nemotron-3.5-lightning-free72%377秒69k
NVIDIA gpt-oss-20b(7問)57%24秒42k

4つの無料モデルが、これらの質問で gpt-6-sol と同等の結果を出しました。すべてのモデルが定義箇所をすべて見つけており、間違いは件数を尋ねる質問(誤った数)と、2つのモデルでのリスト問題に限られています。後者のうち1つは、django/ 配下にない docs/ ファイルを追加していました。gpt-6-sol は最速の無料モデルと同じくらい速く、ここでは effort を下げても精度は落ちませんでした。nemotron-3.5-lightning-free は、リスト問題の1問で無関係な文章を出力し、別の1問では10分の制限時間に達しました。スコアリング用ハーネスとすべての生の回答は、benchmarks/multi-repo にあります。

表には実行されたワーカーのみを記載しています。まったく回答できなかったモデル(プロバイダーエラー、または OpenRouter の無料枠に共通する1日のクォータ制限)は省略しています。また、プロバイダーエラーで終了した gpt-oss-20b の2回の実行も省いています。タイムアウトは記載しています。

レビューで仕込まれたバグを見つけ、無害な変更はそのままにできるか? **レビューは仕込まれたバグを見つけられるでしょうか?** バグを実際のコードに反映し(チェック条件を反転、`&&`/`||`を入れ替え、`return`を反転)、React、Django、Kubernetes、そしてPitroom自体に「tidy」という簡素なメッセージでコミットし、`pitroom review`にそのコミットのレビューを依頼しました。29個のパッケージ(バグだけを含むものが14個、バグとその周辺のコメントだけの編集3件を含むものが15個)です。CriticalまたはImportantの指摘が変更ファイルに言及し、変更行から5行以内を引用するか、変更された識別子またはその関数を示した場合に、バグを見つけたと判定します。「正確な行」はより厳しい基準で、3行以内です。

無害な変更をそのままにできるでしょうか? さらに16個のパッケージは、同じ「tidy」というメッセージで1行または2行の比較式が変更されており、一見すると同じですが、コードの動作は変わりません。比較の左右を入れ替え、演算子を反転した変更です(i < nがn > iになるなど)。同じ式になる場合に限っています。これらに対するCriticalまたはImportantの指摘は誤警報です。

ワーカーとモデルバグの検出率正確な行誤警報レビュー数平均時間最長時間
OpenCode nemotron-3-ultra-free100%83%25%(16件中4件)29 + 161分30秒3分29秒
OpenCode space-bunny-free100%100%-292分19秒5分46秒
Codex gpt-6-sol100%100%-938秒52秒
OpenCode big-pickle97%90%0%(16件中0件)29 + 161分45秒6分16秒
OpenCode muse-spark-1.3-contributor-free97%62%-2943秒2分0秒
OpenCode mimo-v2.6-flash-free90%90%13%(16件中2件)29 + 16(4件がタイムアウト)4分36秒8分1秒
OpenCode longcat-2.5-preview-free86%86%-29(1件がタイムアウト)2分53秒8分0秒

ほぼすべてのモデルが、ほぼすべてのバグを見つけました。そのため、バグを見つけられるかどうかではモデル間の差はほとんど分かりません。差が出るのは、無害な変更をそのままにできるかどうかです。big-pickleは誤警報を一度も出しませんでした。nemotron-3-ultraとmimo-v2.6-flashは、それぞれの言葉で変更が何も変えないと説明しながらも、Importantとして指摘しました(「Yoda条件であり、ファイルのほかの部分と一貫していない」)。レビューのテンプレートでは、スタイルに関する指摘はMinorに分類されます。Importantの指摘に基づいて動作するエージェントなら、無害なコミットを取り消していたでしょう。muse-sparkは正しいバグを説明しましたが、引用した行番号が誤っていることがよくありました(正確な行の割合は62%)。ダッシュが付いているモデルは、無害なパッケージを追加した時点ですでに利用できないか、クォータを使い切っていました。Codex gpt-6-solは9件のレビュー後にプランの利用上限に達し、ほかのモデルも省略されたレビューが無料枠の上限に達していたため、未検出として数えていません。各変更はわずか2~5行で、簡単なものです。また、無害な編集はすべて同じ種類(比較式の反転)です。さらに、React、Django、Kubernetesがモデルの学習データに含まれている可能性もあります。ハーネス、編集を無害に保つルール(とそのテスト)、およびすべての生のレビューは、benchmarks/review-bugsにあります。

この結果からは分からないこと

  • 質問とモデルごとに1回だけ実行しているため、ばらつきは分かりません。質問はgrepで答えられる範囲の限定的な検索なので、モデルが設計に関する質問や大規模な編集にどう対応するかは分かりません。また、4つの無料モデルとgpt-6-solがすべて100%を達成したことが示すのは、テストが上位モデルには簡単だということであり、それらが同等だということではありません。
  • 自由形式のタスク(「docs/にあるスペルミスを最大5つ見つける」)は完了しませんでした。19分後、ツール呼び出しが57回に達した時点で停止しました。ワーカーには範囲を限定したタスクを与えてください。
  • 「処理したトークン数」は、ワーカーが読み書きしたトークン数です。同じ読み取り作業をエージェントが自分で行った場合のトークン数は測定値ではなく推定値です。節約量は、エージェントがほぼ同じトークン数を処理したと仮定して算出しています。ワーカーのコストが$0なのは、モデルが無料だからです。
  • 手作業での確認は主要な主張を対象としており、すべての引用を確認したわけではありません。

自分のリポジトリで再現するには、次を実行します:pitroom crew -d <repo> -g bench "<question 1>" "<question 2>" …、続いてpitroom wait -g bench、pitroom show <run>、pitroom savings --modelsを実行します。


プラットフォーム

主なプラットフォームは macOS と Linux です。Windows でも CI で同じテストスイートを実行します(Windows Server、Node 22 および 24、フェイクワーカーを使用。ワーカーの CLI 自体は実行しません)。違いは次のとおりです。

  • Git のガードは、他のプラットフォームと同じ 2 層構成で、Git for Windows に同梱される sh.exe を基盤とします。git 自身の設定(すべての ref 更新を拒否する reference-transaction フックと、どこにも接続しない push URL)は常に有効です。git のシムは分かりやすい拒否メッセージを表示し、add、restore、clean などもブロックします。入口は、シェルの有無にかかわらず git を起動するすべてのプログラム向けの git.exe(Windows に付属する C# コンパイラーで Pitroom がビルドする小さなランチャー)、Git Bash 用の git、およびコンパイラーが見つからない場合の git.cmd です。git.exe はコマンドラインを加工せずに sh.exe へ渡すため、引数は記述どおりに届きます(HEAD^、%cd%、引用符で囲まれていない &)。git.cmd のみを使用する場合、シェルを使わずに git を起動するプログラムはシムを迂回し、設定レイヤーだけが残ります。また、Windows がバッチファイルの起動に使う cmd /c の行では、引用符で囲まれていない & | < > は引き続き作用します(シムが生の行を読み取るため、^ と %name% はそのまま保持されます)。Scoop でインストールした Git も動作します(shims\git.exe をたどって実体に到達し、さらにその sh.exe に到達します)。どの構成が有効かは pitroom doctor で確認できます。CI では Git for Windows を使って検証済みですが、実際の Windows マシン上でワーカーの CLI を使った検証はまだ行っていません。
  • ランチャーは pitroom.cmd です(%USERPROFILE%\.local\bin)。pitroom install を実行したときの Node、または PITROOM_NODE で指定された Node で起動し、別の Node は検索しません。
  • 改行コード。 Pitroom はパッチをバイト単位で比較し、適用します。core.autocrlf はオフにしてください(または、このリポジトリのように .gitattributes で eol=lf を指定してください)。CRLF に変換されたチェックアウト環境での apply はテストされていません。
  • 読み取りスナップショットのファイルは読み取り専用になりません(Windows には POSIX モードがありません)。また、--verify コマンドは cmd.exe で実行され、コマンドが見つからない場合は is not recognized と表示されます。

クイックスタート

Node.js 22.13 以降と、少なくとも 1 つのワーカー CLI が必要です。OpenCode v2 以降(デフォルトのワーカー。無料モデルを利用可能)、Codex CLI、Claude Code、Gemini CLI(ベータ版。API キーが必要です。Google AI Studio から取得してください。Google アカウントでのサインインは利用できなくなりました)、Qwen Code(ベータ版。OpenAI 互換のプロバイダー、DashScope キー、またはローカルモデルを利用できます)、Kilo Code の CLI(ベータ版。npm i -g @kilocode/cli。500 以上のモデルとプロバイダーを利用できます)、または Antigravity CLI(agy。Google アカウントでサインインします。Linux と Windows ではベータ版)です。

1. インストール:エージェントを選択

Claude Code

claude plugin marketplace add ATASTECH/pitroom
claude plugin install pitroom@pitroom

セッション内で /plugin marketplace add ATASTECH/pitroom、続けて /plugin install pitroom@pitroom を実行します。

Codex

codex plugin marketplace add ATASTECH/pitroom
codex plugin add pitroom@pitroom
npm i -g pitroom

Gemini CLI

gemini extensions install https://github.com/ATASTECH/pitroom
npm i -g pitroom

Cursor

npm i -g pitroom
pitroom install --mcp --client cursor

これにより ~/.cursor/mcp.json に pitroom mcp が追加され、そのファイル内の他のサーバーはそのまま残ります。表示されない場合は Cursor を再起動してください。Cursor では、以下で説明する 10 個の MCP ツールを利用できます。スキルは ~/.agents/skills と ~/.claude/skills にリンクされます(--no-skills を指定すると省略されます)。Cursor のドキュメント では、どちらもスキルの読み込み元として挙げられています。ただし、Cursor のセッション内ではまだ実行しておらず、Cursor のフォーラムへの投稿によると、Cursor の CLI(cursor-agent)は ~/.agents/skills を読み込みません。pitroom install --mcp --dry-run を実行すると、まず変更内容を確認できます。

MCP に対応するあらゆるエージェント(Claude Desktop と上記のものも含む) Pitroom は stdio 上で動作する MCP サーバーでもあります。シェルコマンドやスキルの代わりに 10 個のツール(pitroom_run、pitroom_wait、pitroom_show、pitroom_info、pitroom_review、pitroom_audit、pitroom_apply、pitroom_discard、pitroom_revert、pitroom_stop)、実行をリソースとして提供し、4 つのプロンプトを備えています。ツール定義はセッション全体を通じてクライアントのコンテキストに保持されるため、約 1.9k トークンと小さく抑えられています。[MCP Registry](https://registry.modelcontextprotocol.io) には io.github.ATASTECH/pitroom として登録されているため、レジストリを参照するクライアントから見つけられます。npm i -g pitroom` の実行後、Pitroom に見つかったクライアント(Claude Code、Codex、Gemini CLI、Cursor、Claude Desktop)へ自動登録させるには、次のようにします。

pitroom install --mcp               # also links the skills; add --no-skills to skip that
pitroom install --mcp --dry-run     # only say what it would do
pitroom install --mcp --client cursor,claude-desktop

ランチャーはフルパスで登録されます(Claude Desktop などのアプリは PATH なしで起動するためです)。Claude Code、Codex、Gemini CLI にはそれぞれ独自の mcp add コマンドで設定を変更し、ユーザースコープがある場合はそれを使用します。Cursor と Claude Desktop の JSON は、ほかのサーバーに触れずにマージされます(.bak-pitroom のバックアップが作成され、JSON として無効なファイルはそのまま残されます)。すでに登録済みのものはスキップされ、pitroom uninstall で登録を解除できます。登録先は pitroom doctor で確認できます。完了後、クライアントを再起動してください。手動で設定する場合は、次のようにします。

claude mcp add pitroom -- pitroom mcp
codex mcp add pitroom -- pitroom mcp
gemini mcp add pitroom pitroom mcp

または、Cursor(~/.cursor/mcp.json)、Claude Desktop(claude_desktop_config.json)などの場合は、次のようにします。

{ "mcpServers": { "pitroom": { "command": "pitroom", "args": ["mcp"] } } }

各ツールは対応する pitroom コマンドを実行するため、CLI のルール(権限プロファイル、git ガード、分離、読み取りスナップショット)はすべてそのまま適用されます。実行は waitSeconds(デフォルトは 50)秒まで待機し、その後は ID とともに「実行中」の状態で返され、pitroom_wait で待機を続けられます。クライアントのツールタイムアウトより短い値にしてください。サーバーは起動時のディレクトリで動作します。stdio の場合はクライアントのディレクトリ、または -d DIR で指定したディレクトリです(Claude Desktop は別の場所で起動するため、"args": ["mcp", "-d", "/path/to/project"] を指定してください)。ツールの dir 引数を使えば、呼び出しごとに別のディレクトリを指定できます。

MCP サーバーの詳細:進捗、キャンセル、リソース、プロンプト、HTTP - **ライブビュー。** 数秒経っても実行が続いている場合、ダッシュボードがまだ起動していなければ起動し、結果にアドレスが含まれます:「すべての実行のライブビュー:http://127.0.0.1:7878/」。サーバーの指示では、エージェントにアプリ独自のブラウザーペイン(Claude Code と Codex のアプリには備わっています)で開くか、ユーザーに渡すよう伝えます。システムブラウザーは開きません。すぐに完了する実行では何も起動しません。設定の `"mcpDash": false`(または `PITROOM_MCP_DASH=0`)で無効にできます。 - **進捗。** 呼び出しが実行の完了を待つ間、進捗トークンを送ったクライアントには数秒ごとに `notifications/progress` が送られます(「running · read · 12s · 3 steps, 2 tool calls · last: …」)。進捗を受信するたびにタイムアウトをリセットするクライアント(プロトコルでは可能ですが、すべてのクライアントが対応しているわけではありません)は、長時間の実行を途中で諦めずに待つことができます。`pitroom_run`、`pitroom_review`、`pitroom_audit` の呼び出しを**キャンセル**すると、その呼び出しが開始した実行が停止します(キャンセルされた `pitroom_wait` では待機のみが停止します)。 - **リソース。** 最新の実行は `pitroom://run/`(レポート)として一覧表示され、ファイルを変更した実行については `pitroom://run//patch`(正確な差分)も表示されるため、クライアントは会話に添付できます。クライアントは実行を**サブスクライブ**(`resources/subscribe`)でき、状態が変わると通知(`notifications/resources/updated`)を受け取ります。また、最新の実行が変わるとすべてのクライアントに通知(`notifications/resources/list_changed`)が送られるため、ポーリングは不要です。HTTP では、これらはセッションのイベントストリーム(GET)で届きます。 - **プロンプト。** `research`、`implement`、`review`、`crew` は、それぞれのタスクで Pitroom を使う方法を説明します(Claude Code では `/mcp__pitroom__research` などとして表示されます)。また、すべてのスキルは同じ名前のプロンプト(`using-pitroom`、`pitroom-research` など)なので、スキルに対応していないクライアントでも同じガイダンスを利用できます。サーバーの指示では、エージェントにツールと併せてスキルを使うよう伝えます。 - **実行以外の機能:** `pitroom_run` は `tasks`(独立したタスクを並列実行し、それぞれにワーカーを1つ割り当てます)と `continue`(同じワーカーセッションでのフォローアップ)を受け取ります。`pitroom_info` は、`topic` によって何も変更せずに情報を報告します。指定できる値は `runs`、`history`(再度尋ねる前に以前の回答を探します)、`stats`、`models`(ワーカーを選びます)、`savings`、`prices`(プライマリモデルと使用中の各ワーカー、または指定した `worker` の100万トークンあたりの米ドル価格)、`cooldown`、`config`、`doctor` です。`cooldowns` を指定して `pitroom_stop` を実行すると、レート制限されたモデルの再試行を試みます。 - **HTTP 経由。** `pitroom mcp --http [--port N]`(デフォルトは7117)は、URL に接続するクライアント向けに、同じツールを `http://127.0.0.1:7117/mcp` で提供します。たとえば、`claude mcp add --transport http pitroom http://127.0.0.1:7117/mcp --header "Authorization: Bearer $(cat ~/.local/state/pitroom/mcp-token)"` を使います(起動時にコマンドが表示されます)。これはローカルサービスです。127.0.0.1 のみで待ち受け、ベアラートークン(初回起動時に生成され、`/mcp-token` に所有者のみがアクセスできる権限で保存されます。`PITROOM_MCP_TOKEN` で設定することもできます)が必要です。また、ローカルではない Host や Origin は拒否するため、ウェブページからは使用できません。トークンを持つ人は誰でも、あなたとしてワーカーを実行できるため、トークンは非公開にしてください。起動したディレクトリで動作します(起動時に表示されます。別のディレクトリを使うには `-d DIR` を指定します)。クライアントごとに独自のセッションがあり、進捗を要求する呼び出しにはイベントストリームで応答します。セッションの終了またはサーバーの停止で終了するのは待機のみで、実行は停止しません。`pitroom_wait` または CLI で結果を取得してください。`pitroom install --mcp` は、トークンも実行中のプロセスも不要な stdio コマンドを登録します。

その他のエージェント(通常のシェル)または CLI のみ

npm i -g pitroom
pitroom install
パス利用できるもの
Claude Code plugin14 個のスキル、Pitroom を紹介するセッション開始時のフック、各 pitroom コマンドの実行後に表示されるカード。
Gemini CLI extension14 個のスキルと、Pitroom を紹介する短いコンテキストファイル(Gemini から拡張機能の確認を求められます)。Gemini CLI は別途 ワーカー としても動作します。詳しくはワーカーをご覧ください。
MCP serverMCP サーバーを利用できるすべてのエージェント向けの、上記の 9 個のツール。スキルはありません。ツール自体が使い方を説明し、サーバーがエージェントに起動方法を伝えます。
Codex plugin14 個のスキル、Pitroom を紹介するセッション開始時のフック(インストール済みのスキルが多く、Codex がスキルの説明を省略しても、Pitroom が認識されるようにします)、各 pitroom コマンドの実行後に表示されるカード。Codex からフックを一度だけ信頼するよう求められます。フックは pitroom を呼び出します。これは npm から取得できます(npm i -g pitroom)。
npm + pitroom installCLI と、~/.agents/skills および ~/.claude/skills にリンクされるスキル。

複数ではなく、いずれか 1 つの方法を選んでください。スキルが二重に読み込まれると、doctor が警告します。プラグインだけでは pitroom が PATH に追加されないため、自分で実行したい場合は npm からもインストールしてください(watch、models、savings、ステータス行)。

2. セットアップを確認する
pitroom doctor --probe

ワーカーの CLI、モデル、権限、スキルを確認し、ライブでの往復処理を 1 回実行します。

3. 使用する

Pitroom はツールボックスであり、決められた手順ではありません。役立つ場面でエージェントが使用するほか、次のように明示的に依頼することもできます。

pitroom を使ってセッションの作成方法と無効化方法を調べ、修正案を提案してください。 これを pitroom のクルーに分担してください。auth、billing、uploads を監査し、入力検証の不足を確認してください。

または、自分でワーカーを起動して、その実行結果を確認します。

pitroom "Which files read the session cookie? Cite file:line."
pitroom -W gemini:gemini-3.8-flash "…"   # the same on another worker (see Workers below)
pitroom savings          # what all your runs saved so far
pitroom models           # what each worker offers, what it costs you, what it used
更新とアンインストール
# update
claude plugin update pitroom@pitroom
codex plugin marketplace upgrade pitroom
npm i -g pitroom@latest

# uninstall
claude plugin uninstall pitroom@pitroom
codex plugin remove pitroom@pitroom
pitroom uninstall && npm rm -g pitroom

モード

フラグ用途作業ツリー
read(デフォルト)調査、コードの特定、レビュー変更なし。編集ツールは拒否されます
isolate-iまずレビューしたいコード変更pitroom apply まで変更なし
write-w手早く直接編集ただちに編集されます。pitroom revert で正確に元に戻せます

読み取りスナップショット。 ディレクトリに機密情報らしきファイルがある場合、read 実行では、機密情報らしきファイルと Git の無視対象ファイルを除き、プロジェクトの現在の状態(未コミットおよび未追跡のファイルを含む)を Git オブジェクトから作成したスナップショットとして読み取ります。スナップショットは状態ごとに一度だけ作成され、その状態に対するすべての read 実行で共有され(20 人のワーカーでもスナップショットは 1 つです)、3 日後または pitroom clean によって削除されます。ファイルがコピーし戻されることはありません。read 実行から取り込むものはありません。ファイルは読み取り専用で、ワーカーが参照するパスはプロジェクト内のパスに戻されます。機密情報らしきファイルがない場合は何も変わらず、ワーカーはその場で実行されます。--in-place(または設定の "readIn": "project")を指定すると、たとえばビルド出力が必要なタスクなどで、ディレクトリ自体を読み取ります。"readIn": "snapshot" は常にスナップショットを使用します。

回答キャッシュ。 同じコードに対して同じ read の質問をすると、ワーカーを実行せずに、以前の回答がすぐに返されます。pitroom ⟲ cached answer · the same question on the same code as run … · no worker ran。「同じコード」とは厳密な意味で、コミットとすべての作業ファイル(未コミットおよび未追跡のファイルを含む。Git の無視対象ファイルはコードではありません)を指します。そのため、編集を行うと新しい質問になります。妥当性が確認された回答(実行が完了し、すべてのファイルと行番号の参照が正しく、監査で異議が出なかったもの)のみが再利用され、有効期間は 7 日間です(設定の "cacheDays" で変更でき、0 で無効化するか、PITROOM_CACHE_DAYS を設定できます)。追加質問、Web 実行、プランタスク、レビュー、監査、--verify 実行、並列作業(クルー)、変更ではキャッシュの回答は使用されません。また、--fresh を指定すると必ずワーカーに質問します(その回答は以降の再利用対象になります)。「同じコード」に含まれないものは、Git の無視対象ファイル(ビルド出力、インストール済みの依存関係)と、回答したワーカーまたはモデルです。質問がそれらに依存する場合は、--fresh を使用してください。

pitroom run "Find every place we build SQL strings by hand; file:line and risk"
pitroom run -i --link node_modules --verify "npm test" "Fix the off-by-one in paginate() and add a test"
pitroom run -w "Rename getUserById to findUserById in src/ and fix imports"
pitroom run --continue last "Now handle the empty-page case too"

長時間のジョブ:--bg はすぐに戻ります。pitroom wait <id> は最大 9 分間待機します(10 分のツール実行制限があるエージェント向けに設計されています。終了コード 75 は「wait を再度呼び出してください」を意味します)。


ワークフロー

Pitroom は、superpowers をベースにした完全な開発手法をスキルとして提供します。サブエージェントを低コストの作業者として活用するためのものです。エージェントがあなたと一緒にブレインストーミングと計画を行い、その後、作業者が入力を担当する間に、エージェントが計画をタスクごとに実行し、2つ目のモデルがレビューします。

ワークフローの手順

ワークフロー:ブレインストーミングを行い、各タスクに作業者の階層を割り当てた計画を作成します。次に、タスクごとに作業者が分離されたコピーで実装し、別のモデルがレビューします。承認されるまで修正を繰り返し、その後、エージェントが適用、テスト、コミットを行います。最後にブランチ全体をレビューして仕上げます。

手順スキルコマンド
設計pitroom-brainstorming仕様を docs/pitroom/specs/ に書き込みます
計画pitroom-writing-plans計画を docs/pitroom/plans/ に書き込み、各タスクに作業者の階層を指定します
実装pitroom-driven-developmentpitroom run -i --plan PLAN --step N
レビューpitroom-reviewpitroom review <run>(別のモデルを使う読み取り専用のレビュアー)
修正pitroom-receiving-reviewpitroom run --continue <run> "…"(再レビューでは修正内容だけを確認します)
適用pitroom-driven-developmentpitroom apply <run>、あなたのテスト、あなたのコミット
ブランチレビューpitroom-reviewpitroom review --range main..HEAD --plan PLAN
完了pitroom-finishingマージ、プルリクエスト、または継続のいずれかを選択します。確認を求められ、自動では実行されません

レビュー用パッケージには、レビュー対象の差分と前後10行のコンテキストが含まれます。レビュアーの CLI は、その内容を作業者のモデルプロバイダーに送信します。Pitroom は内容をフィルタリングしません。レビュー対象の範囲にコミットされたシークレットも、そのまま送信されます。

階層を使って、計画のタスクを作業者に割り当てます。"tiers": {"cheap": "opencode", "standard": "codex", "capable": "claude"}。pitroom plan status PLAN は、実行記録から計画の進捗状況を再構築します(コンテキストの圧縮後も維持されます)。また、pitroom plan note を使うと、完了内容や判断をリポジトリの外に保存できます。


監査

Pitroom はワーカーが引用した各 path:line を確認します。これによって行が存在することは証明できますが、その行についての主張が正しいことまでは証明できません。監査では、別のワーカーにプロジェクトを照合して回答の重要な主張を検証させ、異議のある主張を挙げながら AGREE、PARTIAL、DISAGREE のいずれかを返させます。

pitroom audit <run>            # now: re-check one read run (-W picks the auditor)
pitroom run --audit "…"        # re-check this run's answer when it finishes (--no-audit skips it)

または、設定に "audit": 0.1 を指定する(あるいは PITROOM_AUDIT=0.1 を設定する)と、約10回に1回の読み取り実行が、エージェントからの依頼なしにバックグラウンドで監査されます。同じ実行がサンプルに含まれるかどうかは常に一定です。

コスト、制限、判定の表示場所
  • コスト: デフォルトでは無効です。監査は監査担当者による読み取り実行なので、ワーカー自身が使うトークン数に率を掛けた程度のコストがかかります。audit ティアが使われ、設定されていない場合は cheap ティアが使われます。つまり、cheap ティアが無料モデルなら無料です。監査によって実行が遅れたり、失敗したりすることはありません。
  • 監査担当者そのものではありません: 監査担当者が、回答を生成したワーカーやモデルと同じになることはありません。別のワーカーが設定されていない場合、監査は行われません(pitroom doctor にその旨が表示されます)。監査対象は読み取り実行のみです。変更には pitroom review を使います。
  • 表示場所: 回答のカードと pitroom show に、判定と異議のある主張が表示されます。Stats タブには、監査された回答のうち確認済みとなった数がワーカーごとに表示されます。監査は実行回数に含まれず、何も保存しません。
  • 保証ではなく、サンプルです。 監査担当者もモデルであり、同じ盲点を持つことがあります。また、数回の監査だけではワーカーについてほとんどわかりません。DISAGREE は確認するきっかけとして、AGREE は判断材料のひとつとして扱ってください。

修正("auditFix": true、または PITROOM_AUDIT_FIX=1。デフォルトでは無効)。監査で PARTIAL または DISAGREE と判定され、異議のある主張が示された場合、回答はそれを生成したワーカーに戻されます。ワーカー自身のセッション(読み取った内容が保持されています)で、異議のある主張をファイルと照合して確認し(監査担当者が間違っている可能性もあります)、受け入れた主張を OPEN ISSUES の下に示したうえで、回答全体をもう一度返すようフォローアップします。修正は1回のみで、修正が再度送り返されることはありません。監査対象の実行のカードと pitroom show に、修正実行(── fix: …)が表示されます。この処理には、すべての組み込みワーカーがセッションを続行できる必要があります。

重点サンプル("auditFocus": true、または PITROOM_AUDIT_FOCUS=1。デフォルトでは無効)。audit の率を設定すると、監査で多くの問題が見つかる対象にサンプルが偏るようになります。何かの全項目、リスト、または件数を尋ねる質問では率が2倍になり、監査済み回答のうち確認済みとなった割合が半分未満のワーカー(30日以内に3回以上監査済み)ではさらに2倍になります。直近5回以上がすべて確認済みのワーカーでは率が半分になります。--audit と --no-audit が変更されることはありません。実行には、適用された確率とその理由が記録されます。

評価

自分のコードを対象にした、自分専用のベンチマークです。正解がわかっている質問を、比較したいワーカーに出し、採点します。

pitroom eval questions.json -W opencode -W codex:gpt-6.1-sol    # every question to every worker, as one group
pitroom eval questions.json --json                               # the same as JSON: truths, rows, a summary per worker
{
  "questions": [
    { "id": "def", "kind": "definition", "task": "Which file and line define `export function loadConfig(`? The SUMMARY line must be only path:line.", "truth": { "grep": "^export function loadConfig\\(", "regex": true, "dir": "src" } },
    { "id": "count", "kind": "count", "task": "How many files under src/ contain the word effective? The SUMMARY line must be only the number.", "truth": { "grep": "effective", "word": true, "dir": "src" } },
    { "id": "list", "kind": "set", "task": "List every file under src/ that mentions node:sqlite. The SUMMARY line must be only the paths, separated by commas.", "truth": ["src/cli/commands.ts", "src/core/history.ts"] }
  ]
}

正解は記録しておく("path:line"、数値、パスのリスト)か、評価の開始時に git grep で検索します(grep と、任意で dir、word、regex、exclude を指定します)。そのため、コードが変更されても正解は適切に保たれます。採点方法はマルチリポジトリベンチマークと同じです。定義は path:line が完全一致すれば1点、ファイルが正しければ0.5点です。件数は数値が完全一致した場合のみ得点になります。リストは、SUMMARY(なければ DETAILS)から取得したパスを使って F1 スコアを算出します。各ワーカーはそれぞれ独立して回答します。フォールバック、監査、キャッシュ済み回答はありません。実行は通常のグループとして扱われるため、pitroom watch -g、ダッシュボード、履歴に表示されます。

クルー

無料のOpenCode Zenモデルで、一度に4つの質問を処理する、このリポジトリ上での実際のクルーです。

pitroom crew -g v04-demo \
  "Where does Pitroom enforce the maxParallel queue, and how does a waiting run react to pitroom stop? Cite file:line." \
  "How does the git guard shim resolve git aliases? Cite file:line." \
  "Which fields of OpenCode v2 events does the parser read for token usage, refused tool calls and errors? Cite file:line." \
  "How does pitroom apply -g decide which patches to apply and in what order? Cite file:line."
pitroom watch -g v04-demo --json   # what the primary agent follows, one line per change:
クルーが出力する内容:エージェントが追うストリームとステータステーブル
{"event":"started","run":"20260930-102812-a65d","mode":"read","task":"Where does Pitroom enforce the maxParallel queue, and how d…"}
{"event":"progress","run":"20260930-102812-a65d","steps":3,"tools":4,"last":"grep SIGINT|SIGTERM|stop.*queued|stopped.*queued"}
{"event":"done","run":"20260930-102812-a563","time":"21s","worker":"opencode (default model)","summary":"The shim resolves `alias.<sub>` via `real git config --get` in a loop …","refs":"5/5"}
{"event":"all-done","runs":4,"ok":4,"failed":0}
$ pitroom status -g v04-demo
RUN                   STATE  MODE  TIME  STEPS  WORKER                    NOW / RESULT
20260930-102812-0c0d  done   read  30s   5      opencode (default model)  Parser `src/backends/opencode/events.ts` reads …
20260930-102812-7642  done   read  27s   5      opencode (default model)  `pitroom apply -g NAME` applies finished isolat…
20260930-102812-a563  done   read  21s   2      opencode (default model)  The shim resolves `alias.<sub>` via `real git c…
20260930-102812-a65d  done   read  39s   7      opencode (default model)  maxParallel is enforced by file-based slots (`s…

人間も pitroom watch -g NAME で同じテーブルをリアルタイムに確認できます。pitroom wait -g NAME --brief はワーカーごとに1行を出力し、pitroom show <run> は完全な回答を表示します。

変更を行う場合、pitroom crew -i … は各ワーカーに現在の状態の独立したコピーを用意し、pitroom apply -g NAME はパッチを順番に適用して、最初の競合で停止します。同時に実行されるのは最大 maxParallel 個のワーカー(デフォルトは20、最大30)で、残りはキューに入ります。リポジトリごとに --write の実行は一度に1つだけ許可されます。pitroom stop -g NAME は実行中およびキューに入っているワーカーを停止します。


スキル

14個のスキル
スキルエージェントでの用途
using-pitroomPitroomでできることと、そのメリットが得られる場面を確認します(プラグインによってセッション開始時に挿入されます。任意です)
pitroom-brainstormingコードを書く前に、アイデアを承認済みの設計にまとめます
pitroom-writing-plansタスクごとのワーカー階層を含む、タスク単位の計画を作成します
pitroom-driven-development計画を実行します:タスクごとにワーカーを割り当て、別のモデルでレビューし、修正を繰り返し、適用してコミットします
pitroom-worktrees作業用のブランチを独立させます
pitroom-tdd自分自身と、作業を依頼するワーカーのために、テストを先に書きます
pitroom-debuggingワーカーに証拠を集めさせて、根本原因を特定します
pitroom-verification完了を宣言する前にチェックを実行します
pitroom-review別のモデルに変更、修正ラウンド、ブランチ、またはPRをレビューしてもらいます
pitroom-receiving-review技術的な厳密さをもって、レビューの指摘を検討します
pitroom-finishingユーザーの選択に応じて、マージ、PRの作成、またはブランチの維持を行います
pitroom-research読み取り専用ワーカーを通じてコードを調査、把握、または説明します
pitroom-implement独立したコピー上で、単発の変更を行います
pitroom-crew独立した作業を並列ワーカーに分割し、結果を統合します

コマンド

すべてのコマンドと終了コード
pitroom run [-r|-w|-i] [-W WORKER] [-m MODEL] [-d DIR] [-f FILE]… [-t 30m] [--verify CMD] [--link a,b] [--bg] "task"
pitroom run --continue <run|last> "follow-up"
pitroom crew [-i] [-g NAME] "task 1" "task 2" …   (or --task-file with --- separators)
pitroom run -i --plan PLAN --step N [--tier T] ["notes"]
pitroom review [run | --range A..B [--plan PLAN]] [--tier T | -W T] [--bg]
pitroom audit RUN [-W worker]
pitroom eval QUESTIONS.json [-W worker]… [--json]   your questions with known answers, scored per worker
pitroom mcp [-d DIR] [--http [--port N]]   # serve Pitroom as MCP tools on stdio, or over HTTP on 127.0.0.1 (bearer token)
pitroom cooldown [--clear]
pitroom plan status PLAN [--json] · pitroom plan note PLAN "Task N: …"
pitroom status|wait|watch [run… | -g NAME]        wait: --any --brief --timeout · watch: --json|--brief --interval
pitroom dash [--detach] [--port N] [--open] [--stop]   a live page of the runs on 127.0.0.1
pitroom history [TEXT] [--model M] [--state S] [--since 30d] [--limit N] [--json]   finished runs, searchable
pitroom history stats [--since 30d] · pitroom history import   per worker and model · take in older runs
pitroom show [run]                                --patch --events --full --json
pitroom apply [run | -g NAME] · pitroom discard|revert [run] · pitroom stop [run | -g NAME]
pitroom ls [--running] [-g NAME] · pitroom clean [--days 14] [--yes]
pitroom savings [--since 7d|30d|all] [--models] [--card file.svg] [--badge]
pitroom models [worker] [--all] [--json]      models, effort levels, your costs, your usage
pitroom statusline [--then CMD] · pitroom hook-card
pitroom doctor [--probe] · pitroom config · pitroom init [--model ID] [--fallback A,B] [--yes] [--force] · pitroom install [--copy] [--force] [--mcp [--client A,B] [--no-skills] [--dry-run]] · pitroom uninstall

終了コード:0 成功 · 1 ワーカー失敗 · 2 使用方法 · 3 拒否/セットアップ · 4 タイムアウト · 5 読み取り専用違反 · 6 検証失敗 · 75 実行中

履歴
履歴を検索する

完了したすべての実行は、SQLiteデータベースにも記録されます(Pitroomの状態ディレクトリ内の history.db。Node組み込みの node:sqlite を使用し、インストールは不要です)。タスク、ワーカーとモデル、時刻、トークン、節約量、ワーカーが行った手順、回答、差分が保存され、検索できます。

pitroom history "login bug"            # full-text search over the task, the answer and the steps
pitroom history --state problem --since 7d
pitroom history stats --since 30d      # runs, success rate, average time and tokens per worker and model

実行中は、未加工のイベントストリームが通常のファイルとして保存されます(クラッシュ後も残る、最もシンプルな方法です)。終了すると、ストリームは圧縮され、標準エラーのログは成功しなかった実行に限って保持されます。pitroom clean は古い実行ディレクトリを削除しますが、履歴は保持されるため、pitroom show <run> で引き続きレポート、手順、パッチを表示できます。履歴機能ができる前の実行は、pitroom history import で取り込まれます(最初の pitroom history と pitroom dash の実行時にも取り込まれます)。ファイルが引き続き情報源となるため、データベースを削除しても、ディスク上に残っている実行については history import で再構築できます。

### Pitroom の動作を見る
ステータスラインとフックカード(およびアプリで代わりに表示されるもの)

2 つの設定により、エージェントが言及するかどうかにかかわらず、すべての委任を確認できます。ステータスラインには実行中のワーカーと今週の節約額が表示されます(--then を使うと、独自のステータスラインが先に表示されます)。エージェントが実行する各 pitroom コマンドの後には、フェーズごと(開始、結果を伴う完了、適用)にカードが表示されます。プラグインはカードフックを登録します。pitroom install を使う場合は、両方を ~/.claude/settings.json に追加します。

{
  "statusLine": { "type": "command", "command": "pitroom statusline --then 'your-own-statusline'" },
  "hooks": {
    "PostToolUse": [{ "matcher": "Bash", "hooks": [{ "type": "command", "command": "pitroom hook-card", "timeout": 10 }] }]
  }
}

Claude Code と Codex のアプリでは、フックメッセージもステータスラインも表示されません。これらのアプリでは、セットアップ不要で使える方法が 2 つあります。

  • pitroom dash --detach を実行すると、3 つのタブを備えたライブダッシュボードのアドレスが表示されます。ライブ(実行中および最近の実行をアニメーション付きカードで表示します。カードをクリックすると、タスク、ワーカーの作業手順、結果、差分、詳細を確認できます)、履歴(Pitroom がこれまでに実行したすべての内容を検索、フィルタリングできます。各実行は同じカードとして開きます)、統計(ワーカーおよびモデルごとの成功率、時間、トークン、節約額を表示します)。読み取り専用で、127.0.0.1 のみで待ち受け、1 時間リクエストがないと自動的に停止します(pitroom dash --stop を実行すると、より早く停止できます)。ブラウザーまたはアプリ内のブラウザーペインで開きます。スキルは、エージェントがバックグラウンドでワーカーを実行するときにダッシュボードを起動し、アドレスを知らせるよう指示します。
  • pitroom watch -g NAME --brief を実行すると、ワーカーの開始時にカードの行が 1 行、終了時にもう 1 行表示されます。Claude Code では、エージェントが Monitor ツールを通じて実行し、行がアプリに表示されます。Codex では、コマンドの出力ブロックが処理に合わせて更新されます。

仕組み

実行の流れ:プライマリエージェントが Pitroom CLI に委任し、Pitroom CLI が読み取り、分離、または書き込みモードでワーカー CLI を起動します。イベントに続いて、回答、正確な差分、実行記録が戻ってきます。

Pitroom がすべてのワーカーに対処するヘッドレス実行の問題

すべてのワーカーで次の問題に対処します。opencode run は開いた stdin パイプ上で永久にブロックします。ask 権限によりヘッドレス実行が停止します。デフォルトの出力には ANSI とバナーが含まれます。また、OpenCode v2 では、通常の run が共有バックグラウンドサービスに接続するため、実行ごとの権限と git ガードが適用されません。Pitroom は stdin を閉じ、許可/拒否のみのプロファイルを使用し、--format json を解析し、常にプライベートな --standalone サーバーを実行します。


ワーカー

ワーカーはターゲットで指定します:backend[:model]。

pitroom run "…"                                          # preferred worker (config "worker", default opencode)
pitroom run -W opencode:opencode/space-bunny-free "…"    # a specific backend and model
pitroom run -W 'codex:#low' "…"                          # the model from config "models" (not Codex's default), low reasoning effort
pitroom run --effort high "…"                           # model#level (Codex, Claude Code, OpenCode; Gemini CLI has no effort option)
pitroom run -W claude:haiku "…"                          # Claude Code on a cheap model
pitroom run -W gemini:gemini-3.8-flash "…"               # Gemini CLI (beta; needs a Google AI Studio API key)
pitroom run -W qwen:qwen3-coder-plus "…"                 # Qwen Code (beta; your provider from ~/.qwen/settings.json)
pitroom run -W kilo:kilo/<model> "…"                      # Kilo Code's CLI (beta; any model from `kilo models`)
pitroom run -i -W antigravity "…"                         # Antigravity CLI (your Google account, models from `agy models`; beta on Linux and Windows)
pitroom run -m nvidia/z-ai/glm-5.3 "…"                   # another model on the preferred worker
ワーカー状態読み取り専用を適用する仕組みレシートのコスト備考
OpenCode (v2+)✅実行ごとの権限ルール報告あり実行ごとにプライベートな --standalone サーバーを使用します
Codex CLI✅OS サンドボックス(read-only / workspace-write)トークンのみcodex login を実行します。ワーカーでは ~/.codex/config.toml は無視されます(その MCP サーバーはサンドボックスの外で実行されます)。モデルでは #effort を指定します
Claude Code✅ツールの許可リスト(--restricted --safe-mode、dontAsk)報告ありclaude auth login を実行します。デフォルトでは Opus が使われることが多いため、-W claude:haiku を推奨します
Gemini CLIベータ--approval-mode plan と Pitroom のポリシールールトークンのみGoogle AI Studio の API キーを使用します(gemini でサインインするか、GEMINI_API_KEY を設定します。Google アカウントでのサインインは Google に拒否されます)。ワーカーは、ユーザーのフック、MCP サーバー、スキルを含まないプライベートな Gemini ホームで実行されます。Gemini 0.62 ではシークレットファイルのルールは適用されませんが、シークレットらしきファイルがある状態で読み取り実行すると、それらを含まないクリーンなスナップショットが読み込まれます。モデルを固定してください(例:-W gemini:gemini-3.8-flash)。--continue は動作します(セッション ID を使用します。注意事項を参照してください)
Qwen Codeベータ--approval-mode plan。編集は作業ディレクトリ内に限られ、それ以外は拒否されますトークンのみスクリプト化されたモデルを使って Qwen Code 0.25 で確認済みですが、実際のプロバイダーでは未確認です。~/.qwen/settings.json のサインイン情報とモデルを使用します(OpenAI 互換プロバイダー、DashScope、ローカルモデルに対応)。--safe-mode を使うと、ユーザーの QWEN.md、フック、スキル、MCP サーバーは使用されず、実行のメモリを CLI が書き込むこともありません。要求されると .env を読み込むため、シークレットらしきファイルがある状態で読み取り実行するとクリーンなスナップショットが読み込まれます。注意事項を参照してください
Kilo Codeベータ実行ごとの権限ルール(OpenCode のプロファイル)報告あり@kilocode/cli(OpenCode のフォーク)の CLI です。KILO_CONFIG_CONTENT を介して同じ pitroom-read / pitroom-write プロファイルを使用し、ユーザーのサインイン情報とプロバイダーはそのまま使います。ワーカーはプライベートな状態フォルダーを使うため、プロファイルを無視する稼働中の kilo daemon に接続されることはありません。スクリプト化されたモデルを使って Kilo 7.8.8 で確認済みですが、実際のプロバイダーでは未確認です。注意事項を参照してください
Antigravity CLImacOS。Linux と Windows ではベータ読み取り実行のたびに独自の読み取り専用スナップショットを使用します(agy にはヘッドレス実行用の読み取り専用モードがありません)トークンのみmacOS の agy 1.4.7 で確認済み(scripts/check-worker.mjs)。Linux と Windows では未確認です。変更には -w ではなく -i を使用してください(deny ルールはパターンであり、git ガードと分離されたコピーの上位レイヤーです)。ワークスペースごとに専用のホームで実行されるため(agy は ~/.gemini からのみ設定を読み込みます)、コマンドからユーザーのドットファイルは参照できません。回答のない実行(拒否されたコマンドによって、回答なしでターンが終了し、終了コード 0 になる場合)は失敗です。Google アカウントでサインインします(Gemini CLI が現在拒否しているものです)。agy のターミナルサンドボックス内でシェルを実行します(macOS、Linux)。これらのワーカーはウェブにアクセスできません。フォールバックを用意してください。クォータはアカウントごとです。注意事項を参照してください
モデル、コスト、作業量
モデル、コスト、作業量のレベル

pitroom models では、各ワーカーが提供する内容(Codex は独自のモデルキャッシュから、Claude Code はエイリアスから、OpenCode は opencode models から、Gemini CLI は組み込みの名前から)、各モデルで指定できる推論レベル、ユーザーが設定したコスト、実際の実行で使われた内容が表示されます。

worker  model        effort (* default)                 cost  runs  avg tokens  $/run   in use
codex   gpt-6.1-sol  low*/medium/high/xhigh/max/ultra   2     20    174k        -       tier standard
codex   gpt-6-sol    low/medium*/high/xhigh/max/ultra   1     1     24k         -       -
claude  haiku        low/medium/high/xhigh/max          ?     -     -           -       -

Pitroom はベンダーの価格情報を独自に持たず、priceFeed を有効にしない限り(設定の説明を参照)、価格情報を取得しません。そのため、コストはユーザーが入力した値です。設定には任意の単位で "costs": {"codex:gpt-6-sol": 1, "codex:gpt-6.1-sol": 2} と記述します(値は比較にのみ使われます。Codex と Gemini の利用明細に記録されるドル価格は workerPrices に設定します。設定の説明を参照)。pitroom doctor は使用中のモデルのコストを表示し、同じワーカーのより安価なモデルを設定している場合はその旨を知らせます。推論レベルだけを指定したターゲット(codex:#low)では、models のモデルが使われます。Codex または Claude Code のワーカーでモデルを固定していない場合は警告が表示されます。ベンダー独自のデフォルトモデルが使われますが、それは変更される可能性があり、コストが高くなる場合もあるためです。--effort LEVEL は1回の実行に推論レベルを設定します。エージェントは pitroom models からモデルとレベルを選びます(条件に合う最も安価なもの:検索には low、通常の変更には medium、レビューには high)。

フォールバックはバックエンドをまたいで利用できます(例:"fallback": ["codex:#low", "opencode"])。レート制限中、ログアウト中、またはモデルが見つからないワーカーは、タスクを次のワーカーに引き継ぎます。ワーカーの起動後に制限に達した場合(Codex または Claude のプランの利用上限、Antigravity のクォータなど)も、実行を失敗させるのではなく、次のワーカーがタスクを引き継ぎます。編集(-i、-w)は同じツリーで続行され、次のワーカーには、前のワーカーがすでに変更したファイルと、最初からやり直すのではなく作業を完了するよう伝えられます。読み取りの場合は最初からやり直します。両方のワーカーが使用したコストが実行コストになります。監査では別の監査ワーカー(監査層と低コスト層、フォールバック、ワーカー)が使われ、監査対象のワーカーは使われません。フォローアップ(--continue)は常にセッションを所有するワーカーで行われます。アダプターの作成方法については、[docs/backends.md](docs/backends.md) を参照してください。「rate limited」(日次クォータの超過、プロバイダーの過負荷など)と報告したモデルは、メッセージで指定された時間(「retry in 4h」、「try again at 8:56 PM」、「resets 7:40pm (Europe/Istanbul)」)または推定時間(過負荷なら20分、利用枠の超過なら1時間、日次クォータなら4時間)の間、記録されます。フォールバックが残っている場合、次の実行ではそのモデルがスキップされるため、毎回失敗するまで待つ必要はありません。pitroom cooldown ではスキップ中のモデルとスキップが解除される時刻が表示されます。--clear を指定すると再試行し、doctor` にも同じ情報が表示されます。


設定

環境変数
EnvDefault
PITROOM_WORKERopencode優先するワーカーターゲット:backend[:model]
PITROOM_MODELワーカーのデフォルト優先するワーカーのモデル
PITROOM_FALLBACKなしモデル/プロバイダーのエラー時に切り替えるターゲット(カンマ区切り)
PITROOM_TIMEOUT30m1回の実行のタイムアウト
PITROOM_MAX_PARALLEL20同時に実行するワーカー数(最大30)。超過分はキューに入ります
PITROOM_PRIMARYsonnet節約額の見積もりに使う価格プリセット:sonnet、opus、haiku、gpt-5
PITROOM_PRICEカスタムのプライマリ価格。100万トークンあたりの USD 価格:"in,out[,cachedIn]"
PITROOM_HOME~/.local/state/pitroom実行記録と台帳の保存先
PITROOM_NO_SECRET_WARNING1 に設定すると、ワーカーのディレクトリにある .env ファイルと秘密鍵に関する警告を停止します
PITROOM_<WORKER>_BINPATH 上ワーカー CLI へのパス(例:PITROOM_OPENCODE_BIN)
または、デフォルト値を `~/.config/pitroom/config.json` に設定できます(フラグと環境変数が引き続き優先されます)。`pitroom config` では、すべての有効な値とその設定元を確認できます。`pitroom init` は、利用可能なワーカー CLI と OpenCode モデルからスターター設定を提案します(無料モデルのフォールバックチェーン、複数の CLI がインストールされている場合はティアも提案します)。ただし、`--yes` を指定した場合にのみ書き込みます。モデルを勝手に選ぶことはありません。`models` では、対象にモデルが指定されていない場合の各ワーカーのデフォルトモデルを指定します(`-W codex`、「codex」へのフォールバック)。対象または `-m` で指定したモデルが引き続き優先されます。`tiers` では、`--tier` と計画タスクの `**Worker:**` 行で使用するワーカーを指定します。
config.json:設定例と各設定の役割
{
  "worker": "opencode",
  "fallback": ["opencode:opencode/space-bunny-free", "codex"],
  "models": { "codex": "gpt-6.1-sol", "claude": "claude-sonnet-5-5" },
  "costs": { "codex:gpt-6-sol": 1, "codex:gpt-6.1-sol": 2 },
  "tiers": { "cheap": "opencode", "standard": "codex", "capable": "claude", "review": "opencode:opencode/space-bunny-free" },
  "timeout": "20m",
  "primary": "opus",
  "link": ["node_modules"],
  "maxParallel": 20,
  "audit": 0.1
}
  • worker と fallback:担当者を指定しなかった場合にタスクを実行する人と、失敗した場合に引き継ぐ人です。models:ターゲットで指定されていない場合に各ワーカーが使用するモデルです。
  • tiers:cheap、standard、capable は、プランタスクと --tier で使用するワーカーを指定します。任意の review ティアでは、実行をレビューするワーカーを指定します(デフォルトでは実装者とは別のワーカーで、まず standard が使われます)。
  • audit:完了した読み取り実行をバックグラウンドで再確認する確率(0〜1、デフォルトは 0=オフ)です。監査を参照してください。監査を行うワーカーは audit ティアで指定します(指定がなければ cheap)。
  • costs:worker:model ごとの相対コストで、互いの比較にのみ使用されます。maxParallel:同時に実行するワーカー数(デフォルトは 20、最大 30)。
  • workerPrices:コストを報告しない CLI(Codex、Gemini)で使用する、ワーカーモデルの 100 万トークンあたりの USD 価格です。"workerPrices": {"codex:gpt-6.1-sol": "1.25,10,0.125"} は「入力、出力[、キャッシュ済み入力]」を表し、backend:model(実行されたモデル。なければ指定したモデル)または backend のみをキーとして指定します。指定がない場合、レシートには worker cost n/a と表示され、節約額の計算では実行コストがゼロとして扱われるため、節約額が実際より大きく見積もられます(pitroom doctor が警告します)。指定すると、トークン数に基づいてコストが推定され、~$0.016 (estimated from your workerPrices) のように表示されて、台帳、履歴、ダッシュボードに記録され、節約額から差し引かれます。Pitroom はベンダー価格を把握しておらず、取得もしないため、この価格はご自身で設定してください。
  • priceFeed:価格カタログを最新の状態に保ちます(デフォルトは false、PITROOM_PRICE_FEED=1)。このカタログは、OpenCode も参照する公開の models.dev リスト(約 8,000 モデルの 100 万トークンあたりの USD 価格)です。1 日に最大 1 回(priceFeedHours のデフォルトは 24)、実行後にバックグラウンドプロセスで取得され、実行待機中には取得されません。Pitroom はこのファイルだけに対して通常の GET を送信し(ミラーを使う場合は priceFeedUrl / PITROOM_PRICE_FEED_URL、間隔は priceFeedHours / PITROOM_PRICE_FEED_HOURS で指定)、状態ディレクトリにサイズを抑えたコピー(約 400 KB)を保存します。更新に失敗した場合は古いコピーを保持し、1 時間は再試行しません。これはあくまでフォールバックです。まず workerPrices が優先され、レシートには使用された価格の情報(estimated from models.dev prices)が表示されます。これを有効にすると、節約額の比較対象として "primary": "<model id>" にカタログ内の任意のモデルを指定できます("primary": "claude-opus-5-5")。無効の場合は 4 つのプリセットのみ使用できます。pitroom prices ではフィード、カタログ、primary の価格、および使用中の各ワーカーに適用される価格を確認できます(pitroom prices codex:gpt-6.1-sol では指定したモデルの価格を表示します)。pitroom prices --refresh は即時に取得します。送信される情報については、PRIVACY.mdを参照してください。表示される価格は API の標準価格です。サブスクリプションを利用するワーカー(ChatGPT アカウントを使う Codex など)はこの料金を支払わないため、そのようなワーカーでは、同じトークン数を API で使用した場合の料金として見積もられます。
  • notify:バックグラウンドに移行した実行(--bg、クルー、MCP 呼び出し)が終了したときにデスクトップ通知を表示します。長時間のジョブを見守る必要がなくなります(デフォルトは false、PITROOM_NOTIFY=1)。正常に終了し、所要時間が notifyAfter 秒未満の実行(デフォルトは 15、PITROOM_NOTIFY_AFTER)と監査については通知されません(失敗は常に通知されます)。クルーの場合は、最後の実行が終了した時点で、全体の結果をまとめて一度だけ通知します。ワーカープロセスが強制終了された場合は、通知を送れません。組み込みの通知機能は macOS では osascript、Linux では notify-send を使用します(Windows はまだ対応していません)。notifyCommand では、代わりにシェル内で独自のコマンドを実行できます。通知文は PITROOM_NOTIFY_TITLE と PITROOM_NOTIFY_BODY に格納されます(ほかに PITROOM_NOTIFY_RUN、PITROOM_NOTIFY_STATE もあります)。例:"notifyCommand": "curl -s -d \"$PITROOM_NOTIFY_BODY\" ntfy.sh/my-topic"。
  • mcpDash:MCP クライアントが開始した実行が数秒後も続いている場合、ダッシュボードも起動してそのアドレスを返すかどうかを指定します(デフォルトは true。PITROOM_MCP_DASH=0 または "mcpDash": false で無効になります)。MCP サーバーを参照してください。
  • auditFix と auditFocus:見解が食い違った回答をワーカーに戻して 1 回修正させるかどうか、および監査対象の抽出を一覧・件数に関する質問と意見が食い違ったワーカーに重点化するかどうかを指定します(どちらもデフォルトは false、PITROOM_AUDIT_FIX、PITROOM_AUDIT_FOCUS)。監査を参照してください。
  • budgetDaily:ワーカーが 1 日に使用できる金額(USD)です。CLI の報告値、または workerPrices と価格カタログに基づく推定値が使われます。監査と修正も含まれます。予算の 80%を超えると実行時に警告が表示されます。予算を使い切ると、コストのかからないワーカー(価格が 0 のワーカー、または直近の実行がすべて正確に 0 だったワーカー)のみ実行されます。実行チェーンに該当するワーカーがいない場合は実行が拒否され(終了コード 3)、監査と修正も開始されません。実行中のタスクは、その時点までに使用した金額が計上されます。同時に開始された実行は、最初のステップが完了した時点から計上されるため、クルーの実行によって 1 日の予算を少し超えることがあります。0 を指定すると、無料のワーカーのみが許可されます。デフォルトでは予算の上限はありません(PITROOM_BUDGET_DAILY)。
  • rankWorkers:同じ種類の作業(質問、変更、レビュー)について、過去 30 日間の実績に基づき、ワーカーとフォールバックの順序を並べ替えます(モデルは質問には適切に答えても、変更を完了できない場合があります)。実行が正常に終了した割合(レート制限は除外)に、確認済みの作業が問題なく完了した割合を掛け合わせます。確認は 3 件以上必要です(回答の場合は監査、変更の場合は仕様を満たし修正が不要と判断されたレビュー)。該当する種類の実行が 5 回以上あるワーカーのみが並べ替えの対象になります。並べ替えは、そのようなワーカー同士の順位を 10%刻みで変更します。ユーザーが指定したワーカー(-W、-m、ティア)は並べ替えられません。最初のワーカーが変更された場合、実行時にその旨が表示されます(デフォルトは false、PITROOM_RANK_WORKERS=1)。
  • autoFallback:独自の fallback が設定されていない場合、設定ですでに指定されているほかのワーカー(tiers、models、worker に含まれるもの)から、ここにインストールされているものをフォールバックとして選びます。costs に基づく安い順(コストの指定がないワーカーはその後に指定順)で、最大 4 つまで選びます。同じワーカーの別の努力レベルは対象外です(デフォルトは false、PITROOM_AUTO_FALLBACK=1)。Pitroom は指定されていないモデルを選ぶことはなく、ユーザー自身が選んだものだけを再利用します。fallback リストが設定されている場合はそちらが優先され、--no-fallback も有効です。フォールバックチェーンがこの機能によって決まった場合は、pitroom doctor に表示されます。
  • countRateLimits:レート制限またはクォータ超過で失敗した実行を、pitroom history stats とダッシュボードの「Stats」に含めるかどうかを指定します(デフォルトは false。ワーカーの作業内容を反映しないため、実行数、成功率、時間、トークン数から除外し、レート制限として別に表示します。true にすると、失敗として集計されます)。

FAQ

コードはどこに送られますか? ワーカーのモデルが使用するプロバイダーに送られます。プライベートなコードを扱う場合は、ワーカーにローカルモデルを指定してください。OpenCode と Claude Code のワーカーが使用するファイル読み取りツールは、.env ファイルと秘密鍵の読み取りを拒否します。Codex ワーカーにはその制限がなく、シェルコマンドで読み取ることもできるため、委任するフォルダーにはシークレットを置かないでください。

「節約額」はどのように計算されますか? プライマリエージェントがワーカーとほぼ同じトークン数を処理したと仮定し、プライマリの定価(PITROOM_PRIMARY/PITROOM_PRICE)で計算した額から、ワーカーのコストとレポートを読むコストを差し引きます。あくまで推定額であり、そのように表示されます。

ワーカーがリポジトリを壊すことはありますか? ワーカーは Git の履歴、参照、インデックスには触れられず(一連の権限プロファイルと Git ガードによる制限)、一括削除も実行できません。また、書き込みモードでの編集は、1 つのコマンドで元に戻せます。ただし、ガードは OS サンドボックスではありません。スクリプト内から絶対パスで呼び出された Git や、Git 以外のツールには対処できません。そのため、--isolate が用意されています。適用するまでは、何も作業ツリーに反映されません。

ワーカーは .env を読めますか? 読み取り実行では読めません。ディレクトリにシークレットが含まれているように見えるファイル(.env、prod.env、秘密鍵やキーストア、.netrc、credentials.json、secrets.json)がある場合、ワーカーはプロジェクトのクリーンスナップショットを読み取ります(以下を参照)。そのスナップショットには、ワーカー CLI で読み取りが許可されているかどうかにかかわらず、これらのファイルは含まれません。編集(-i、-w)やレビューの場合は異なります。分離コピー(-i)には Git で無視されるファイルが含まれないため、Git で無視される .env はコピーされません。一方、無視されない .env はコピーされる可能性があり、Pitroom はそのようなファイルを検出すると警告します(PITROOM_NO_SECRET_WARNING=1 で警告を抑制できます)。無料モデルはサードパーティによってホストされている場合があります。委任する対象には本物のシークレットを含めないでください。

ワーカーが失敗したらどうなりますか? Pitroom は実際の原因(たとえば、デフォルトモデルがすでに存在しない場合)を示してゼロ以外の終了コードを返し、エージェントはそのまま自分で処理を続けます。pitroom doctor でセットアップの問題を診断できます。


責任

Pitroom は現状有姿で提供され、MIT License のもとで公開されている独立したプロジェクトです。OpenAI、Anthropic、OpenCode、または Pitroom が操作できるその他のツールとは提携しておらず、承認も受けていません。

Pitroom の使用方法については、利用者が責任を負います。 何をどのモデルプロバイダーに委任するか、ワーカーにどのような権限を与えるか、プロジェクトに何を適用するかは、利用者が決定します。ワーカーは AI エージェントであり、誤った結果を出すことがあります。変更内容を確認し、信頼する前にテストを実行してください。Pitroom の権限プロファイル、Git ガード、分離コピーはリスクを軽減しますが、意図的な攻撃者や悪意のあるリポジトリに対するセキュリティ境界ではありません。委任するフォルダーにはシークレットを置かず、未確認の変更には分離モードを優先して使用し、接続するワーカー CLI とモデルプロバイダーの利用規約に従ってください。プロバイダーに送信される情報については、プライバシーポリシーをご覧ください。


コントリビューション

Issue とプルリクエストを歓迎します。まずはCONTRIBUTING.mdをご覧ください。セットアップ、テスト、dist バンドル、コミットのスタイルについて説明しています。最初に取り組むなら、ワーカーアダプターが最も簡単です:docs/backends.md。

npm install
npm test          # end-to-end tests against a fake worker CLI + adapter contract tests on recorded real streams
npm run typecheck

セキュリティ: 脆弱性を見つけた場合は、公開 Issue ではなく、SECURITY.md の説明に従って非公開で報告してください。

Issue を報告 · 未解決の Issue · セキュリティポリシー · 行動規範


クレジット

ワークフロースキル(ブレインストーミング、計画、ワーカー主導の開発、レビュー、デバッグ、TDD、検証、ワークツリー、仕上げ)は、Jesse Vincent による superpowers を MIT License のもとで改変したものです。通知は THIRD_PARTY_NOTICES.md に記載されています。

ライセンス

Pitroom は MIT License のもとでライセンスされています。詳細は LICENSE をご覧ください。


Pitroom

高価なコーディングエージェントのための、無料のピットクルーです。

エージェントが判断し、低コストのワーカーが入力し、別のモデルがレビューします


クイックスタート · ワークフロー · スキル · アダプターの作成



モデルを問わず利用可能 · 検証済みの回答 · 雰囲気ではなく証拠

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。