pcommittee(2エージェント根本原因検討委員会) は何をしますか?
概要
2つのエージェント、2つのモデルファミリー、同じ問題を、両者とも新しいコンテキストで分析します。両者が並行して分析し、不一致がある箇所で議論させ、生き残ったものを統合します。その後、あなたが実装します — 委員会がファイルに触れることは決してありません。
真価を発揮する場面: 同じループを2周してしまった、バグの明確な根本原因がない、または計画を実行する前に複数の意見を得る価値があるほどコストが高い場合。2体の xhigh エージェントは安くありません。1つの意見で十分な場合は padvisor を、作業を委任する場合は pspawn または phandoff を使用してください。
起動されたエージェントが行うこと。 両エージェントはチームデフォルトとして許可プロンプトなしで実行されます(Claudeでは bypassPermissions、Codexでは full-access)が、プロンプトの編集禁止サフィックスによりファイルを変更しないように指示されており、モードではなく命令によって読み取り専用となります。より多くの権限を必要とするチームは、リポジトリの AGENTS.md でそれを要求できます(これも指示として機能します)。または、Claude Code の permissions.deny ルールで禁止することもできます。これは bypassPermissions でも適用されます。
起動方法
/pcommittee <問題> — デフォルトのペアは以下です。ユーザーが名前を指定したメンバーがそれを置き換えます。
構成
対照性こそが仕組みであり、単なるオプションではありません。同じファミリーの2つのエージェントは、同じ盲点を2度生み出し、その一致を確認と呼びます。
デフォルトの委員会は claude と codex をペアにします。両方とも paseo provider ls で available かつ Enabled と表示されている必要があります。
- メンバーA:
paseo provider models claudeがリストする最新のOpus(例:claude/claude-opus-5-5)· 思考レベルxhigh· モードbypassPermissions - メンバーB: Codex の最新モデル、
paseo provider models codexの最初のID · 思考レベルxhigh· モードfull-access
IDはこれらのリストから読み取り、記憶から決して使用しないでください。claudeメンバーはプレーンなID(1Mモデル)を使用します(pspawn が [1m] を使わない理由を説明しています)。両メンバーとも許可プロンプトなしで実行されます(すべての spawn と同様、チームデフォルト)。ファイルを変更できないようにしているのはモードではなく、編集禁止サフィックスです。
ユーザーがメンバーを指定した場合は、それを使用します。1つのファミリーしか利用できない場合は、その旨を伝え、1メンバー委員会を委員会と偽る代わりに padvisor を実行します。
手順
1. 1つの問題プロンプトを作成します。 両メンバーは同一のテキストを受け取ります — 異なるプロンプトは、実際の意見の相違ではなく、あなたの表現のアーティファクトになります。
それを専用のファイルに書き込み、"$(cat <プロンプトファイル>)" を両方の spawn に渡します。 同じ heredoc を2回入力すると、テキストが静かにずれていきます。ファイルを使用することで、同一性が構造的になり、注意深さに依存しません。mktemp でファイルを作成し、出力されたパスを <プロンプトファイル> として使用します。/tmp 内の固定名は別のセッションの委員会と衝突し、すべてのユーザーが読み取り可能になりますが、mktemp ファイルは今回の実行用に新しく作成され、あなただけが読み取れます。
回答言語(ユーザーの会話で使用されている言語)を指定して開きます(Answer in <言語>.)。メンバーはプロンプトの言語で回答します。ある言語での会話に、別の言語の2つのレポートがあると、統合時に摩擦が生じます。
[ユーザーの会話の言語を指示として: "Answer in <その言語>."]
## 問題
[何が間違っているか、未決定か。症状であり、あなたの仮説ではありません — あなたの仮説はテストしてほしいものです。]
## 既知の情報
[事実、測定値、エラーメッセージ、逐語的なもの。結論ではありません。]
## 試したこと
- [アプローチ] — [結果、なぜ破棄したか]
## 調査すべき場所
- `/絶対パス/ファイル.ts` — [それが何か、なぜ重要なのか]
## 求めているもの
根本原因分析と計画。自分の確信度を述べ、診断を反証できるものを挙げてください。
問題そのものが間違った問題である場合は、最初にそう述べてください。
これは分析のみです。ファイルの編集、作成、削除は行わないでください。コードは書かないでください。
自分の仮説はプロンプトに含めないでください。含めると、異なる言葉で2度返ってくるだけです。どうしても言及する必要がある場合は、攻撃されるべき仮説としてマークしてください。
2. 両方をこのセッションの子として spawn します。 まずプロバイダの利用可能性を確認します(pspawn のステップ1とまったく同じです <このスキルのベースディレクトリ>/../pspawn/SKILL.md)。その後、同じレスポンス内で(並行して思考させるために)以下を実行します。
paseo run --no-wait --json --provider '<claude/newest-opus>' --thinking xhigh \
--mode bypassPermissions --title "[Committee A] <トピック>" "$(cat <プロンプトファイル>)"
paseo run --no-wait --json --provider '<codex/newest>' --thinking xhigh \
--mode full-access --title "[Committee B] <トピック>" "$(cat <プロンプトファイル>)"
paseo では、両方とも自動的にこのセッションのワークスペースに、このセッションの子として配置されます。そして、その状態を維持します。デタッチしないでください。 委員会はこの質問に属します。このセッションをアーカイブすると、それらもアーカイブされます。これが正しい動作です。paseo 以外では --workspace <ID> を追加し、pspawn のステップ2と同様に一度だけルックアップします。
3. 両方が終わるのを待ちます — メンバーごとに1回 paseo-notify を実行し、その後自分のターンを終了します。
paseo-notify <id-a>; paseo-notify <id-b>
各メンバーのメッセージは個別に到着します。一方が完了し、もう一方がまだの場合は、もう一度ターンを終了します。2つ目のメッセージがあなたを起こします。finished its turn → 回答した。is waiting for a permission → あなたを待っているリクエストがあります。stopped with an error → その旨を伝え、ログを読みます。静かに再spawnしないでください。使用量制限ではあなたは起こされません。paseo-limit-watch はメンバーを再開し、ウォッチを再設定します(cron 行がインストールされている場合、README を参照)。インストールされていない場合は、リセット後に自分でメンバーを確認してください。メンバーの実行時間は通常15〜30分です。ポーリング、sleep、急かしメッセージは絶対に送らないでください。
paseo 以外の場合($PASEO_AGENT_ID なし):1回の bash 呼び出しで run_in_background: true を指定し、paseo wait <id-a> --json; paseo wait <id-b> --json を実行し、JSON から各 status を読み取ります。終了コードは使用しないでください。
permission の場合(bypass と full-access では稀ですが、rm -rf は依然として確認します)、メンバーは誰も見ていない状態で停止します。それを読み取り(paseo permit ls)、与えた権限の範囲内かどうかを判断し、paseo permit allow <agent-id> <request-id> または deny を実行し(両方のIDは paseo permit ls から取得)、paseo-notify を再設定します。権限の範囲外または不明な場合は、ユーザーに確認し、代わりに承認しないでください。
4. 両方を読み取ります。
paseo logs <id> --filter text --tail 3
pagent.py <id> -t -n 3 --full(<このスキルのベースディレクトリ>/../pagent/)は、タイムスタンプ付きでよりリッチであり、Claude と Codex の両メンバーを同様に読み取れます。
5. 議論させます。 これが委員会を2つのエージェントにする価値のあるステップです — これをスキップすると、2つのレポートが残るだけで、解決策は得られません。
実際に分岐している箇所(異なる根本原因、異なる修正、異なるリスク評価)を見つけます。表現や強調の違いは無視してください。それらは不一致ではありません。
各実際の乖離について、各メンバーにもう一方の主張を送信します。
paseo send --behavior steer --no-wait <id-a> "メンバーBは <X> と結論付けています。根拠: <逐語的な推論>。これに直接対応してください。B が間違っているのはどこですか、それともあなたが間違っていますか?B が正しいなら、あなたの立場を変えてください。そうでないなら、そのまま率直に述べてください。"
paseo send --behavior steer --no-wait <id-b> "メンバーAは <Y> と結論付けています。根拠: <逐語的な推論>。これに直接対応してください。A が間違っているのはどこですか、それともあなたが間違っていますか?A が正しいなら、あなたの立場を変えてください。そうでないなら、そのまま率直に述べてください。"
長い逐語的な推論はファイル経由で渡す方が簡単です。メッセージをファイルに書き込み、paseo send --behavior steer --no-wait --prompt-file <ファイル> <id> を使用します。プロバイダが steer を受け入れられない場合は、割り込みにフォールバックできます。paseo send はアーカイブされたエージェントを復活させます — 最初に paseo inspect <id> --json で ArchivedAt を確認してください。アーカイブされたメンバーは復活させないでください。
ここで --no-wait は必須です。 プレーンな paseo send はエージェントが完了するまでブロックします。2つのブロッキング send はメンバーを逐次的に実行し、最初の1つだけで10分間のフォアグラウンドBash制限を超えます。両方を非ブロッキングで発行し、両方のウォッチを再度設定し(ステップ3)、再度読み取ります(ステップ4)。通常は2ラウンドで十分です。2ラウンド後もまだ意見が一致しない場合は、不一致を結果として報告して停止します — 2つの強力なモデル間の真に未解決の乖離は、問題に関する実際の発見であり、3ラウンド目を送って無理に合意を形成するとそれを破壊します。
6. ユーザー向けに統合します。
- 両方が同意したこと — これが信頼できる部分です
- どこで分岐したか、そしてそれがどのように解決したか(または解決しなかったか)
- あなた自身の読み取り。あなたのものとしてマークします
- これから従う計画
7. 両方をアーカイブします — paseo archive <id> をそれぞれ実行します。ただし、ユーザーが質問を続けたい場合は除きます。
よくある間違い
| 間違い | 修正方法 |
|---|---|
| 同じプロバイダファミリーの2つのメンバー | 対照性が仕組み — claude + codex |
| メンバーごとに異なるプロンプト | 1つのファイル、両方のspawnに "$(cat …)" — 2つのheredocはずれる |
| 回答言語が指定されていない | メンバーはプロンプトの言語で回答するため、ユーザーの言語で開く |
| 自分の仮説をプロンプトで事実として述べる | 除外するか、攻撃されるべき仮説としてマークする |
| 議論ラウンドをスキップする | 2つのレポートは委員会ではない — ステップ5が価値 |
| 3ラウンド目で合意を強制する | 2つの強力なモデル間の未解決の乖離が発見である |
paseo wait の終了コードを信頼する | アイドル、許可、エラーすべてで0 — status を --json から読み取る |
| フォアグラウンド待機 | run_in_background: true にする。10分のBash制限は待機を殺し、エージェントは殺さない |
Codexメンバーをデフォルトモードのままにする、またはclaudeを auto のままにする | codex → full-access、claude → bypassPermissions(チームデフォルト)。デフォルトモードのメンバーは誰も答えないプロンプトで停止する |
| ポーリング / 急かしメッセージ | メンバーごとに paseo-notify を実行し、自分のターンを終了する。メンバーは15〜30分間推論する |
2ラウンド目でプレーンな paseo send | 完了までブロックする — 両方に --no-wait を使用し、その後ステップ3へ |
| 編集禁止サフィックスを省略する | 両メンバーが分析対象の実装を始めてしまう |
メンバーをデタッチする、または env -u PASEO_AGENT_ID | これらは意図的にこのセッションの子である。セッションがアーカイブされるときに一緒に消える |
| 小さな質問で委員会を実行する | padvisor を使用 — 1エージェント、1意見、コストはわずか |