安装dsh-edit-diff前: <img width="934" height="325" alt="Image" src="https://github.com/user-attachments/assets/c959987e-afb3-4db9-906b-b148729ff40c" /> 安装dsh-edit-diff后: <img width="913" height="128" alt="Image" src="https://github.com/user-attachments/assets/bf8bb46b-72bc-471a-89be-d484ad5d347a" />
Activity
Fishsb commentedon Sep 5, 2026
根因已定位(详见 PR #4),你的截图现象与本机完全一致,是插件对新版 DSH 数据契约的系统性失效,不是安装姿势问题。
发生了什么
dsh-edit-diff v0.2.0 从
block.callView/resultView.card === 'diff'读取 diff 数据 —— 这个结构在 DSH 0.1.2-rc.1 中已被整体删除。新版改为渲染时现算:settled 数据在block.meta.diffs,running/PTC 子调用从 args 构建(标记从callId ':code:'改为parentCallId)。于是出现一个最隐蔽的失效形态:插件的槽位遮蔽(
priority: -1)正常工作、成功接管了 edit/write 卡片 —— 但它提取不到任何 diff 数据,静默降级为无内容摘要卡。无报错、无警告。你的两张截图正是"接管前的内置 DiffBlock(有红绿但重复)→ 接管后(什么都不显示)"。解决
PR #4 提供了新旧 DSH 双兼容的修复(三层取数:meta.diffs → args 意图 → 旧版 callView/resultView 回归),13 项行为测试全过。合入发版后重装即可。等不及发版的话,也可以直接把 PR 里的
lib/client.js覆盖本地安装的~/.dsh/profiles/web/node_modules/dsh-edit-diff/lib/client.js(该插件无构建步骤,改完即生效,重启 DSH web 后生效)。关于"已有 session":修复后旧会话同样能显示 —— settled 卡片读
block.meta.diffs(与新版内置 DiffBlock 同源),meta 缺失时回落到 args 意图 diff(edit 显示 old_string/new_string 替换,write 显示全新增)。如果个别极老的会话块两种数据都没有,会保持现在的摘要卡形态(不会更差)。fix: 兼容 DSH 0.1.2-rc.1 标准模式 diff 数据契约
better-er commentedon Sep 7, 2026
github 对 issue 和 pr 没通知,而且 PTC 模式一切正常。久等了。