コンテンツにスキップ

エージェントハーネス設計 v3 — oh-my-beads / eval-loop 統合

2026-08-14 起草。v2(2026-07-13-agent-harness-design-v2.md)を全面改訂し、 プラグイン oh-my-beads 0.3.1(beads 運用の規律・hook・検査)と eval-loop(成果物の品質ループ)を統合する。正典の優先順位は不変: ユーザー指示 > AGENTS.md > 本設計 > プラグイン既定

0. 診断で確定した現状(2026-08-14 実測)

項目 実測 含意
bd 1.1.2(サポート版)・.beads = メインリポジトリ共有
export.auto false(1.1.2 の既定) .beads/issues.jsonl の passive backup が 1.1.2 更新以降止まっている(AGENTS.md の前提と乖離)
dolt.auto-commit on flush 手当不要(batch 化しない限り)
dolt remote 登録済み(git+https)だが remote に refs/dolt/data 不在 DB は単機運用・push 実績なし。全ワークツリー + スケジュールセッションが同一ローカル DB を共有するため、単機の限り sync は不要
SessionStart この worktree の .claude/settings.jsonbd prime hook oh-my-beads の SessionStart hook と二重注入(次セッションから ≈5k tokens/回 の無駄)

1. レイヤ構造(v3 の全体像)

┌ 正典層   AGENTS.md(不変条件・verify ゲート)/ CLAUDE.md(薄いラッパ)
├ 記憶層   bd issue graph(構造的記憶・oh-my-beads 規律)
│          + file memory(セッション横断の長期知見・従来どおり)
│          + docs/superpowers/{specs,plans}(設計成果物・従来どおり)
├ 規律層   oh-my-beads ref 群(bootstrap 分解 / sharp-writing 起票 /
│          dynamic 記録チャネル / idea=wisp→decision gate / session 引継ぎ)
├ 自動化層 orca スケジュール ①-⑧ + oh-my-beads hook(claim provenance・
│          LEARN 自動 note・破壊コマンド deny)+ Seed/リリースの既存 CI
└ 品質層   機械ゲート(pnpm verify・docker proof・ミューテーション = 従来・不変)
           + eval-loop(**文書系成果物のみ**のスコアループ = 新設)
# 論点 OMB 既定 waste-link 既存 裁定
1 bd remember 原則禁止・唯一の例外 = 並走 agent への短期共有(TTL 1 日・--key 明示・裸キー禁止) 全面禁止 OMB 準拠へ精緻化: 原則禁止は不変。orca スケジュールセッションとの短期共有に限り --key 付きで許可(長期知見は従来どおり file memory)。実質は既存方針の例外条項化
2 TodoWrite / TaskCreate 不使用(PRIME 絶対ルール) 1 セッション内の短手順は併用可 waste-link 上書き維持。PRIME v3 の上書き節に明記(hook は deny しないことを確認済み — deny は bd init 等の物理系のみ)
3 markdown plans task tracking に使わない docs/superpowers/plans は設計成果物として温存 温存(従来の論理そのまま)
4 PRIME.md テンプレを「常に同期」で上書き waste-link 手書き版(3 上書き + verify ゲート) マージ版 = PRIME v3: OMB テンプレを本文の base にし、末尾に <!-- waste-link overrides --> 節(本表の裁定 + verify ゲート + Notion/Linear 分担 + 実測事実)を追補。plugin 更新時の再同期手順: テンプレ部だけ差し替え → 上書き節を再追補(手順を PRIME 冒頭に明記)
5 SessionStart 注入 plugin hook(全 worktree 共通・グローバル) worktree ごとに bd setup claude で hook 設置 plugin へ一本化: 各 worktree の bd prime hook を除去(run-setup-beads Phase 5 の jq 手順・要承認)。子 worktree 新設時の bd setup claude 手順は廃止(AGENTS.md 該当記述を更新)
6 claim 作法 bd update <id> --claim素のコマンド単独で(パイプ・連結・リダイレクトは hook が deny)・claim_session 自動付与 チェーン内で --claim 2>&1 \| tail OMB 準拠: コーディネーターの自動化チェーンから claim を独立ステップへ分離。bd ready --claim 不使用
7 起票品質 ref-beads-sharp-writing(RCT 検証済み文言・逐語適用)+ ref-beads-bootstrap(粒度・依存配線) acceptance に verify ゲートを書く運用 両立採用: 起票時は sharp-writing 逐語 + acceptance の verify ゲート必須は従来どおり。epic 級の分解は起票前に bootstrap を読み、必要なら eval-loop × assign-sharp-issue-evaluator で品質ループ 1 周
8 未確定アイデア wisp → 実装が依存する時点で decision gate へ promote・blocks+defer 「ユーザーに聞く」を都度セッションで実施 採用: ユーザー判断待ちを decision issue + defer で構造化(「聞き忘れて実装が進む」事故の機械的防止)。人間の回答は comment・結論は note
9 dolt sync claim 直後 push / 終了時 push push は人間ゲート 単機運用の間は push 不要(全セッション同一 DB)。export.auto=true へ復旧して jsonl backup を再開(要承認・git tracked のため export.git-add=true)。複数マシン化する時に初めて配線(Phase 4 手順・人間承認)
10 記録チャネル note/comment/create/dep/metadata の使い分け(ref-beads-dynamic)・LEARN: 行の自動 note・metadata は 4 キーのみ notes 中心の自由記述 採用: 特に「学び = LEARN: 行で Stop hook が claim 中 issue へ自動 note」を標準化(file memory との分担: issue 固有=bd / プロジェクト横断=file memory)
11 eval-loop の適用 汎用(コードにも使える建て付け) 機械ゲート(verify/proof/ミューテーション) 文書系成果物に限定: コード品質は従来の機械ゲートが正典で、スコアループで置換しない(ゲートは boolean・スコアは補助)。適用対象は §3 のマップに列挙

3. eval-loop 適用マップ(品質層の新設分)

成果物 generator evaluator 発動
epic 分解・大型スライスの issue セット 私(bootstrap+sharp-writing 準拠で起票草案) oh-my-beads:assign-sharp-issue-evaluator(blind rubric) 大型機能の着手時(例: 標準EDI S1 の子起票)。閾値到達で bd create 実行
スペック / ADR / PRD 起草 既定 generator debate evaluator(assign-debate-evaluator prod-critical 設計・方式転換級のみ(乱用しない)
週次レポート / ロードマップ見直し下書き 既定 既定 evaluator(意図忠実度・構造) orca ②③⑧ のプロンプトに「品質ループ 1 周(fork 版)」を追記(メイン履歴を汚さない run-eval-loop-fork
操作手順書・docs ページ 既定 既定 新規ページ作成時のみ(既存ページの微修正は不要)
コード・migration・proof 適用しない(pnpm verify / docker proof / ミューテーション実証が正典)

運用原則: eval-loop は fork 版を既定(履歴の肥大防止)・スコア閾値は 8/10 目安・ 2 周で頭打ちなら人間に提示(無限ループしない)。

4. 配線変更(承認後に実施する具体作業)

  1. PRIME v3 の作成: OMB テンプレ + waste-link 上書き節 → .beads/PRIME.md (旧版は .bak 退避)。AGENTS.md の beads 節・CLAUDE.md の Beads ブロック上書き節を v3 整合へ更新(bd setup claude 手順の廃止・claim 作法・LEARN 行・wisp/decision gate)
  2. 二重注入の解消: wastelink-coordinator(+ 他 worktree にあれば)の .claude/settings.json から bd prime SessionStart hook を jq 手順で除去
  3. jsonl backup 復旧: bd config set export.auto true + export.git-add true + .gitattributes.beads/*.jsonl merge=union(メインリポジトリ)
  4. orca プロンプト更新: ②③⑧ に fork 品質ループ 1 周、⑦(月次 HK)に run-beads-lint + run-beads-orphan-check + run-beads-recall 棚卸しを追加 → 📅 ページ §5 を更新し、ユーザーに orca 側の登録差し替えを依頼
  5. コーディネーター行動規約の更新(file memory): claim 独立ステップ化・ 起票前 sharp-writing/bootstrap・ユーザー判断待ちの decision+defer 化・LEARN 行
  6. 検証: run-beads-lint / orphan-check を初回実行し規約適合を確認。 次セッションで SessionStart が plugin 単独発火(PRIME v3 が注入される)ことを確認

5. 変えないもの(明示)

  • AGENTS.md の不変条件・verify ゲート・prod-critical/human-reviewed の人間ゲート
  • Routing(設計/レビュー=Claude・実装=codex・敵対レビュー=Claude+ミューテーション)
  • file memory / docs/superpowers/{specs,plans} / Notion 2 層 / 週次ベロシティ C 方式
  • リリース二段階・Seed ワークフロー・運営カレンダーの時刻設計
  • 機械ゲートの絶対性(eval-loop のスコアで verify/proof を代替しない)

6. 既知のリスクと緩和

  • plugin 更新で PRIME テンプレが変わる → 再同期手順を PRIME 冒頭に明記・ 月次 HK(⑦)で run-setup-beads --dry-run 診断を回して乖離検知
  • hook deny による既存自動化の破壊(claim のパイプ等)→ §4-5 の作法変更で回避・ 初週は deny 遭遇時に都度 ref-beads/safety.md を参照して調整
  • eval-loop のトークンコスト → fork 既定・適用対象の限定・2 周上限で抑制
  • スケジュールセッションとの並走(今夜から実働)→ OMB の claim provenance と session 紐付け(ref-beads-session)がまさにこの衝突を防ぐ層。手動セッション側は 「他 session の claim 中 issue に触らない」を PRIME 絶対ルールとして継承