HARNESS ENGINEERING

ハーネスエンジニアリング
生成と評価を分離する設計

モデル本体は選ぶことしかできない。長時間走るエージェントの最終品質は、計画・生成・評価をどう分離し、どこに証拠と拒否権を置くかという周辺=ハーネスの設計でほぼ決まる。

原典 Anthropic Engineering 公開 2026/3 / 2025/11 参照実装 anthropics/cwc-long-running-agents
CORE FEATURE
単体=動かない / フルハーネス=動く
同一の1文プロンプトによる対照
TIME / COST
20分→6時間 / $9→$200
18倍/22倍は表示値からの導出値。記事本文の表現は "over 20x"
EVAL COST
$10.39総額$124.70の8.3%
QA 3ラウンド計。DAW案件1件の実測値
ITERATIONS
5〜15
非線形ジャンプは9回目→10回目(フロントエンドデザイン実験)
PLANNER
4.7分 / $0.46
総コストの0.4%。「最も安く最も効果が大きい部品」
01
WHAT IS A HARNESS

ハーネスとは何か:変えられるのは周辺だけ

モデル本体は改変できず、選ぶことしかできない。品質を決めるのは周辺6層の設計であり、どの層がどの失敗を担当しているかを積層図で確認する。

ハーネスの積層構造 — 品質を決めるのは周辺の設計 06 フロー 計画 → 生成 → 評価 のループ 反復の骨格を与える 05 検証 Playwright MCP・テスト・スクショ 実物で確かめる手段を与える 04 状態 PROGRESS.md・test-results.json・git セッションを超えて事実を残す 03 ガードレール hooks: PreToolUse・Stop 禁止を構造として強制する 02 分業 .claude/agents/*.md 役割と権限を分ける 01 指示 CLAUDE.md・ルール・スキル 前提と規約を常時伝える 00 モデル本体(Claude / GPT) 改変不可 — 重みには触れない。できるのは選ぶことと、世代交代を待つことだけ 可変域=ハーネス この6層の設計品質が 最終品質をほぼ決める ここは選ぶだけ ※各層は「モデルが自力ではできないこと」への仮説。モデルが強くなったら1つずつ外し、まだ効いているかを検証する

「プロンプトを長くすること」ではなく、構造で禁止する

指示を書き足しても、破られるときは破られる。hook(PreToolUseStop)とツール権限の剥奪で「そもそもできない状態」を作るのがハーネス設計の本体である。

6層の各部品は、恒久資産ではなく仮説である

どの部品も「モデルが自力ではできないこと」への対処にすぎない。モデルが強くなったら部品を1つずつ外し、まだ効いているかを検証し直す(SECTION 10で棚卸し手順を扱う)。
02
TWO FAILURE MODES

素朴な使い方が壊れる2つのモード:消えたものと残るもの

単発プロンプト運用の失敗は2系統に分かれ、片方だけがモデル世代の交代で消えた。自分が踏んでいるのがどちらかを、この対比で切り分ける。

壊れ方は2つ — 解消した失敗Aと、残り続ける失敗B 失敗A コンテキスト不安 ほぼ解消済み 上限が近づいたという認識だけで発生(実際は未到達でも) 症状 仕事を畳みはじめ、途中で切り上げる 「あとは同様に実装できます」と要約で逃げる 対処の優劣 圧縮 不安は解消しない 不安は上限ではなく認識で発生するため リセット+ハンドオフ 有効。ただしコスト増 複雑性・トークン・レイテンシ Opus 4.5でほぼ解消 → 4.6では分割も不要に 対処部品は世代とともに陳腐化する 失敗B 自己評価バイアス 世代が上がっても残る 主観的な品質のタスクで深刻 — テスト通過と良い出来は別物 実装する 自分で採点する 「いい出来です」と報告 成果物 根拠:「テスト通過」「curl 200」 UIが破綻していても合格にする 指摘が入らないまま次の実装へ 外部入力ゼロ 自分では欠陥に気づけない 人間が指摘すれば直る =外部入力があれば輪は破れる 失敗Bは世代が上がっても消えない。この閉ループを外部から断ち切る仕組みがG/E分離
失敗A コンテキスト不安は、対処部品ごと陳腐化した。圧縮では不安が消えず、リセット+ハンドオフ成果物が有効だったが複雑性・トークン・レイテンシの代償を伴った。その機構自体がOpus 4.5で不要になり、4.6ではスプリント分割も不要になった。
失敗B 自己評価バイアスは、世代が上がっても残る。「テスト通過」「curl 200」を根拠にUIの破綻へ合格を出し、人間が指摘すれば直すのに自分では気づけない。以降の本題は、この外部入力ゼロの閉ループをどう切るかに絞られる。
03
WHY SEPARATION WORKS

なぜ「分離」が効くのか:非対称性という核心

分離の根拠は「別のAIだから客観的」ではない。立場が採点をどう歪めるかを5要因の対比表で確かめ、「生成器を厳しくすればよい」という代案がどこへ収束するかを追う。

分離が効く理由 — 立場が評価を変える5要因と収束点 要因 自己評価する場合(生成と兼任) 独立評価器の場合 far more tractable — 扱いやすい側 文脈 何を知っているか 実装の経緯・意図・途中の妥協をすべて知った上で採点する 成果物しか知らない。経緯や事情に引きずられず現物だけを見る コミットメント 何を宣言したか 「できました」と言った手前、その宣言を自分では覆しにくい 何も宣言していない。守るべき過去の発言がそもそも存在しない 役割の整合性 誰として振る舞うか 「作る人」の役割のまま採点も兼ね、自作の擁護に傾きやすい 「疑って検査する人」へ役割プロンプトを純粋に振り切れる サンクコスト 何を失いたくないか 数時間かけた自分の成果を、いまさら自分で否定したくない 費やした時間はゼロ。不合格を出す判断に未練が絡まない 構造的制約 何ができてしまうか 直す権限を持つため「後で直せば済む」と評価が甘くなる Write/Editを持たない。合否を告げる以外に取れる手がない では生成器を厳しくすればよいか — 3つの打ち手はすべて汚染されて返る 生成器への打ち手 実際に返ってきたもの 「厳しく自己評価せよ」 「欠点を3つ以上挙げよ」 「テストを書いて検証せよ」 厳しい言葉で書かれた甘い評価 些末な欠点がちょうど3つ 自分が通ると知っているテスト 主目的が採点を汚染 「作る」を負う限り評価は甘い 役割を分ける 主目的を持たない別人格 =独立エバリュエーター 分離の価値は「別のAIだから客観的」ではない。役割プロンプトの純度と、権限を構造的に剥がせることにある

核心は客観性ではなく「締めやすさ」の差にある

生成器も評価器も同じLLMであり、放っておけばどちらも甘い。ただし主目的を持たない独立評価器を懐疑的にチューニングする方がはるかに扱いやすい(far more tractable)。役割プロンプトを純粋に保て、Write/Editの権限を構造的に剥がせるからである。

GAN比喩が合うのは「敵対構造」までである

生成と評価の対抗で品質を押し上げる点は似ているが、重みは一切更新されない。改善が蓄積するのはコンテキスト側(契約・禁止句・採点例)であり、反復も5〜15回で収束する。

※「GANは数万回規模で学習を回す」という対比は機械学習一般の相場感であり、原典由来の数値ではない。

04
SOLO VS FULL HARNESS

効果の実証:単体エージェント vs フルハーネス

同一の1文プロンプトを単体エージェントとフルハーネスに投げた対照を見る。時間とコストの差そのものではなく、中核機能の成否失敗の可視性がどちら側にあるかを図で確認する。

同一の1文プロンプト対照 — 単体エージェント vs フルハーネス 「2Dのレトロゲームメーカーを作って」 — 両者に与えたのはこの1文だけ 所要時間 単体 20分 フル 360分(6時間) ≒18倍 — 20分→6時間からの導出値 コスト 単体 $9 フル $200 ≒22倍 — $9→$200からの導出値(記事本文の表現は "over 20x") 単体 — 中核機能が動かない 20min / $9 エンティティは表示されるが入力に反応しない 見た目は「悪くない」(原文表記) 実装された機能 素朴 原文表記のまま。機能数の数値の記載はない 結線切れをどこにも表示せず「完成しました」と報告 失敗が不可視 — 何ができていないか誰にも分からない フルハーネス — 中核機能が動く 6h / $200 実際に遊べる 16機能・一貫したビジュアルアイデンティティ 実装された機能数 16機能 未達は不可視にならない — DAW案件でも残存未達4件をQAが検出済み 「完璧ではないが、できていない箇所が明示的に把握できている」という質的な差 20倍超のコストで買っているのは見た目ではない。中核機能が動くこと、そして未達が可視化されること

※倍率「18倍」「22倍」は表示値(20分→6時間・$9→$200)からの導出値。記事本文の表現は "over 20x"。使用モデル世代は原文に記載がない。

20倍超のコストで買っているのは、中核機能が動くことと、未達が可視化されることだ。単体は結線切れをどこにも表示せず、気づかないまま「完成しました」と報告した。フルハーネスも完璧ではないが、DAW案件でも残存未達4件をQAが検出しており、届いていない箇所を明示的に把握できている。
05
THREE-AGENT LOOP

全体構成:3エージェントのループとスプリント契約

依頼からPASSまでの経路と、NEEDS_WORK時にジェネレーターへ帰還する反復をフロー図で追う。分けるのは役割・文脈・権限の3つで、受け渡しはすべてファイル名で確認できる。

3エージェントのループとスプリント契約 — 通信はメッセージではなくファイル スプリント単位で繰り返し 依頼 1〜4文 依頼文 プランナー 高レベル設計に集中 BUILD_PLAN.md 16機能・10スプリント スプリント契約の交渉 contract.json 全基準 passes:false で開始 契約確定 ジェネレーター 実装+自己評価+git commit 自己評価=安い粗フィルタ (捨てずに残す) 成果物+証拠を screenshots/ へ エバリュエーター Write/Edit なし・実物操作 拒否権を持つ受入検査 採点結果 1行目= PASS / NEEDS_WORK PASS 次スプリントへ 全スプリント完了で納品 NEEDS_WORK 指摘(場所+観測+期待) 次に直す箇所を特定できる粒度 再実装して再提出(反復 5〜15回) 契約基準の書き方 contract.json 良い例 「選択タイルで矩形領域が塗りつぶされる」 第三者が実物で判定できる 悪い例 「正しく動く」→ 曖昧で判定不能 悪い例 「fillRectangle が mouseUp で呼ばれる」 実装詳細の指定は完了条件にならない スプリント契約の効果 後付け基準の排除(完了の定義を着手前に固定) 抽象(計画)と検証(採点)の橋渡し 手戻りの前倒し(交渉段階でずれを発見) 評価の焦点化(基準外を見ない) ファイル通信の理由 リセット耐性(セッションが落ちても残る) 人間が途中で観察・介入できる 順序非依存(非同期に読み書きできる) 監査可能(往復の記録がすべて残る) プランナーの設計原則 野心的なスコープを立てる 高レベル設計に集中する AI機能を計画に織り込む 完了条件は第三者が実物で判定できる書き方

※「16機能・10スプリント」はレトロゲームメーカー1件の実績値であり、標準構成として一般化できる数字ではない。プランナーのツール構成は原典に確認できないため図に載せていない。

着手前に「完了とは何か」を契約として固定し、往復をすべてファイルに落とす。基準を実装後に作れば実装に都合よく寄り、往復を会話に置けばリセットで消える。この2つを封じて、はじめて反復が成立する。
ジェネレーターの自己評価は捨てない。安い粗フィルタとして明らかな未実装や落ちるテストを先に拾い、高コストなエバリュエーターのサイクルを消費しない。エバリュエーターはその上位互換ではなく、拒否権を持つ受入検査という別役割で残す。
06
EVALUATOR STRUCTURE

エバリュエーターを成立させる4条件と出力設計

評価器を成立させるのはプロンプトの文言ではなく、文脈・権限・証拠・デフォルト判定の4つの構造である。各条件がどの失敗を潰すか、そして出力が「次の指示」として着手できる粒度になっているかを図で確認する。

エバリュエーターを成立させる4条件 — 文言ではなく構造で縛る 成立させる構造 潰す失敗 運用上の注意 エバリュエーターが成立する4つの構造 プロンプトの文言ではなく、起動方式・tools・hookの構造が判定を支える 条件 1 まっさらな文脈 サブエージェント/別プロセスで起動 実装の経緯・自己弁護を知らない 成果物だけを見て採点する 条件 2 書き込み権限なし tools: Read, Glob, Grep, Bash Write / Edit を持たない 直せないから採点に徹する 条件 3 証拠主義 もっともらしさは正しさではない Plausibility is not correctness 開けないファイルは証拠にならない 条件 4 デフォルトFAIL 全基準 passes:false から開始 track-read.sh → verify-gate.sh 証拠を読むまで合格を書けない2段hook 潰す失敗 潰す失敗 潰す失敗 潰す失敗 同一セッションで役を切り替えると 実装の文脈が採点を汚染する 採点インフレ・役割混濁 (直しながら採点してしまう) diffの見た目で合格を出す ファイル名から中身を推測する 「迷ったら合格」に流れる 総合点による救済で不合格を消す 実装の置き場 4条件は evaluator.md の文言ではなく、 サブエージェント起動・tools指定・hook設定として実装する 注意 — 条件4のhookゲートの位置づけ hookは教材でありセキュリティ境界ではない(Bash経由で回避可・パス一致はbasenameのみ) テストの削除・編集は明文で禁止する お願いではなく構造で縛る — 「完了」を宣言ではなく検証可能な構造にする
評価出力の設計 — 点数ではなく次の指示 役に立たない出力 「85点でした。全体的によくできています。」 「もっと良くできます。」 どこを直せばよいか分からず、ジェネレーターは動けない 点数ではなく、次の指示へ 動ける出力 NEEDS_WORK 1行目はこの語で固定(機械可読) 場所 fillRectangle / mouseUp ハンドラ 観測 始点と終点にしかタイルが置かれない 期待 選択タイルで矩形領域が塗りつぶされる 粒度基準:次のセッションでそのまま着手できるか 出力設計の4原則 1. 1行目にPASS / NEEDS_WORKを固定 2. 次セッションで着手できる粒度 3. 場所+観測+期待の3点セット 4. 自分で直すことを申し出ない 評価者は自分で直すことを申し出てはいけない Do not offer to fix anything yourself. 導入の最小構成 agents/evaluator.md 1枚から始められる /goal は「別の高速モデルが毎ターン完了条件を判定してくれる簡易版」 (原文の記述はここまで)
実検出3件 — 「場所+観測」の粒度で返ってきた指摘
契約基準エバリュエーターの実際の指摘(場所+観測の粒度)
矩形塗りつぶしツールドラッグの始点と終点にしかタイルが置かれない。fillRectangle 関数は存在するが、mouseUp で正しくトリガーされていない
エンティティ削除Delete キーのハンドラが selectionselectedEntityId の両方を要求するが、エンティティのクリックでは selectedEntityId しか設定されない
フレーム並び替えFastAPI が 'reorder' を frame_id(整数)としてマッチさせ、422 を返す

※3件ともフルハーネス実験(レトロゲームメーカー)のスプリント3で検出。いずれも「実物を操作して観測→コードを追って原因特定」の順序でしか出ない指摘で、コードを眺めるだけのレビューでは出ない。

証拠読取ゲート — デフォルトFAILを支える2段のhook
hook見張る操作ゲートの動作
track-read.sh証拠の読み取り(Read)screenshots/ 配下の証拠を Read したことを記録する
verify-gate.sh結果ファイルへの書き込み(Write/Edit)証拠の読み取り記録が空なら、合格判定の書き込みを拒否する

※このhookは教材でありセキュリティ境界ではない(Bash経由で回避可・パス一致はbasenameのみ)。あわせて、テストの削除・編集は明文で禁止する。

もっともらしさは正しさではない。妥当そうに見える diff と、レイアウトが壊れているスクリーンショットの組み合わせは NEEDS_WORK である。— agents/evaluator.md(anthropics/cwc-long-running-agents のリファレンス実装を日本語化)
07
RUBRIC DESIGN

主観的品質を採点可能にする:ルーブリック4軸と配点の3原則

テストで判定できない品質は、4軸への分解と配点の偏らせ方で初めて採点可能になる。どの軸を重くし、何を減点対象に明記し、どこで総合点による救済を断つかを、採点表と配点原則の表から判断する。

ルーブリック4軸 — 配点の偏り・ハードしきい値・採点例 1. 配点の偏り — 重みは「モデルが苦手な軸」へ寄せる 質(Design Quality) 一体感のある全体になっているか 独自性(Originality) AIっぽさを超えた判断の証拠があるか 丁寧さ(Craft)=能力チェック 階層・余白・一貫性・コントラスト 機能性(Functionality) 目的が伝わりタスクが完了できるか モデルが苦手 → 配点を重く Quality・Originality に配点を寄せる デフォルトで得意 → 配点は軽く 放っておいてもできることに配点しても品質は上がらない ※棒の長さの比は概念表現。実測の重み比(点数配分)は原文に記載がない 2. ハードしきい値と採点例 — few-shotキャリブレーション 淡赤セル=しきい値未満/判定は PASS・NEEDS_WORK の2値のみ 採点例 独自性 丁寧さ 機能性 判定 決め手 しきい値 3 3 4 4 下限値 各軸5点満点。1軸でも未満なら総合点にかかわらず不合格 例A 2 1 4 4 NEEDS_WORK 独自性1がしきい値3未満で不合格 どのSaaSにもある構成そのまま・紫グラデーションのヒーロー 例B 4 4 3 2 NEEDS_WORK 機能性2がしきい値4未満で不合格 主要CTAが折りたたみ内 —「格好いいから合格」を封じる例 例C 4 4 4 4 PASS 全軸しきい値以上 根拠として証拠スクショ名と観測内容を明記して合格 ※しきい値の数値(3/3/4/4)と例A/B/Cは原文著者によるfew-shotの作例。記事は "Each criterion had a hard threshold" とのみ述べ、数値の裏付けはない (a) 重みは苦手な軸へ Design Quality・Originality を重く、 Craft・Functionality は軽く配点する (b) 初期値をペナルティ モデルの初期値(AIっぽさ)を具体語で列挙し 減点対象に明記する。これが最も効く (c) ハードしきい値 1軸でも未満なら総合点にかかわらず不合格。 平均点・総合点での救済を封じる LLMは平均に回帰する — 平均そのものを罰しないと、平均から離れない 減点圧力の実例:美術館サイトは9回目まで普通のダークテーマ → 10回目で3Dギャラリールームへ跳んだ(一発生成では出ないアウトプット) 3. 自ドメイン翻訳 — 軸名は変えず、中身を差し替える ドメイン 独自性 丁寧さ 機能性 資料・スライド 論旨が1本通っているか テンプレ構成の写しでないか 図解比率・表記統一・余白 読者が意思決定できるか 議事録 会議の流れが再構成できるか 要約が定型句に逃げていないか 表記・氏名・用語の正確性 決定事項と次の行動が実行可能か 分析レポート 問い→分析→示唆が繋がっているか このデータ固有の発見があるか 数値の桁・出典・定義の一貫性 次に打つ手が決まるか 記事 主張が最後まで折れていないか AI文体が出ていないか 事実誤り・リンク・表記 読者が行動を変えられるか ※自ドメイン翻訳の4行は原文著者の翻案(原典が示すのはフロントエンドデザイン用の4軸のみ)

※しきい値の数値(3/3/4/4)と採点例A/B/Cは原文著者によるfew-shotの作例。記事は "Each criterion had a hard threshold" とのみ述べており、数値の裏付けは原典にない。

判定する問い配点の扱い
Design Quality(デザインの質)部品の寄せ集めではなく、一体感のある全体になっているか重く配点する(モデルが苦手な軸)
Originality(独自性)テンプレートやライブラリのデフォルトを超えた、カスタムな判断の証拠があるか重く配点し、AI生成の兆候に減点を課す
Craft(作りの丁寧さ)タイポグラフィの階層・余白の一貫性・色の調和・コントラスト比が保たれているか軽く配点する(創造性チェックではなく能力チェック。デフォルトで得意)
Functionality(機能性)美しさと独立に、目的が伝わり、主要アクションが見つかり、タスクを完了できるか軽く配点する(デフォルトで得意)
配点の原則具体操作封じる失敗
(a) 重みは苦手な軸へ寄せるDesign QualityとOriginalityを重く、CraftとFunctionalityを軽く配点する放っておいてもできることへの配点で、品質が上がった気になる
(b) モデルの初期値そのものを減点対象に明記する「白カードに紫のグラデーション」を減点対象として書き込む。この減点でジェネレーターはリスクを取るようになったLLMは平均に回帰する。平均そのものを罰しないと平均から離れない
(c) 1軸でもしきい値未満なら全体を不合格にする合計点が高くても、1軸がしきい値未満ならNEEDS_WORKに倒す「見た目は良いが動かない」を平均点で救済してしまう
減点圧力は実際に出力を変えた。美術館サイトの実験では9回目まで「綺麗だが普通のダークテーマ」、10回目でCSSの3Dパースペクティブによる空間体験型ギャラリールームへ方向転換した。一発生成では出てこない出力が、反復と減点圧力から生まれた。
自ドメイン翻訳質(Design Quality)独自性(Originality)丁寧さ(Craft)機能性(Functionality)
資料・スライド論旨が1本通っているかテンプレ構成の写しでないか図解比率・表記統一・余白読者が意思決定できるか
議事録会議の流れを再構成できるか要約が定型句に逃げていないか表記・氏名・用語の正確性決定事項とネクストアクションが実行可能か
分析レポート問い→分析→示唆が繋がっているかこのデータ固有の発見があるか数値の桁・出典・定義の一貫性次に打つ手が決まるか
記事主張が最後まで折れていないかAI文体(「〜ではないでしょうか」で終わる文)を減点できているか事実・リンク・表記の正確性読者が行動を変えられるか

※軸名は変えず、中身を差し替えるのが翻訳の原則。このドメイン別の読み替えとWeb/UI以外の減点語彙は原文著者の翻案であり、原典由来ではない。原典の4軸はフロントエンドデザイン用に作られたもの。

08
EVALUATOR CALIBRATION

最難関:エバリュエーターの甘さを締める

作った直後の評価器は必ず甘く、その甘さは本物の問題を見つけた上で合理化して握り潰すという質のものになる。だから打ち手は検出能力ではなく判定基準側に置く。自分の評価器が診断軸のどこにいるかを図から特定する。

エバリュエーターの甘さ — 診断軸と締め直しループ リーニエンシーは「見つけた上で握り潰す」。だから検出能力ではなく判定基準側を締める ※Anthropicが「何ラウンドも費やした」最難関の工程(具体回数の記載なし) 甘い 厳しい ほぼ常にPASS 不良品を投げても通ってしまう 対処: 例B系の不合格例を追加 デフォルトFAILを強化する 健全レンジ: 指摘3〜7個 すべての指摘に着手できる状態 指摘15個以上・些末の山 厳しさが空回りしている 対処: 中核機能の破綻を優先 「些末は列挙しない」を追記 良品にもNEEDS_WORK 締めすぎで良品を落とす 対処: しきい値を下げる 良品のPASS例を追加する 軸外の症状: 「もっと良くできます」だけで場所・観測・期待がない → 対処: 3点セット(場所+観測+期待)の出力形式を強制 ※「3〜7個」「15個以上」のレンジは原文著者の実務目安(原典に根拠なし) 締め直しの運用ループ — 既知サンプルでキャリブレーションする 1. 既知の不良品を投げる わざと欠陥のある成果物を渡す 判定を見る 2. PASSなら根拠を読む どう合理化したかを特定する 甘さの根拠 3. 合理化の言い回しを禁止句化 「意図的かもしれない」「MVPとしては許容範囲」 基準を更新 4. 良品も投げる 締めすぎを検出する 更新した評価基準で再投入 — 良品でも締めすぎないか毎回確認する

※「指摘3〜7個が適正」「15個以上は厳しすぎ」のレンジは原文著者の実務目安であり、原典に根拠はない。Anthropicはこの調整に「何ラウンドも費やした」と述べるのみで、具体的な回数の記載もない。

ずれの向き観測される症状対処の向き
甘い(リーニエンシー)本物の問題を正しく検出した上で、「意図的な設計かもしれない」「MVPとしては許容範囲」と合理化して見逃す検出側ではなく判定基準側を締める(下表の5手段)
厳しすぎ(逆振れ)些末な指摘の山になり、ジェネレーターが中核の破綻に着手できない。既知の良品にNEEDS_WORKが返るしきい値を下げ、良品の採点例を追加する
締める手段具体操作封じる漏れ方
Few-shotキャリブレーション点数内訳付きの採点例を評価者プロンプトに埋め込む「この出来なら4点」という基準のぶれ
例の固定採点例を固定し、セッション間で差し替えないスコアドリフト(回ごとの基準ずれ)
合理化の禁止明文化「たぶん動くと仮定していることに気づいたら止まって証拠を探せ」を明示的に書く「意図的かもしれない」で通す逃げ
デフォルトFAIL全基準をpasses:falseから始め、迷ったら不合格に倒す証拠の不在を合格理由にする判定
ハードしきい値1軸でも下回れば総合点にかかわらず不合格にする平均点による救済
甘さ調整の中心は運用ループにある。既知の不良品を投げてPASSが返ったら根拠を読み、合理化の言い回しを禁止句として追記する。同時に既知の良品も投げて、締めすぎを検出する。
09
COST STRUCTURE

コスト構造と反復回数:唯一のダイヤルはどこか

コストの約9割はジェネレーターが占め、評価を削るのはコスト削減としてほぼ無意味になる。どの部品が削減ダイヤルになり得るのかを、構成比・収束カーブと下の対照表から判断する。

コスト構造と収束 — 唯一のダイヤルは反復回数(DAW案件の実測) 総額 $124.70 / 3時間50分 プランナー $0.46 = 0.4%(4.7分) ビルド R1 $71.08 ビルド R2 $36.89 R3 QA計 $10.39 ビルド $113.85 = 91.3%(内訳表からの再計算値) R1 $71.08(2時間7分) / R2 $36.89(1時間2分) / R3 $5.88(10.9分) QA計 $10.39 = 8.3% R1 $3.24 / R2 $3.09 / R3 $4.06 ラウンド別の所要時間(分) — ビルドは急減衰・QAはほぼ一定 120 60 0 R1 R2 R3 127分 62分 11分 ビルド時間 127 → 62 → 11分(急減衰=収束している) 8.8分 6.8分 9.6分 QA時間 8.8 → 6.8 → 9.6分(ほぼ一定) 反復の性質 — 5〜15回を前提に予算を組む 反復は5〜15回。前半は線形改善で進む 後半に非線形ジャンプ(9回目まで普通 → 10回目で別物) 早期に打ち切ると「無難で綺麗なもの」で終わる 各サイクルは実時間を消費(評価器が実物を操作) 運用判断 — 回すダイヤルは1つ 「何回回すか」がコストと品質のほぼ唯一のダイヤル 削るならジェネレーター側の反復回数 プランナー($0.46・総コストの0.4%)は削らない ※QAは1ラウンド$3〜4・6.8〜9.6分で各ビルドラウンドの成果を検査 / Opus 4.6世代・スプリント分割なしで2時間以上コヒーレントに走行(記事記載) エバリュエーターを削るのはコスト削減としてほぼ意味がない。削るならジェネレーター側の反復回数。 ※比率とダイヤル論はDAW案件1件の実測

※比率とダイヤル論はDAW案件1件の実測に基づく。ジェネレーター比率91.3%は内訳表からの再計算値(原文の本文表記91.5%と微差があるため、表からの再計算値を採用)。

部品(ダイヤル候補)実測値運用判断
ジェネレーターの反復回数反復は5〜15回。方向転換は9回目→10回目のように後半で非線形に起きる。各サイクルは評価器が実物を操作するため実時間を消費する唯一の削減ダイヤル。ただし早期に打ち切ると「無難で綺麗なもの」で終わる
QA(エバリュエーター)1ラウンド$3〜4で、$71.08のビルドの品質を保証する。QA時間は3ラウンドを通じてほぼ一定(8.8→6.8→9.6分)固定費に近く、削ってもコスト総額はほとんど動かない
プランナー4.7分/$0.46(総コストの0.4%)で、短い依頼を実装可能な仕様に展開する原典が「最も安く、最も効果が大きい部品」と位置づける。削減候補にしない
10
BOUNDARY SHIFT

いつ要らなくなるか:境界とモデル世代、部品の棚卸し

エバリュエーターの価値は、タスク難易度とモデル能力の差で決まる。境界は世代ごとに外側へ移動するが、消えるわけではない。自分のタスクが境界のどちら側にあるか、次のモデル更新でどの部品を外して検証すべきかを図から判断する。

部品の棚卸し — 世代で外した部品と、外側へ動く境界 ハーネスの部品 Sonnet 4.5 Opus 4.5 Opus 4.6 リセット+ハンドオフ 必要 — 性能に不可欠 外した — リセット不要に 外したまま スプリント分割 必要 必要 外した — 分割なしで品質が保てた 毎スプリント評価 必要 必要 単一パスQA(最後にまとめて)へ移行 プランナー 必要 必要 必要 エバリュエーター本体 必要 必要 必要 — 境界の外側のタスクに効く 凡例: 塗り=その世代で必要 / 破線=外して検証済み(陳腐化した部品) 残るのはプランナーとエバリュエーター本体 タスク難易度とモデル能力の境界 — 境界は世代とともに外側へ移動する Sonnet 4.5 の能力境界 Opus 4.6 の能力境界 境界は外側へ移動する Sonnet 4.5 ジェネレーター単独で十分 エバリュエーターが効く Opus 4.6 ジェネレーター単独で十分(範囲が外へ広がった) エバリュエーターが効く タスク難易度: 低い 高い 常に必要でも、もう不要でもない。自分のタスクが境界のどちら側にあるかで決まる。 ※不要になったのではなく、境界の内側に入るタスクが増えた 棚卸し手順 — ハーネスは資産ではなく仮説の集合 新モデルが来たら部品を1つずつ外して走らせ、「まだ効いているか」を確認する 誤解: エージェントを増やせば品質が上がる 増やすほどコスト・レイテンシが線形以上に増える。仮説を失った部品はただの固定費になる 適用範囲の限界 — 原典が明示する未解決の問い フルスタックWeb開発に最適化 科学研究・財務モデリングへの 一般化は今後の課題とされる 単一汎用 vs 専門マルチは未解決 どちらが上回るかは原典でも 未解決の問いとして残されている ブラウザネイティブ要素の盲点 alertモーダルはビジョンモデルに 見えず、機能退行の温床になる verify-gate hookは教材 セキュリティ境界ではない。Bash経由で 回避可・パス一致はbasenameのみ 面白いハーネスの組み合わせの空間は、モデルが良くなっても縮まらない。移動するだけである。 — 原典の締め・要旨(日本語要旨であり、逐語引用ではない)

※原文の主張は「境界の外側への移動」であり、エバリュエーターが要らなくなったという主張ではない。以前は検査が必要だったタスクの一部が、ジェネレーター単独の守備範囲に入った、と述べている。棚卸し手順・エージェント増の否定・適用範囲の限界・原典の締め(要旨)は上図内に記載。