Skip to main content
このドキュメントでは、実行前にトランスクリプトに適用される プロバイダー固有の修正について説明します (モデルコンテキストの構築)。これらはメモリ内の調整であり、厳密な条件を満たすために使用されます。 プロバイダーの要件。これらの衛生手順では、保存されている JSONL トランスクリプトが書き換えられることはありません** ディスク上。ただし、別のセッション ファイル修復パスにより、不正な JSONL ファイルが書き換えられる可能性があります。 セッションがロードされる前に無効な行を削除することによって。修理が発生した場合、元の ファイルはセッション ファイルと一緒にバックアップされます。 範囲には以下が含まれます:
  • ツール呼び出しIDのサニタイズ
  • ツール呼び出し入力の検証
  • ツール結果のペアリング修復
  • ターン検証/順序付け
  • 思考署名のクリーンアップ
  • 画像ペイロードのサニタイズ
  • ユーザー入力の出所タグ付け (セッション間ルーティング プロンプト用)
トランスクリプト ストレージの詳細が必要な場合は、次を参照してください。

これが実行される場所

すべてのトランスクリプトの衛生管理は、埋め込みランナーに一元化されています。
  • ポリシーの選択: src/agents/transcript-policy.ts
  • サニタイズ/修復アプリケーション: src/agents/pi-embedded-runner/google.tssanitizeSessionHistory
このポリシーは、providermodelApi、および modelId を使用して、何を適用するかを決定します。 トランスクリプトの健全性とは別に、セッション ファイルはロード前に (必要に応じて) 修復されます。
  • repairSessionFileIfNeededsrc/agents/session-file-repair.ts
  • run/attempt.ts および compact.ts から呼び出されます (埋め込みランナー)
---## グローバル ルール: 画像のサニタイズ サイズによるプロバイダ側の拒否を防ぐために、画像ペイロードは常にサニタイズされます。 制限 (サイズの大きい Base64 イメージのダウンスケール/再圧縮)。 これは、ビジョン対応モデルのイメージ駆動型トークン プレッシャーの制御にも役立ちます。 最大サイズを低くすると、一般にトークンの使用量が減ります。高次元では詳細が保持されます。 実装:
  • src/agents/pi-embedded-helpers/images.tssanitizeSessionMessagesImages
  • src/agents/tool-images.tssanitizeContentBlocksImages
  • 最大イメージ側は agents.defaults.imageMaxDimensionPx を介して構成可能です (デフォルト: 1200)。

グローバル ルール: 不正な形式のツール呼び出し

inputarguments の両方が欠落しているアシスタント ツール呼び出しブロックは削除されます モデルコンテキストが構築される前。これにより、プロバイダーによる部分的な拒否が防止されます。 永続的なツール呼び出し (たとえば、レート制限の失敗後)。 実装:
  • sanitizeToolCallInputssrc/agents/session-transcript-repair.ts
  • src/agents/pi-embedded-runner/google.tssanitizeSessionHistory で適用

グローバル ルール: セッション間の入力の出所

エージェントが sessions_send 経由で別のセッションにプロンプトを送信するとき (含む) エージェント間の返信/アナウンス手順)、OpenClaw は、作成されたユーザー ターンを次のように保持します。
  • message.provenance.kind = "inter_session"
このメタデータはトランスクリプトの追加時に書き込まれ、役割は変わりません (role: "user" はプロバイダーの互換性のために残ります)。トランスクリプトリーダーが使用できるのは、 これは、ルーティングされた内部プロンプトがエンドユーザー作成の指示として扱われることを避けるためです。コンテキストの再構築中に、OpenClaw は短い [Inter-session message] も先頭に追加します。 それらのユーザーへのマーカーがメモリ内でオンになるため、モデルはユーザーを区別できるようになります。 外部エンドユーザーへの指示。

プロバイダー マトリックス (現在の動作)

OpenAI / OpenAI コーデックス
  • 画像のサニタイズのみ。
  • OpenAI Response/Codex トランスクリプトの孤立した推論署名 (後続のコンテンツ ブロックのないスタンドアロンの推論アイテム) を削除します。
  • ツール呼び出しIDのサニタイズはありません。
  • ツール結果のペアリング修復はありません。
  • ターンの検証や並べ替えはありません。
  • 合成ツールの結果はありません。
  • 何も考えずに署名を剥がします。
Google (Generative AI / Gemini CLI / Antigravity)
  • ツール呼び出し ID のサニタイズ: 厳密な英数字。
  • 修復と合成ツールの結果をペアリングするツール結果。
  • ターンの検証 (Gemini スタイルのターン交代)。
  • Google ターン順序の修正 (履歴がアシスタントから始まる場合、小さなユーザー ブートストラップを先頭に追加します)。
  • 反重力クロード: 思考のサインを正規化します。署名されていない思考ブロックを取り除きます。
Anthropic / Minimax (Anthropic 互換)
  • 修復と合成ツールの結果をペアリングするツール結果。
  • ターンの検証 (厳密な交代を満たすために連続するユーザーのターンをマージします)。
Mistral (モデル ID ベースの検出を含む)
  • ツール呼び出し ID サニタイズ: strict9 (英数字の長さ 9)。
OpenRouter Gemini
  • 思考署名のクリーンアップ: 非 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 ノータッチを実現しました。