消息历史修复器。
两层修复
Layer 1 — find_orphaned_calls/1
扫描倒序消息列表(新消息在前),找出所有无对应 tool_result 的 tool_calls。
调用方负责为返回的 call_id 追加合成结果。在每次 turn 开始前调用。
Layer 2 — ensure_tool_results/1
在消息发送给 provider 前的最后防线,接受顺序消息列表:
- 重定位 — 将漂移到错误位置的 tool_result 移回对应 assistant 消息后
- 合成 — 为仍无结果的 tool_call 注入占位消息
- 去重 — 移除孤立或重复的 tool_result
Summary
Functions
确保顺序消息列表中每条 assistant tool_calls 后紧跟对应的 tool_result。
扫描倒序消息列表,返回所有无对应 tool_result 的 tool_call 的 call_id 列表。
Functions
@spec ensure_tool_results([CMDC.Message.t()]) :: [CMDC.Message.t()]
确保顺序消息列表中每条 assistant tool_calls 后紧跟对应的 tool_result。
接受顺序消息列表(旧消息在前),返回修复后的顺序列表。
@spec find_orphaned_calls([CMDC.Message.t()]) :: [String.t()]
扫描倒序消息列表,返回所有无对应 tool_result 的 tool_call 的 call_id 列表。