OpenClaw 在构建模型上下文前对对话记录进行 provider 特定的修复,大多数为内存操作,不修改磁盘文件。
清洗范围
- 工具调用 ID 清洗
- 工具调用输入验证
- 工具结果配对修复
- 轮次验证/排序
- 思考签名清理
- 图像 payload 清洗(下采样/重压缩)
- 空白文本块清理
- 用户输入来源标记(跨会话路由)
各 Provider 行为矩阵
| Provider | 特殊处理 |
|---|---|
| OpenAI / Codex | 仅图像清洗;保留可重放的 Responses reasoning |
| OpenAI-compatible | 历史 thinking/reasoning 块在重放前剥离 |
| Google / Gemini | 工具调用 ID 严格字母数字化;轮次交替验证 |
| Anthropic / MiniMax | 工具结果配对修复;连续 user 轮次合并 |
| Amazon Bedrock | 空 assistant 错误轮次修复为非空 fallback |
| Mistral | 工具调用 ID 严格 9 位字母数字 |
| OpenRouter Gemini | 剥除非 base64 的 thought_signature |
代码位置
- 策略选择:
src/agents/transcript-policy.ts - 清洗应用:
sanitizeSessionHistoryinsrc/agents/pi-embedded-runner/replay-history.ts - 文件修复:
repairSessionFileIfNeededinsrc/agents/session-file-repair.ts
历史变更(2026.1.22)
2026.1.22 版本将分散的清洗逻辑集中到 runner,移除了 transcript-sanitize 扩展,OpenAI 路径改为仅做图像清洗。
相关页面
- ref-session-compaction
- docs/concepts/concept-session