Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心
开发与运行时 #dsh-plugin

dsh-turn-diff

DSH Web UI 插件:每轮对话结束时汇总本轮所有文件修改差异

2436238575 @2436238575 ⬇ 1 ★ 0 master

安装

dsh plugin --profile web add github:2436238575/dsh-turn-diff
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

DSH Web UI 插件:每轮对话结束时汇总本轮所有文件修改差异

该插件未提供要点说明,请参考仓库 README。

dsh-plugin
  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/2436238575/dsh-turn-diff
许可证未标注(见仓库)
主要语言master
下载量1
GitHub 星标0
最近推送2026-08-15
收录日期2026-09-19
分类开发与运行时

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# dsh-turn-diff

> 此插件由 AI 生成,未经人工代码审查(Code Review)。使用前请自行审查源码,确保符合你的安全要求。

DeepSeek Harness (DSH) Web UI 插件:**每轮对话结束时,汇总本轮所有文件修改差异**。

## 效果

在每轮对话最后一条 assistant 消息下方,新增一个可折叠的"改动汇总"面板:

- 折叠状态:显示 `N 个文件 · M 处修改`
- 展开状态:按文件分组展示所有 Write/Edit 调用的 diff hunk
- 每个文件路径可点击,通过宿主的文件打开器直接跳转
- 使用 DSH 内置的 `DiffBlock` 组件渲染,与工具调用内联 diff 样式一致

## 动机

DSH 已有 `ui-deliverables` 插件,在每轮结束时显示"修改了哪些文件"的文件芯片清单。但没有一个地方能**一次性查看本轮所有改动的 diff 内容**——你得回到对话流里,逐个展开每个工具调用的 diff 卡片。

本插件补上这个缺口:数据来源与 `ui-deliverables` 相同(工具自身的 `diff` 渲染意图),但把**所有 hunk 按文件合并**,在一个面板里展示。

构建产物:
- `lib/index.js` (0.4 KB) — Node 端插件入口
- `lib/client.js` (12.4 KB) — 浏览器端 bundle(`__ModuleLoader__.load` 格式)
- `lib/types/` — TypeScript 类型声明

## 安装

### 前提

- DeepSeek Harness >= 0.1.0-rc.5(已验证 rc.5 构建通过)
- `dsh web` 模式运行

### 安装步骤

```sh
# 1. 克隆仓库到 harness 的 workspace 同级目录,或直接放在 harness 仓库目录下
git clone https://github.com/<你的用户名>/dsh-turn-diff.git
cd dsh-turn-diff

# 2. 暂时将插件注册为 harness 的 workspace 成员,以便依赖解析
#    编辑 /pnpm-workspace.yaml,在 packages: 列表末尾添加一行:
#    注意缩进,与 `- vendor/*` 对齐
#      - dsh-turn-diff

# 3. 在 harness 根目录安装依赖
cd
pnpm install --no-frozen-lockfile

# 4. 构建插件
pnpm --filter dsh-turn-diff run build

# 5. 安装进 web profile
dsh plugin --profile web add link:$(pwd)/dsh-turn-diff

# 6. 重启 dsh web
dsh web
```

或者直接从 npm 安装(发布后):

```sh
dsh plugin --profile web add dsh-turn-diff
```

重启后,每轮对话结束时即可看到改动汇总面板。

## 卸载

```sh
dsh plugin --profile web remove dsh-turn-diff
```

重启 `dsh web` 即可。

## 架构

```
dsh-turn-diff/
├── cordis.patch.yml       # bundle 入口:挂载 node 端和 client 端插件
├── src/
│   ├── index.ts           # Node 端(无操作,仅作为插件入口)
│   ├── invariant.ts       # 运行时不变式
│   └── client/
│       ├── index.ts       # 浏览器端入口:注册节点和槽位
│       ├── turn-diff.ts   # ConversationNodeDefinition:聚合 tool/result diff 数据
│       ├── TurnDiffPanel.tsx   # React 组件:可折叠的差异面板
│       └── TurnDiffPanel.module.css
├── tsconfig.json
├── tsdown.config.ts
└── package.json
```

### 数据流

```
tool/result (card: 'diff', diffs: FileDiff[])
    │
    ▼
turnDiffDefinition.match()  → 匹配 turn/start 和 tool/result
    │
    ▼
turnDiffDefinition.update() → 合并 hunk 到按路径索引的状态
    │
    ▼
turnDiffDefinition.buildLocationData() → 发布 turn-diff 到回合数据 { files: [...] }
    │
    ▼
TurnDiffPanel 从 turn.data.get('turn-diff') 读取 → 渲染展开/折叠面板
```

### 依赖

- `@deepseek-ai/dsh-client-runtime` — 会话节点和数据存储
- `@deepseek-ai/dsh-client-ui-conversation` — turnTail 槽位
- `@deepseek-ai/dsh-client-ui-slots` — 槽位注册
- `@deepseek-ai/dsh-client-ui-primitives` — DiffBlock 组件
- `@deepseek-ai/dsh-tools/presentation` — FileDiff 类型
- `react` / `clsx` — UI 渲染

## 已知限制

- **diff 仅覆盖 Write/Edit 工具调用**:通过终端命令间接修改的文件不在统计范围内(与 `ui-deliverables` 一致,因为 `presentResult` 产生的 diff 视图只在这些工具上定义)
- **回放/历史页面**:通过 `viewFor` 函数重算视图,应该能正常渲染;但如果某个工具在回放时没有注册,view 会缺失
- **默认不编译**:需要先 `pnpm run build` 再安装

## License

MIT

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。