DeepSeek Harness 插件 dsh-diffstream:对话流中直接展示代码改动

前言

DeepSeek Harness(DSH)采用插件化架构,允许通过配置注入自定义逻辑。在智能体开发或调试过程中,当 Agent 调用 edit 或 write 等工具修改代码时,改动内容通常散落在文件系统中,难以在对话流中实时追踪。dsh-diffstream 插件直接在 DSH web GUI 的对话流中展示这些代码改动,将文件层面的变更转化为可视化的行级 Diff。

插件简介

dsh-diffstream 是一个由 F-Light 维护的 DSH Web 插件。它通过接管工具卡片渲染和回合尾部处理,将代码变更直接嵌入到对话流中,无需修改 DSH 源码即可使用。

核心功能

插件主要提供以下能力:

  1. 工具卡片内嵌行级 Diff
    每次 edit 或 write 工具执行完成后,改动内容会直接渲染在对应的工具卡片内部。使用绿色 + 标记新增行,红色 − 标记删除行,并附带行号与上下文。

  2. 流式动画展示
    Diff 以流式逐行动画展开,支持 1x、2x 或立即展示的速度控制。动画视觉效果与 assistant 消息的流式输出同步,展开到哪一行即代表执行到了什么位置。

  3. 回合尾部改动汇总
    每个已完成的回合尾部会追加「📋 本回合改动汇总」卡片。卡片包含文件级列表,显示路径、增删状态标签及 +N −M 统计。点击文件行可展开该文件的完整行级 Diff。同一文件的多次编辑会自动合并统计。

  4. Git 优先与回退机制
    汇总卡片优先使用真实的 git diff(含上下文 hunk,通过 Host RPC 获取)。若非 git 项目或 git 命令失败,会静默回退为工具参数 diff,确保功能不中断。

  5. 性能与交互优化

    • 纯客户端计算:使用纯客户端 LCS 行级对比算法,零依赖、零延迟、不读磁盘。
    • 大文件截断:文件超过 200 行时自动截断,支持点击展开全部。
    • 自动滚动:动画播放期间自动跟随最新行滚动到底部(手动上滚时暂停跟随)。
    • 去重处理:动画按工具调用 callId 去重。历史回合(刷新后)直接完整显示,不会重播动画。

安装与启用

插件以独立 npm 包形式提供,通过 profile 的 cordis.patch.yml 注入。

# 1. 进入 web profile 目录
cd ~/.dsh/profiles/web

# 2. 安装插件包
pnpm add @f-light/dsh-diffstream
# 3. 编辑 cordis.patch.yml,追加插件配置
- insert:
    - id: diffstream
      name: '@f-light/dsh-diffstream'
# 4. 重启 dsh web 使配置生效
dsh --profile web

使用说明

安装并重启后,插件会在对话流中自动生效。

  • 查看改动:每次工具执行后,工具卡片内会立即出现内嵌的 Diff 视图。
  • 交互操作:点击回合尾部的汇总卡片中的文件行,可展开该文件的完整 Diff。
  • 非 Git 项目:即使当前目录不是 git 仓库,只要工具参数提供了 old_string 或 content,插件依然能通过参数对比展示 Diff。
  • 文件产出冲突:对于没有文件产出的回合,插件展示让位给官方的 ProducedFiles,两者互不干扰。

注意事项

  • 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 插件不产生新的文件输出,仅改变 Web GUI 的展示层逻辑。
  • 由于是基于纯客户端计算,性能开销极低,不会影响对话生成的整体速度。

参考链接

羽毛球分组比赛记分
小程序二维码

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

小夜