CMDC.Agent.Repair (cmdc v0.3.0)

Copy Markdown View Source

消息历史修复器。

两层修复

Layer 1 — find_orphaned_calls/1

扫描倒序消息列表(新消息在前),找出所有无对应 tool_resulttool_calls。 调用方负责为返回的 call_id 追加合成结果。在每次 turn 开始前调用。

Layer 2 — ensure_tool_results/1

在消息发送给 provider 前的最后防线,接受顺序消息列表:

  1. 重定位 — 将漂移到错误位置的 tool_result 移回对应 assistant 消息后
  2. 合成 — 为仍无结果的 tool_call 注入占位消息
  3. 去重 — 移除孤立或重复的 tool_result

Summary

Functions

确保顺序消息列表中每条 assistant tool_calls 后紧跟对应的 tool_result。

扫描倒序消息列表,返回所有无对应 tool_result 的 tool_call 的 call_id 列表。

Functions

ensure_tool_results(chronological_messages)

@spec ensure_tool_results([CMDC.Message.t()]) :: [CMDC.Message.t()]

确保顺序消息列表中每条 assistant tool_calls 后紧跟对应的 tool_result。

接受顺序消息列表(旧消息在前),返回修复后的顺序列表。

find_orphaned_calls(messages)

@spec find_orphaned_calls([CMDC.Message.t()]) :: [String.t()]

扫描倒序消息列表,返回所有无对应 tool_result 的 tool_call 的 call_id 列表。