DeepSeek Harnessで支出ガードレールをどこに置くか
Updated August 16, 2026 · first published August 16, 2026
月次請求書で初めて自分の予算を知るエージェントに、予算はありません。あるのは事後検証だけです。どのハーネスに対しても有用な問いは「ループのどこに立って『いいえ』と言えるか」であり、DeepSeek Harness は名前の付いた二つのウォーターフォール拡張点でそれに答えます。
まずループの形
ハーネスはターンとステップのモデルを使います。ステップとは一回のモデルリクエストと、そこから生じるツール呼び出しのことです。ターンはゼロ個以上のステップを含みます。ターンの流れはおおよそ、入力の受理、プロンプト組み立て、agent/pre-step、LLM ストリーム、ツール実行、ステップ完了、ターン終了です。
二つのイベントストリームが並走します。session/event は再生に耐える永続的な事実(チャンク、メッセージ、ツール呼び出し、結果)を運びます。agent/* はライブの調整シグナル(ステータス、受信箱、リクエスト介入)を運びます。ガードレールは後者に、会計は前者に属します。
介入点 1:agent/pre-step
モデルリクエストが送出される前のチェックポイントです。ドキュメントは、返された agent/pre-step の決定が権威を持つこと、そして next() をラップするリスナーは意図的な置換でない限り下流のメッセージを保つことを明記しています。この性質こそが予算ゲートとして使える理由です。リスナーは提案されたステップを拒否も変更もでき、その決定が通ります。
ここに置くべきもの:
- ターンあたりのステップ上限。 暴走の失敗形態は、収束しないターンです。硬い上限は、青天井の請求を上限付きの請求に変えます。
- 累積トークン予算。 セッションログのこれまでの使用量を合計し、閾値を超えたら次のステップを拒否します。
- モデルのダウンシフト。 ソフト閾値を超えたターンでは、拒否ではなくより安いルートへステップを書き換えます。
- コンテキストサイズの制限。 プロンプト組み立てはこのフックより前なので、組み上がったリクエストをここで可視・計測できます。
介入点 2:tools/pre-execute
ツール実行は三段のパイプラインです。まず tools/pre-execute ウォーターフォールが走り、次に単調ガード、そのあとで初めてツール本体が、サンドボックス内でファイルシステムの門番付きで実行されます。実行後にはポスト実行ウォーターフォールが結果を受理・遮断・置換・文脈追加でき、ToolDefinition.finalizeContent が内容の不変条件を同期的に強制します。
権限レイヤーは意図的に非対称です。登録された単調ガードは、識別子を保護されたうえで拒否か棄権のみを行い、決して許可しません。ガードが拒否した場合、あるいは ctx.approval のワンショットプロンプトが存在しないか応答不能な場合、結果は拒否となりツール本体はスキップされます。フェイルオープンではなくフェイルクローズです。
ファイルシステムの変更は別枠で制御されます。通過できるのは fs/write-intent または fs/edit-intent の変更だけです。書き込みはツールが動いた副次的な結果ではありません。
このパイプラインを制御点として信頼できるものにしている性質は二つです。ガードは拒否しかできないこと、そして応答不能な承認プロンプトは拒否になること。自作のエージェント・ポリシー層の多くは承認チャネルが欠けたときフェイルオープンしますが、それこそまさに必要だった場面です。
パイプラインが残す記録
監査証跡は三つのセッションイベントで得られます。実行前の tool/call、サブ呼び出しの tool/code-dispatch、そして最終的で権威ある結果の tool/result です。サブ呼び出しが別途記録される点は重要で、内部でファンアウトするモデル可視のツール呼び出しが、そのファンアウトを隠しません。
実用的なガードレールの組み合わせ
| 制御 | フック | 止めるもの |
|---|---|---|
| ターンあたり最大ステップ数 | agent/pre-step | 収束しないループ |
| 累積トークン上限 | agent/pre-step | じわじわ進む超過支出 |
| 閾値超過でのルート降格 | agent/pre-step | 安価な作業へのフロンティア価格 |
| コストクラス別ツール許可リスト | 単調ガード | 安価な文脈での高価なツール |
| サブプロセスとネットワークの拒否 | ctx.sandbox ポリシー | 計測されない外向き通信 |
| write-intent のゲート | ctx.fs シーム | レビューされない変更 |
留保
DeepSeek Harness は developer preview であり、README 自身が互換性を壊す変更を警告しています。ここに挙げたフック名と意味論は今日時点で文書化されているものです。これらに対して作るガードレール・プラグインは後で手を入れるコードだと考え、構築時のバージョンを固定してください。
Related
Want this applied to your own LLM spend? FinOps LLM runs a free audit of your AI costs and shows where the savings are. Book free audit →