Harness² — 反復タスクのハーネス化
Harness²: Recursive Agent Harnessing for an Open World を基に、 一度実行が受け入れられ、それを繰り返すことを目的とするケースに絞って適用したものです。
概要
一度成功することと、再現可能であることは同じではありません。受け入れられた実行は、唯一信頼できる基準点です。そこには実際の成果物、実際の軌跡、そしてユーザー自身が編集した箇所が含まれています。
最適化の対象は次回の実行のプロセスであって、今回の成果物ではありません。そのため、出力はより良いレポートではなく、ハーネス、SOP、および回帰チェックリストです。
使用すべき状況
- ユーザーが「これから毎週これをやる」「このプロセスを確定しよう」と言った場合
- 同じ種類のタスクが少なくとも一度実行され、その結果が受け入れられた場合
- プロセスが誰かの頭の中にしかない場合:どのスクリプトを先に実行するか、どのステップで人間の確認が必要か、どこに落とし穴があるか
- 同じ種類のタスクが同じように失敗し続ける場合:出典の帰属漏れ、定義の不一致、絶え間ない手戻り
使用すべきでない状況
- 単発のタスク → そのまま実行する
- 実際の評価者、単体テスト、または計算可能な合格基準が存在する → それを使ってください。行動比較よりもはるかに優れています
- ユーザーがフォーマットや定義の変更のみを求め、具体的に指示している → ハーネスを直接編集し、比較ループをスキップしてください
- プロセスがすでに安定しており、コストやレイテンシが重要である
ハーネスとは
モデルの周りにあり、編集可能なものすべてです。4つあれば十分に実行でき、8つが完全なセットです。
| コンポーネント | 役割 | 最小構成 |
|---|---|---|
| システムプロンプト | 役割、出力契約 | ✅ |
| ツールガイダンス | 各データソースの使用方法、引数の指定方法 | ✅ |
| スキル | 再利用可能な判断と手順 | ✅ |
| ガードレール | ハード制約(数値の捏造禁止、出典の明記必須) | ✅ |
| メモリ | インスタンス間で引き継ぐドメインノート | |
| スクリプト | 決定的な作業(変換、重複排除、集計) | |
| サブエージェント | 検証や並列検索の切り出し | |
| プラグイン | ミドルウェア(Nステップごとに自己チェックを強制) |
ハーネスは差分を取って再利用できるように、ファイルとして存在しなければなりません。「いつもこんな感じでやっている」というチャット内の口伝では固化できません。
ループ: Propose(提案) → Probe(検証) → Compose(構成)
0. ベースラインを凍結する
前回の実行を完全にアーカイブします:ハーネスのスナップショット、完全な軌跡(ツール呼び出しシーケンス + 中間成果物)、最終成果物、ユーザーの編集差分、合格基準、データスナップショットまたは時間枠。
ユーザー自身が編集した箇所は、信頼性の高い欠陥箇所であり、いかなる推測よりも信頼できます。
1. 提案
ベースラインを読み、2つの候補を提案します。各候補には、それが対象とする欠陥を一文で示します。
- 不変的欠陥: プロセスの欠陥 — 相互チェックの欠如、中間結果の非永続化、失敗の再試行なし、出典の未ラベル付け、コンテキストの肥大化
- ドメイン的欠陥: このタスククラスに固有の専門的制約 — 定義の一貫性、通貨または単位の変換、時間枠の整合性
両方が必要です。「一般的な疾患」と「このタスククラスに固有の疾患」を区別するためです。候補が1つだけでは、結果を原因に帰属できません。
2. 検証
同じ入力で再生し、変数を制御します:同じモデル、同じツールセット、同じデータスナップショット。ハーネスのみを変更します。
2つの項目を比較します。
- ベースラインに対する行動の差異: ツールセットと順序、ステップ数、繰り返し呼び出し、エラーと再試行、人間による修正ポイントが消失したか、中間結果が永続化されたか、出典が完全に帰属されたか
- 再生の一貫性: もう一度実行する — 構造は同じですか?固化の核となる指標は安定性であり、単回の最良値ではありません
比較は「行動が変わった」ことを示します。「結果が正しい」ことを示すわけではありません。この2つを混同してはいけません。
3. 構成
次の条件を満たす変更のみを保持します:(a) 再生後も合格基準を満たす、(b) 手戻りや人間による修正を減らす。元の状態を維持することも許容されます — 証拠のない変更はノイズです。
すべての決定を1行で記録します:変更 | 対象とした欠陥 | 観察された証拠 | 採用 / 修正 / 却下
4. 固化
3つの成果物。1つ欠けても固化したとは言えません。
harness/— 編集可能なファイル群SOP.md— 手順、チェックポイント、人間に問い合わせるべきタイミング、既知の落とし穴(10項目を超えると誰も読まない)REGRESSION.md— 次回の実行後に確認するための合格チェックリスト
変更が複数回にわたって採用された場合、それをスタンドアロンのスクリプトまたはスキルに昇格させます。
証拠の階層
ユーザーの編集差分 > 受け入れられた成果物との比較 > 再生の一貫性 > 軌跡の差異 > 直感
証拠ではないもの: より長いまたは詳細なレポート、「今回はユーザーが文句を言わなかった」、モデルがより良い結果を出したと主張すること。
予算
デフォルトはk=1プラス1回の再生。固化は時間をかけて効果を発揮するため、複数回のラウンドに分散させます:毎回の反復実行中に1つの候補だけを検証し、すべての並列ブランチを一度に3倍のコストで実行するのを避けます。
赤信号 — 見つけたら停止
- 前回のハーネスをユーザーの編集差分を読まずにそのまま継承する
- 異なる入力、モデル、またはデータスナップショットで再生し、それでも「より良い」と主張する
- 1回の再生だけで結論を出し、ランダム性を排除していない
- 5つのコンポーネントを一度に変更し、原因の特定を不可能にする
- 次回誰も従わない20項目のSOPを作成する
- 偶然の一発芸を不変的欠陥のエントリに書き込む
よくある間違い
| 間違い | 結果 | 修正 |
|---|---|---|
| アーカイブ前に最適化 | ベースライン喪失、変更の原因特定不可 | まずベースラインを凍結する |
| 「読みやすい」を証拠とする | 好みを固化するだけで、プロセスは固化しない | 具体的な観察に結び付ける |
| プロンプトのみの変更、チェックポイントなし | 次回も人間が手作業で修正する | すべての欠陥にチェックポイントを組み合わせる |
| SOPを旅行記として書く | 誰も読まないため、何も固化されない | 決定ポイントと落とし穴のみを書く |