Skip to content

v0.2.0 — 墓碑非空化 + migrate 动作 + 空内容兜底

Choose a tag to compare

@kyle123740 kyle123740 released this 29 Sep 04:46
· 6 commits to main since this release

修复一个真 bug(用户发现):墓碑原先写 \content: []\,在不跳过空 user 消息的 provider 上,整条请求被打回 400 \message content cannot be empty\ —— 表现为「换模型就报错」。DeepSeek 自家路由会跳过空消息,所以只在换 provider/模型时暴露。实测 SenseAudio(deepseek-v4.1-flash)捕获到 400。

三层防御:

  1. 墓碑非空化:占位文本「[已撤回]」。它不会出现在对话里(surface 替换节点不是 append-surface 事件),遮蔽也从不依赖它。
  2. 新增 \migrate\ 维护动作:把会话里残留的旧空墓碑替换成带占位符的新墓碑,保留原
    emoved\ 列表,客户端遮蔽推导不变。并且每次操作都顺带执行 —— 旧会话第一次被碰到就自愈。幂等。
  3. \�gent/pre-step\ 兜底:任何请求发出前,空 user 消息(空数组/空串/纯空 text 块)一律补占位文本 —— 连别的 producer 写的空消息也兜住。

另外:包名改为 @kyle123740/dsh-message-recall\(npm 上裸名 \dsh-message-recall\ 属于无关发布者,裸名发布不了);\inspect\ 新增 \legacy\ 标记;已对照 0.2.0-rc.1 桌面壳的内置核心验证兼容(格式仍 v4,surfaceOp 契约不变)。