Repository navigation
v0.1.23 — 折叠不再丢工具痕迹(DSH 0.1.7 漂移 #11)
·
19 commits
to master
since this release
修了什么
DSH 0.1.7 改了"工具结果放在哪":结果消息不再是 content:[{type:'tool-result',…}],而是 {role:'tool', toolCallId, isError, content:[{type:'text'}]} —— 没有 tool-result 块,id 与 isError 上移到消息层。
转录器只在块级分支产 [T] 行,于是整类节点被静默跳过。真机后果(会话 5fe3512e,107 步 / 118 次工具调用):
| 修复前 | 修复后 | |
|---|---|---|
| 一次折叠遮蔽 | 205 节点 / 465,068 B | 同 |
| 产出转录 | 87 行,其中 [T] = 0 行 |
192 行,其中 [T] = 114 行,退化 0 行 |
| 模型看到的历史 | 只剩 65 句助手发言,不知道工具动过什么 | 每次调用一行:shell|pwsh|… |
改动
- 双形态识别:
isToolResultMsg/toolResultCallId,callId 依次取 块 → 消息 →source;块级与消息级共用同一个 emitter,老宿主输出逐字不变。 - 新增覆盖守卫(本版真正想留下的):增量里每个工具结果必须产出一行
[T],got < want⇒ 整次折叠拒绝、本轮按原文发送。旧的五项提交前校验比的是字节与关键值,对"少产出行"不敏感——本次事故照样判通过并提交。 - LOGcompiler 同步回落消息层(修掉日志里可见的
?|?)。 - 事件层索引
callIndexFromEvents作为兜底保留。 - 回归测试
tests/drift11-toolcall-event-index.test.mjs:18 条断言;先把交付文件装配成安装布局(profiles/web+condense+toolfold)再 import,顺带验证交付包结构本身可加载。
一条更正
v0.1.22 交付说明里的"v4 兼容性已全验(23 次折叠 / 0 错误 / 前缀单调)"结论作废。那些指标在丢内容时同样全部成立。缺的正是本版补上的覆盖比对——验证"压缩没出错"不能只看压缩器自己的账,必须看压缩后还剩什么。详见 RCS-0.1.23-改进与保留项.txt。