dsh-better-summary:用 Codex 风格改动汇总卡片替换对话末尾产出行

前言

在 DSH Web 里跑完一轮工具调用后,对话流末尾通常会有一行「本次产出」chip:能点到文件,但文件数、增删行数和 diff 往往要再点开别处才能看清。若工作区本身不是 git 仓库,或改动只存在于会话日志里的 applied diff,单靠 git 统计也不可靠。

下面介绍社区客户端插件 dsh-better-summary(维护者 yaodongH):它不改 DSH 源码,在轮次尾部 顶替 自带的产出行,换成类似 Codex 的改动汇总卡片——文件数、合计与逐文件的 +新增 −删除、折叠展开、按文件内联 diff,以及「在文件夹中显示」。行数来自每轮成功工具结果里的 applied diff,不依赖 git。

这是什么

dsh-better-summary 是 DSH Web 的 profile bundle 插件(分类:客户端)。当前版本 0.2.0,要求宿主 DSH ≥ 0.1.6-alpha.2(MIT 许可证)。它以 conversation.chat.turnTail 的 list 槽注册(priority 默认 -2),同一单元格内优先级更低的一条会渲染,从而接管 ui-deliverables(0)等自带行;关闭设置或卸载后恢复原样。

目录页:skillhub.cn/plugins/yaodongH/dsh-better-summary
源码与说明:github.com/yaodongH/dsh-better-summary

核心功能

卡片展示什么

  • 头部汇总:例如「已编辑 N 个文件」及总计 +a −d。
  • 文件列表:每个文件一行增删计数;可折叠(默认折叠时显示 3 个文件行,可在设置里改 1–20)。
  • 「审查」:展开全部文件的内联 diff(单文件默认最多 200 行,可调 20–2000)。
  • 行点击:走 DSH 既有的文件打开逻辑。
  • 「在文件夹中显示」:插件自研 Host 侧实现,用 argv 数组 spawn,不经过 shell;含 WSL 分支(wslpath + Windows 资源管理器 / Invoke-Item),失败时在卡片上显示原因,不再静默。

数据从哪来

  1. 插件注册 ConversationNodeDefinition(kind better-summary),折叠 turn/start、tool/call 与 append 语义的 tool/result,把成功结果的 {name, argsRaw, meta} 按日志顺序挂到 Turn 数据上;并读取 DSH 自带的 deliverables 作文件顺序与兜底。
  2. 变更通过「来源」策略推导:内置 dsh.tool-result-diff-meta(读工具自报的 applied diff)与 dsh.tool-call-args(新建文件时由调用参数补齐)。
  3. 与 DSH 显示模式无关:不发布视图节点,紧凑模式下工具节点被折叠时仍能从折叠定义里读到数据。

设置(DSH → 任务产出)

配置项 默认 说明
折叠行数 3 折叠时显示的文件行数
内联差异行数上限 200 单文件 diff 最多渲染行数
文件夹按钮 图标加文字 或「仅图标」「隐藏」
卡片字号 跟随正文 或固定 11–18px
槽位优先级(高级) -2 同格内数值越小越优先
启用 开 关闭后恢复自带产出行

保存即生效,无需刷新页面。部署级还可通过 cordis.patch.yml 覆盖「在文件夹中显示」的 opener(参数 {path} 为打开目标)。

已知限制(v1)

  • 覆盖范围与 DSH 自带产出清单一致:write / edit / str_replace_editor;bash 等非工具途径改动的文件不在清单内。
  • 无撤销(README 中列为后续计划)。
  • v1 状态:README 写明已通过 typecheck、143 项单元与组件测试、5 条 E2E lane。

安装与启用

插件以 profile bundle 方式挂载到 Web profile。安装前请自行查看仓库源码与 MIT 许可证;插件与 DSH 以当前进程权限运行,与任何官方应用商店无从属关系。

官方 CLI(推荐,本地 tarball)

在 DSH checkout 内(本机 dsh 不在 PATH 时):

pnpm -C <deepseek-harness 路径> dsh plugin --profile web add file:<绝对路径>/dsh-better-summary-0.2.0.tgz

命令会在 profile 目录执行 pnpm add,并按包的 dsh.bundle.patch 把 dsh-better-summary 追加进 dsh.profile.bundles。

从 GitHub 安装

dsh plugin --profile web add github:yaodongH/dsh-better-summary

仓库不含预构建的 lib/,安装依赖 prepare 构建。pnpm 10 默认不执行依赖构建脚本时会出现 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED,需在 ~/.dsh/profiles/web/pnpm-workspace.yaml 放行,例如:

allowBuilds:
  dsh-better-summary: true

安装成功以 dsh.profile.bundles 中出现 dsh-better-summary 为准;可能出现 missing peer 警告,profile 侧由 DSH 应用提供 peer,一般可忽略。

兼容性

插件版本 适用 DSH
0.2.0(当前) ≥ 0.1.6-alpha.2(turnTail 为 list 槽,需 options.id)
0.1.1 0.1.5-alpha.1(chain 槽,需 options.select)

装错版本时客户端在装载期报错,卡片不出现,自带产出行仍显示,例如:

list slot "conversation.chat.turnTail" requires options.id

回滚

从 dsh.profile.bundles 移除该包或关闭「启用」后重启 dsh web,原有产出行恢复。

典型用法

  1. 按上一节安装并重启 dsh web。
  2. 在 Web 对话中让智能体通过 write / edit 等工具改文件;轮次结束后在对话末尾查看汇总卡片而非 chip 行。
  3. 需要细看改动时点「审查」看内联 diff;要在系统文件管理器中定位时点「在文件夹中显示」。
  4. 在 DSH 设置 → 任务产出 调整折叠行数、字号等;若需自定义打开命令,在部署的 cordis.patch.yml 中配置 opener。

扩展其他工具时,可在客户端向 ctx.betterSummary 注册来源(README 提供 registerNodeSource 示例),无需改卡片本体。

适用场景与注意

适合谁: 经常在 DSH Web 里看单轮文件改动、希望末尾一眼看到增删行与 diff、且工作区未必是 git 仓库的开发者。

注意:

  • 仅统计插件覆盖的工具路径;与 git status 不一致时以卡片口径为准。
  • DSH 与插件版本必须匹配上表,否则装载失败。
  • 从 GitHub 安装等于拉取并构建第三方代码,安装前请审查仓库。
  • 社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-better-summary 把对话末尾的产出 chip 换成可折叠的改动汇总卡片,统计不绑 git,设置集中在「任务产出」页。需要细节、截图与设计说明见 GitHub README 与 docs/design.md。

  • 目录页:https://www.skillhub.cn/plugins/yaodongH/dsh-better-summary
  • GitHub:https://github.com/yaodongH/dsh-better-summary
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye