mcpField
H
herdr-quorum

herdr-quorum

github.com/scottwaterエージェントワークフロー148 回インストール今日更新
リポジトリ

herdr-quorum について

Herdr を使ったエージェントクォーラムを実行するスキルです。範囲の確定、並列起動、報告の収集と統合を扱い、実行記録と失敗処理を定め、承認判断はユーザーに委ねます。

主な機能

  1. 01プロファイルと作業範囲の確定
  2. 02ワーカーの並列起動
  3. 03報告の段階的な収集
  4. 04失敗とワーカーのカバレッジ追跡
  5. 05出典を明記した所見の統合

活用シーン

  1. 01範囲を定めたマルチエージェントレビュー
  2. 02タスク実行中のワーカーレポート収集
  3. 03カバレッジ不足と失敗の報告

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/scottwater/skills --skill herdr-quorum

インストール後、Claude Code で/herdr-quorumを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
profiles/
review.md
references/
cli-arguments.md
scripts/
collect.py
launch.py
tests/
test_launch.py

詳細

Herdr Quorum

実行範囲を確定する

profiles/ から指定されたプロファイルを使用します。指定がなければ review を使用します。そのプロファイルだけを読み込みます。ユーザーの依頼を正確な範囲に確定します。曖昧な場合は、リポジトリ全体のタスクだと推測せず、質問してください。コミット範囲の場合は、1 回の呼び出しで終点のハッシュを確定して固定し、作業ツリーの状態を確認します。差分の一覧作成やソースの調査はワーカーに任せてください。

HERDR_ENV=1 が必要です。ターミナルの操作方法と安全性について Herdr のスキルを読みます。スキルカタログにない場合は、herdr --skill で読み込みます。Herdr またはその手順を利用できない場合は停止します。Quorum で文書化されている操作には、同梱のコントラクトを直接使用します。一般的な Herdr の探索手順による事前確認は不要です。

プロファイル、範囲、Herdr の実行コンテキストがわかった時点で完了です。

ブリーフを準備する

プロファイルのワーカー向け指示、確定した範囲、ユーザーの制約、すでにコンテキストにある該当プロジェクトのルールを含む、共通のブリーフを 1 つ用意します。統合に関する指示はリード側に残します。ワーカーはタスクの実行中に、必要に応じて追加のプロジェクトガイダンスを読み込みます。任意のルールディレクトリの有無を調べることは、起動の前提条件ではありません。任意のディレクトリが存在しない場合、その探索はそこで終了します。

プロファイルの cli|model|reasoning タプルはデータとして扱います。launcher は構造を検証し、重複や未マッピングの CLI を拒否し、同梱の CLI mappings に基づいて変換します。これらのマッピングと指定された識別子を信頼してください。互換性の確認は実行時に行います。起動前にヘルプの呼び出し、モデル一覧の取得、設定の検索、ドキュメントの確認を行ってはいけません。互換性の診断は、Quorum の実行とは分けてください。

正確な範囲と共通ブリーフを 1 つ用意できた時点で完了です。そのまま起動に進み、ワーカーによる調査を先に行ってはいけません。

1 回だけ起動する

選択したタプルごとに 1 つの --worker を指定し、ランチャーを python3 とスキルからの絶対パスで呼び出します。共通のブリーフは、引用符で囲んだヒアドキュメントを使って stdin に 1 回だけ送信します。たとえば、例のタプルとブリーフを、選択したプロファイルと解決済みのタスクに置き換えます。

python3 /absolute/skill/path/scripts/launch.py \
  --worker 'pi|provider/exact-model|high' <<'QUORUM_BRIEF'
<common brief>
QUORUM_BRIEF

プロジェクトディレクトリから実行します。ブリーフに含まれないヒアドキュメントの区切り文字を選び、各タプルはシェルで引用符で囲んで 1 つの引数として渡します。ユーザーが最初の分割方向を指定した場合に限り、--direction right または --direction down を渡します。ランチャーコマンドには 120 秒の猶予を設けます。その後もワーカーの実行は独立して続行されます。

ランチャーはフォーカスを移動せずに隣接するペインを作成し、自身のワーカー領域のみを分割して、新しい対話型エージェントを並行して起動し、準備ができた各エージェントに即座にプロンプトを送信します。ネイティブの設定と権限は保持されます。各ワーカーには共通のブリーフと、10 分間のペース配分の指示が渡されます。最後の 1 分は報告に充て、未完了の範囲があれば明示するよう指示されます。各ワーカーは、ほかのワーカーの結論やリードの提案する回答を確認できません。

ランチャーの JSON 出力には、brief.txt、run.json、monitor.log を含む非公開の一時 run_dir が表示されます。切り離されたモニターは、並行する agent prompt --wait 呼び出し、永続的な収集イベント、および各ワーカーの送信時点からの期限を管理します。モニターは、期限に達した際にこの実行で動作中のワーカーのみを検査して中断し、結果が不確かな場合や、まだ動作中の場合は記録します。リードが報告を確認している間や、収集コマンドが中断された場合も、モニターは処理を続けます。

すべてのワーカーが待機を試みるか、記録された失敗に至ると、ランチャーは戻ります。waiting は、プロンプトが配信されたことや処理が完了したことの証明ではありません。終了コード 0 は、戻った時点で失敗が記録されていないことを意味し、ワーカーの成功を意味するものではありません。終了コード 1 は、失敗が記録されたか、起動またはモニターに問題があったことを意味します。終了コード 2 は、入力またはコンテキストが無効であることを意味します。ツールがタイムアウトした場合も含め、中断後は必ずマニフェストを確認してください。ランチャーを自動的に再実行したり、シェルでその動作を再現したりしないでください。

起動またはディスパッチの失敗は、カバー範囲の不足として扱います。再試行、代替、修復は行わず、残ったワーカーで続行します。レイアウトの失敗が発生した場合は、部分的なペイン ID を保持したまま起動を停止します。承認の判断はユーザーに委ねてください。

ランチャーが戻った時点、または中断された実行の結果を記録済みの実行ディレクトリで確認した時点で完了です。

段階的に収集する

エージェントの状態をポーリングするのではなく、collector を使用してください。

python3 /absolute/skill/path/scripts/collect.py --run-dir '<run_dir>' --after 0

各 collector コマンドには 390 秒を確保してください。新しいイベント、監視の完了、または 5 分ごとのチェックポイントまでブロックします。すでに記録されたイベントはすぐに返されます。新たに確定したワーカーのレポートをすぐに読み取り、ほかのワーカーが作業を続ける間に情報源を確認してください。得られた内容はリードと共有し、残りのワーカーには知らせないでください。バッチを処理した後、返された cursor を次の呼び出しで --after として渡してください。呼び出しが中断された場合は、前回のカーソルを安全に再利用できます。収集によってイベントが消費されることはありません。

checkpoint が返されたら、この実行で未解決のワーカーのヘルスチェックを 1 回行い、その後、再度ブロックする収集を実行できます。blocked を含め、状態が確定しても、それは確認の合図にすぎず、使用可能なレポートではありません。失敗、ブロック、不明、期限到達、中断の各イベントは Herdr を通じて確認してください。complete: true は監視が終了したことを意味するもので、すべてのワーカーが成功したことを意味するわけではありません。統合する前に、まだアクティブなものも含め、返されたスナップショット内のすべてのワーカーについて状況を確認してください。モニターが利用できない場合は、run.json、monitor.log、記録されたペインを確認し、再起動せずに、残りの予算内で作業中のワーカーに対処してください。

実行をキャンセルするには、同じ collector で --cancel を使用し、720 秒を確保してください。承認ダイアログへの回答やペインの終了は行わず、この実行で作業中のエージェントを確認して中断します。処理の遅い送信とキャンセルが重なった場合は、ワーカーの元の予算内で処理が進むのを待ちます。記録された結果を確認し、まだアクティブなエージェントがあれば報告してください。監視がすでに終了している場合、collector は新しい入力を送信せず、Herdr で後処理するよう案内します。collector またはツールのタイムアウトだけでは、モニターやワーカーは停止しません。同じカーソルで再接続してください。キャンセル中にモニターが利用できない場合は、Herdr を通じて、この実行で作業中のエージェントのみを直接確認して中断してください。

Herdr の直近のラップ解除済み出力を使ってレポートを読み取ってください。完全な応答を復元できない場合は、Herdr の大きな読み取りと一時 Markdown へのフォールバックに従ってください。ライフサイクル上の異常が伴う場合でも、使用可能なレポートは保持し、その異常を明示してください。明示されたモデルまたは推論設定が守られなかったことを確認した場合は、ワーカーの失敗として扱ってください。出力がない場合は、カバレッジが欠けている状態であり、同意や問題が見つからなかったという結果ではありません。

すべてのワーカーについて、使用可能なレポートまたは失敗理由が得られたら完了です。

統合する

プロファイルの統合指示に従って、出所を明記したレポートを統合してください。使用可能なレポートが 1 件の場合は、単一ワーカーの結果として示してください。使用可能なレポートがない場合は、統合せずに失敗の要約を返してください。

すべてのワーカーについて、名前、要求された CLI/モデル/推論設定、作成された場合はペイン ID、結果または失敗理由を記載したカバレッジ情報を追加してください。要求された設定と、確認された不一致を区別してください。確認と後続対応のため、ワーカーのペインは開いたままにしてください。

選択されたすべてのワーカーについて、統合結果とカバレッジ情報が説明されていれば完了です。

プロファイルとマッピングを管理する

Workers YAML ブロックと、Worker instructions および Synthesis instructions の各セクションを含む profiles/<name>.md を追加してください。タスクのポリシーはプロファイルに、実行の仕組みはランチャーに記載してください。プロファイルは参照用ドキュメントであり、個別に呼び出せるスキルではありません。

互換性の診断または CLI の追加を依頼された場合に限り、インストール済みのヘルプまたは信頼できる公式ドキュメントを確認し、CLI contract、ランチャー、テストをまとめて更新してください。python3 -m unittest discover -s /absolute/skill/path/tests -v を実行してください。テストでは Herdr の偽物を使用し、実際のエージェントは起動しません。

コメント