- ツール呼び出しIDのサニタイズ
- ツール呼び出し入力の検証
- ツール結果のペアリング修復
- ターン検証/順序付け
- 思考署名のクリーンアップ
- 画像ペイロードのサニタイズ
- ユーザー入力の出所タグ付け (セッション間ルーティング プロンプト用)
これが実行される場所
すべてのトランスクリプトの衛生管理は、埋め込みランナーに一元化されています。- ポリシーの選択:
src/agents/transcript-policy.ts - サニタイズ/修復アプリケーション:
src/agents/pi-embedded-runner/google.tsのsanitizeSessionHistory
provider、modelApi、および modelId を使用して、何を適用するかを決定します。
トランスクリプトの健全性とは別に、セッション ファイルはロード前に (必要に応じて) 修復されます。
repairSessionFileIfNeededのsrc/agents/session-file-repair.tsrun/attempt.tsおよびcompact.tsから呼び出されます (埋め込みランナー)
src/agents/pi-embedded-helpers/images.tsのsanitizeSessionMessagesImagessrc/agents/tool-images.tsのsanitizeContentBlocksImages- 最大イメージ側は
agents.defaults.imageMaxDimensionPxを介して構成可能です (デフォルト:1200)。
グローバル ルール: 不正な形式のツール呼び出し
input と arguments の両方が欠落しているアシスタント ツール呼び出しブロックは削除されます
モデルコンテキストが構築される前。これにより、プロバイダーによる部分的な拒否が防止されます。
永続的なツール呼び出し (たとえば、レート制限の失敗後)。
実装:
sanitizeToolCallInputsのsrc/agents/session-transcript-repair.tssrc/agents/pi-embedded-runner/google.tsのsanitizeSessionHistoryで適用
グローバル ルール: セッション間の入力の出所
エージェントがsessions_send 経由で別のセッションにプロンプトを送信するとき (含む)
エージェント間の返信/アナウンス手順)、OpenClaw は、作成されたユーザー ターンを次のように保持します。
message.provenance.kind = "inter_session"
role: "user" はプロバイダーの互換性のために残ります)。トランスクリプトリーダーが使用できるのは、
これは、ルーティングされた内部プロンプトがエンドユーザー作成の指示として扱われることを避けるためです。コンテキストの再構築中に、OpenClaw は短い [Inter-session message] も先頭に追加します。
それらのユーザーへのマーカーがメモリ内でオンになるため、モデルはユーザーを区別できるようになります。
外部エンドユーザーへの指示。
プロバイダー マトリックス (現在の動作)
OpenAI / OpenAI コーデックス- 画像のサニタイズのみ。
- OpenAI Response/Codex トランスクリプトの孤立した推論署名 (後続のコンテンツ ブロックのないスタンドアロンの推論アイテム) を削除します。
- ツール呼び出しIDのサニタイズはありません。
- ツール結果のペアリング修復はありません。
- ターンの検証や並べ替えはありません。
- 合成ツールの結果はありません。
- 何も考えずに署名を剥がします。
- ツール呼び出し ID のサニタイズ: 厳密な英数字。
- 修復と合成ツールの結果をペアリングするツール結果。
- ターンの検証 (Gemini スタイルのターン交代)。
- Google ターン順序の修正 (履歴がアシスタントから始まる場合、小さなユーザー ブートストラップを先頭に追加します)。
- 反重力クロード: 思考のサインを正規化します。署名されていない思考ブロックを取り除きます。
- 修復と合成ツールの結果をペアリングするツール結果。
- ターンの検証 (厳密な交代を満たすために連続するユーザーのターンをマージします)。
- ツール呼び出し ID サニタイズ: strict9 (英数字の長さ 9)。
-
思考署名のクリーンアップ: 非 Base64
thought_signature値を削除します (base64 を維持します)。その他すべて - 画像のサニタイズのみ。
過去の動作 (2026.1.22 より前)
2026.1.22 リリースより前に、OpenClaw は複数の層のトランスクリプト衛生状態を適用していました。- transcript-sanitize 拡張機能 はすべてのコンテキスト ビルドで実行され、次のことが可能でした。
- 修復ツールの使用/結果のペアリング。
- ツール呼び出し ID をサニタイズします (
_/-を保持する非厳密モードを含む)。
- ランナーはプロバイダー固有のサニタイズも実行しており、作業が重複していました。
- プロバイダー ポリシーの範囲外で、次のような追加の変異が発生しました。
- 永続化の前にアシスタント テキストから
<final>タグを削除します。 - 空のアシスタントをドロップするとエラーが発生します。
- ツール呼び出し後のアシスタント コンテンツのトリミング。
- 永続化の前にアシスタント テキストから
openai-responses) が発生しました。
call_id|fc_id ペアリング)。 2026.1.22 のクリーンアップにより、拡張機能が削除され、一元化されました
ランナーのロジックを組み込んで、画像のサニタイズを超えた OpenAI ノータッチを実現しました。