记录清洁(提供商修复)

本文档描述运行前(构建模型上下文时)应用到记录上的提供商专属修复。这些是内存中的调整,用于满足提供商的严格要求。清洁步骤不会重写磁盘上存储的 JSONL 记录;但独立的会话文件修复步骤可能会在加载前丢弃无效行来重写格式错误的 JSONL 文件。修复发生时,原始文件会备份。

范围包括:工具调用 id 脱敏、工具调用输入验证、工具结果配对修复、回合验证/排序、思考签名清理、图片载荷脱敏、跨会话路由提示的用户输入来源标记。

在哪里运行

所有记录清洁集中在嵌入运行器中:

  • 策略选择:src/agents/transcript-policy.ts
  • 脱敏/修复应用:src/agents/pi-embedded-runner/google.ts 中的 sanitizeSessionHistory

全局规则

  • 图片脱敏:总是脱敏图片载荷以防止提供商端因大小限制拒绝。
  • 格式错误的工具调用:缺少 inputarguments 的助手工具调用块在构建模型上下文前被丢弃。
  • 跨会话输入来源:通过 sessions_send 路由的用户回合带 message.provenance.kind = "inter_session" 标记,上下文重建时内存中加 [Inter-session message] 前缀。

提供商矩阵

  • OpenAI / OpenAI Codex:仅图片脱敏 + 丢弃孤立推理签名。
  • Google(Gemini 等):工具调用 id 脱敏(严格字母数字)、工具结果配对修复、回合验证、Google 回合排序修复、Antigravity Claude 思考签名规范化。
  • Anthropic / Minimax:工具结果配对修复、回合验证(合并连续用户回合)。
  • Mistral:工具调用 id 脱敏(strict9,字母数字长度 9)。
  • OpenRouter Gemini:思考签名清理(剥离非 base64 值)。
  • 其他:仅图片脱敏。

历史行为(2026.1.22 前)

2026.1.22 发布前使用多层记录清洁,包括独立的记录脱敏扩展和运行器内的提供商专属脱敏,导致了跨提供商回归。2026.1.22 清理移除了扩展,集中逻辑到运行器,让 OpenAI 变成不触碰(仅图片脱敏)。