Skip to content

安装后已有session无法显示diff吗 #3

Closed

Description

@Yiklek

安装dsh-edit-diff前:

Image

安装dsh-edit-diff后:

Image

Activity

  1. Fishsb commented on Sep 5, 2026

    @Fishsb
    Contributor

    根因已定位(详见 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 显示全新增)。如果个别极老的会话块两种数据都没有,会保持现在的摘要卡形态(不会更差)。

  2. better-er commented on Sep 7, 2026

    @better-er
    Owner

    github 对 issue 和 pr 没通知,而且 PTC 模式一切正常。久等了。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions