ハーネスエンジニアリング は何をしますか?
ハーネスエンジニアリングは、エージェントの周囲の制御システムを設計します。つまり、エージェントが何を編集できるか、どのようにフィードバックを受け取るか、どこに状態を書き込むか、障害からどのように復旧するか、そして誰が不可逆的なアクションを承認できるかを定義します。ハーネスは、役立つエージェントセッションと、目的を損なうことなく何日も実行できる自律ループとの違いを生み出します。
アクティブ化のタイミング
以下の場合にこのスキルをアクティブ化してください:
- 自律的な研究または実験ループを構築する場合
- ロックされたメトリクスと編集可能なコードまたはコンテンツを備えたエージェント環境を設計する場合
- PRを作成するエージェントまたはバックグラウンドエージェントを作成する場合
- エージェントが頻繁な人間のプロンプトなしで安全に実行できるかを評価する場合
- エージェントワークフローに新規性、アブレーション、枝刈り、ロールバック、または永続ログを追加する場合
- エージェントがベンチマークをゲーミングしたり、ルーブリックを弱体化したり、コンパクションをまたいで状態を失ったりするのを防ぐ場合
以下の隣接作業については、他のスキルが担当するため、このスキルをアクティブ化しないでください:
- 自律制御面を伴わない一般的な品質ゲート、回帰スイート、または成果指標:
evaluation。 - ハーネスツールのツールスキーマ、応答形式、リカバリーエラー:
tool-design。 - プロジェクトレベルのタスクとモデルの適合性、パイプライン形状、コスト計画:
project-development。 - リモートサンドボックス、ウォームプール、ホスト型セッションインフラ:
hosted-agents。
中核的概念
ハーネス境界
エージェントを、それが動作する環境から分離します。エージェントはアクションを提案し、ハーネスは許可されるサーフェス、フィードバック、永続性、昇格ルールを定義します。
4つのサーフェスクラスを使用します:
| サーフェス | 例 | ルール |
|---|---|---|
| ロック | 評価メトリクス、ルーブリック、検証スクリプト、マージポリシー | エージェントは読み取りと変更の提案は可能だが、変更したルールで自己採点はできない |
| 編集可能 | スキルドラフト、実験ファイル、プロンプト、テスト中の設定 | エージェントはループ中に変更できる |
| 追記専用 | 結果ログ、研究スレッド、拒否されたアイデア | エージェントは追記のみ可能で、書き換えは不可 |
| 人間制御 | マージ、本番デプロイ、認証情報、破壊的操作 | 明示的な人間の承認が必要 |
タイトなフィードバックループ
フィードバックが高速で、曖昧さがなく、ゲーミングされにくい場合に自律性は機能します。Karpathyのautoresearchは最小限のパターンです:1つの編集可能なファイル、1つのロックされた評価ファイル、固定された壁時計予算、1つのスカラーメトリクス、gitロールバック、永続的な結果ログ。教訓は、すべてのハーネスに1つのメトリクスが必要ということではなく、曖昧なフィードバックが曖昧な自律性を生み出すということです。
オープンエンドな研究からスキルへの作業では、スカラーメトリクスを、ロックされたルーブリック、決定論的な構造チェック、ソーストレーサビリティ、および人間のレビューしきい値に置き換えます。
永続状態
長時間実行エージェントは状態を外部化する必要があります。計画、ソースキュー、結果、障害、ハンドオフをファイルに保存することで、将来のエージェントがチャット履歴に依存せずに再開できるようになります。Prime Intellectの自律型nanoGPTの研究は、回復、監視、監査のための永続的なスクラッチパッドとTHREAD.mdスタイルのログの価値を示しました。
追記専用ログを以下の目的で使用します:
- 試行したこと
- 改善または失敗したこと
- 候補が保持された、破棄された、またはレビューに回された理由
- チェックされた上流ソース
- 次のエージェントがすべきこと
探索の規律
エージェントは最も近いサーフェスを活用し、複雑さを積み上げ、枝刈りを軽視する傾向があります。明示的な探索ルールを追加します:
- 定期的に上流ソースを更新する。
- 大規模な予算を使う前に新規性チェックを要求する。
- 再発見を避けるために拒否された試行を保存する。
- スタックに複数の追加がある場合、1つを除外した枝刈りを実行する。
- 品質が同等の場合、簡素化を報酬とする。
- 昇格前に個別の検証を使用する。
メカニズムレジストリ
研究からスキルへのシステムでは、散文とは別に受け入れられたメカニズムを追跡します。メカニズムレコードには、安定したmechanism_id、owning_skill、status、アクティベーションシナリオ、動作変更、エビデンス、障害モードを含める必要があります。新規性ゲートは、より広範なコーパスの重複を使用する前に、このレジストリと比較する必要があります。なぜなら、キーワードの重複は古い言い回しを捉える一方で、メカニズムの比較は真の重複を捉えるからです。
ガバナンス
自律エージェントはPRを準備することはできますが、ガバナンスは明示的でなければなりません。エージェントは変更のドラフト作成、チェックの実行、PRサマリーの作成を行うことができます。ユーザーが特定のアクションに対して明示的に許可を与えていない限り、マージ、デプロイ、プッシュはできません。
詳細トピック
オートリサーチスタイルループ
このパターンは、安定した評価器に対してアーティファクトを最適化する場合に使用します:
ロックされたコンテキストを読む -> 仮説を選ぶ -> 許可されたサーフェスを編集する -> コミット/チェックポイント
-> 評価器を実行する -> 結果をログに記録する -> 良ければ保持 -> 悪ければ破棄またはロールバック
-> 繰り返す
必須プロパティ:
- 評価器は編集可能なサーフェスの外側にあること。
- フィードバックの周期は試行を比較できる程度に固定されていること。
- 失敗した試行は監査証跡を残すこと。
- ロールバックは安価であること。
- エージェントがクラッシュやタイムアウトに対するポリシーを持っていること。
研究からスキルへのループ
このパターンは、ソースがスキル変更になる場合に使用します:
発見 -> 取得 -> ゲート -> スコアリング -> メカニズム抽出
-> 既存または新しいスキルにマッピング -> 提案のドラフト作成 -> 構造検証
-> PR準備 -> 人間によるレビュー
ロックされた評価器は、ソースルーブリック、スキル変更ルーブリック、構造チェック、レビューア承認の組み合わせです。編集可能なアーティファクトは提案されたスキル差分です。
メトリクスゲーミングへの耐性
最適化エージェントはハーネスを学習すると想定します。以下に対して防御します:
- 評価コードまたはルーブリックを編集し、その新しいバージョンを自己承認に使用する
- 判定者を喜ばせるがスキルのアクティベーションを損なう冗長なコンテンツを追加する
- 未取得のソースを引用する
- 重要な次元で失敗しながらも総合スコアを最適化する
- ログで失敗した結果を回避する
緩和策:実行ごとにルーブリックをロックし、次元ごとのスコアを報告し、ソース取得の証拠を要求し、拒否された試行を保存し、ガバナンス変更を人間のレビューに回す。
監視エージェント
長時間実行には監視エージェントを使用しますが、明示的に別途指示がない限り、読み取り専用の報告に制限します。監視出力は以下を報告する必要があります:
- 現在の最良候補
- アクティブなジョブまたはドラフト
- 最後の上流ソース更新
- 失敗または停滞したループ
- ログと主張された状態の間の不一致
- 次のアクションとブロッカー
実践的なガイダンス
ハーネスデザインチェックリスト
- 目的を一文で定義する。
- ロック、編集可能、追記専用、人間制御の各サーフェスを特定する。
- フィードバックメカニズムを選択する:スカラーメトリクス、ルーブリック、決定論的テスト、人間レビュー、またはそれらの組み合わせ。
- 保持、破棄、クラッシュ、タイムアウト、レビューの状態を定義する。
- ループ開始前に永続的なスレッドログを作成する。
- 長時間実行ループのために、ソース更新、メカニズムレジストリの新規性チェック、枝刈りルールを追加する。
- エージェントが尋ねずに実行できることと承認が必要なことを定義する。
- ハーネスを1つの既知の良好なアーティファクトと1つの既知の不良なアーティファクトで検証する。
ファイルレイアウト
research-run/
THREAD.md
sources/
queue.md
evaluations/
proposals/
logs/
results.tsv
rejected.md
drafts/
機械可読な追記専用ログにはTSVまたはJSONLを使用します。ハンドオフやレビューア向けのサマリーにはMarkdownを使用します。
例
例1: ロックされたメトリクス
エージェントがtrain.pyを最適化しますが、prepare.pyがデータの読み込みと評価を担当します。エージェントはモデルを編集できますが、メトリクスは変更できません。失敗した実験はログに記録されロールバックされます。
例2: ロックされたルーブリック
エージェントが新しいAnthropicまたはOpenAIのエンジニアリング記事を評価しますが、ソースキュレーションのルーブリックは実行中ロックされています。ソースが通過した場合、エージェントはスキル提案をドラフトします。ルーブリックのしきい値を下げてソースを受け入れることはできません。
例3: 自動マージなしの自動PR
エージェントは、ソース、スキル、構造チェックを通過した後、ブランチとPR本文を準備します。PRは未解決のリスクを記載し、人間のマージ承認を待ちます。
ガイドライン
- ループを開始する前に評価器をロックする。
- 編集可能なサーフェスは、信頼性の高い差分を得るために十分に狭く保つ。
- コンテキストのコンパクションが状態を消去する前に、永続ログを書き込む。
- 総合スコアだけでなく、次元ごとのスコアも報告する。
- 引用の前にソース取得を要求する。
- 広範な検索には新規性ゲートを、複雑なスタックには枝刈りゲートを追加する。
- 品質が同等の場合は簡素化を優先する。
- PR準備とマージ権限を分離する。
- ハーネスの変更を古い評価器と新しい評価器の両方で再検証する。
- 停止した自律ループは、エージェントの性格の問題ではなく、ハーネスの障害として扱う。
落とし穴
- 可変評価器: エージェントがメトリクスを編集できる場合、タスクではなくベンチマークを最適化する可能性があります。実行中はルーブリックと評価コードをロックしたままにしてください。
- チャットのみのメモリ: 計画が会話履歴にのみ存在する場合、コンパクション後に長時間実行は失敗します。最初からスレッドログと結果ファイルを書き込んでください。
- 破棄記録の欠如: 拒否された試行のログがないと、エージェントは失敗したアイデアを繰り返します。再発見を避けるのに十分な詳細を含めて失敗を保存してください。
- 複雑性の蓄積: エージェントは変更を積み上げ、削除することはほとんどありません。枝刈りラウンドを要求し、同等品質の簡素化に報酬を与えてください。
- 時期尚早な新規性の主張: エージェントは組み合わせを新規とラベリングします。新規性を主張する前に、既存のリポジトリスキル、ソースキュー、拒否ログと比較してください。
- 監視の誤報告: 監視エージェントは古いまたは矛盾した状態を要約する可能性があります。主張の背後にあるファイルやログを引用することを要求してください。
- 人間の承認の曖昧さ: 「PRを準備する」は「PRをマージする」ではありません。承認境界をハーネス内で明示的にしてください。
- 不安定なソースのドリフト: 急速に動く研究室の主張はすぐに古くなります。日付入りのエビデンスを参照に含め、再検証のスケジュールを設定してください。
統合
このスキルは以下に接続します:
- evaluation - ルーブリックと品質ゲートがロックされたフィードバックサーフェスを提供します
- advanced-evaluation - ペアワイズ比較とバイアス軽減が提案レビューを改善します
- filesystem-context - 永続ログ、スクラッチパッド、スレッドファイルが状態を保持します
- multi-agent-patterns - 研究者、検証者、監視者、書き手のエージェントは分離されたコンテキストを必要とします
- tool-design - ハーネスツールは明確な契約とリカバリーエラーを公開する必要があります
- project-development - ファイルベースのパイプラインとタスクモデル適合分析によりループをシンプルに保ちます
- hosted-agents - バックグラウンド実行にはサンドボックス、スナップショット、承認境界が必要です
参考文献
内部参照:
researcher/README.md- リポジトリネイティブな研究からスキルへのオペレーティングシステムを実装する際に参照researcher/rubrics/harness-change.md- エージェントハーネスへの変更を評価する際に参照researcher/runbooks/autonomous-research-loop.md- ソースからスキルへのループを実行する際に参照
外部リソース:
- Karpathy
autoresearch- ロックされた評価を用いた制約付き自律実験ループ - Prime Intellect autonomous nanoGPT speedrun - 永続スクラッチパッド、ハンドオフ、監視、自律性障害モード
- AlphaEvolve and FunSearch - LLM生成候補と体系的な評価器の組み合わせ
- HELM and LM Evaluation Harness - 透過的で再現可能な評価インフラ
スキルメタデータ
作成日: 2026-05-14 最終更新日: 2026-05-15 作成者: Agent Skills for Context Engineering Contributors バージョン: 1.1.0