Skip to content

v0.1.23 — 折叠不再丢工具痕迹(DSH 0.1.7 漂移 #11)

Choose a tag to compare

@ScreamingMaggot ScreamingMaggot released this 29 Sep 12:00
· 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。