ハーネスエンジニアリング
習慣とは、あなたが忘れずにやらなければならないことです。作業環境を整える次の段階は、それらのチェックをAIがスキップできないものにすることです。それがハーネスです。
ハーネスは、エージェントと現実世界の間に立つセキュリティ検査場だと考えてください。危険なステップごとに、三つのうちのいずれかを行います。何が起きたかを記録するか、警告するか、その操作をきっぱり遮断するかです。コマンドが実行される前、ファイルが書き込まれる前、プロンプトが送信されるとき、コミットのとき、プッシュのとき——そこにゲートがあります。深夜2時にテストを走らせ忘れるかもしれないあなたと違って、エージェントはそれを回り込めません。
エージェントが取るすべての危険な操作は、まずハーネスを通る。各ゲートは、それが現実世界に届く前に、記録するか、警告するか、遮断できる。
┌─────────┐ ┌──────────┐
│ AGENT │ │ 現実 │
│ 動作 │ │ 世界 │
└────┬────┘ └──────────┘
│ ▲
▼ │
╔════════════════ ハーネス(門) ════════════════╗ │
║ ║ │
║ ┌────────┐ ┌────────┐ ┌────────┐ ║ │
║ │ 記録 │ │ 警告 │ │ 遮断 │ ║────┘
║ │ ログ │ │ 警報 │ │ 停止 │ ║ 許可
║ └────────┘ └────────┘ └───┬────┘ ║
║ │ ║
╚═══════════════════════════════════╪══════════╝
▼
┌─────────┐
│ 拒否 │
└─────────┘
なぜ必須なのか。バイブコーディングの根本的な賭けは「AIには全力で走らせ、あなたは舵を取る」というものです。それが成り立つのは、あなたがまばたきしている間にAIが崖から飛び出せないときだけです。ハーネスは安全を警戒心(すべての差分を読み、すべてのルールを覚えておくこと)からコード(自動的に強制されるルール)へと移します。本物のユーザーの前に出すものなら、それは任意の仕上げではありません——自律性を安全にする、まさにその核心です。
良いハーネスは、知っておく価値のあるいくつかの原則に従います。
- 成功は静かに、失敗は大きく — 問題がないときは何も言わないので、警告には意味が残ります。
- 決して自動修正しない — 提案するか、遮断するか、警告する。エージェントをこっそり「直して」問題を隠したりはしません。
- 新しいルールを足す前に、眠っているルールを引退させる — 古いチェックの山ではなく、無駄がなく信頼されている状態を保ちます。
- 設定駆動 — エンジンは一つ、プロジェクトごとの設定で、どのリポジトリにも差し込めます。
- 追記専用(append-only)のログ — エージェントが実際に何をしたかの、改ざんが見抜ける記録。
これをゼロから作る必要はありません。既製の、差し込み式のハーネスがあります——dancinlab/harness は、コーディングエージェントのツールのライフサイクルに配線できる、プロジェクト非依存のエンジンの一つです。正直に言えば、ハーネスはAIを正しくしてはくれません。AIの間違いを安く捕まえられるようにするだけです——速く動いているとき、それが戦いのほとんどなのです。