szh1007/dsh-changes-panel ↗★ 1
@dsh-external/dsh-client-changes-panel
In-session right-docked diff panel showing the per-session cumulative diff of files the agent modified (edit/write)
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:szh1007/dsh-changes-panel说明文档
阅读完整 README ↗dsh-changes-panel · diff 面板
DeepSeek Harness Web GUI 的会话内 diff 面板:实时展示当前会话里所有被 edit/write 工具改动的文件,以及每个文件相对其本会话首次改动前内容的累计差异(git 风格 +绿 / −红),避免对话中看不清改动、误操作。
术语与设计决策见 CONTEXT.md 与 docs/adr/。
特性
- 入口是会话标签栏(
[role="tablist"],与「对话/轨迹」同排对齐)的 diff 标签,带改动数量角标,点击开合面板 - 面板位于会话界面内部:header 正下方、右侧贴边,不遮 header、不独立成框架级列
- 打开时聊天区与输入框整体左移(对
[data-conversation-scroll]加margin-right,带过渡动画),header 与标签栏不动;聊天内容在常见屏宽下只重新居中、不缩窄 - 面板左缘拖拽调宽(220–640px,始终给聊天区留 ≥320px),宽度在会话切换间保留
- 面板默认打开;工作区内/工作区外两个分区按改动自动展开(出现改动→展开,改动清零→收起,无转变时尊重手动开合)
- 文件行默认列出(
A/M状态 + 相对路径/绝对路径 ++N −M统计);每个文件的 diff 详情默认收起,点击展开 - diff 带上下文行,滑动展开;
+绿、−红;官方代码字体;单文件可「全屏」查看 - 底部操作条:勾选文件后 采纳(仅从面板移除)/ 回退(把基线内容写回磁盘)
- 工作集按
sessionId一一对应;会话删除时清理(session/disposed) - 深色主题使用官方
--dsw-alias-*token,自动跟随亮/暗主题
不包含(有意暂缓)
- 删除(D):本 harness 无删除工具(只能 shell 写盘),首版不追踪。见
docs/adr/0001-defer-deletion-tracking.md。 - 持久化:工作集目前在 host 内存中——刷新页面不丢,重启
dsh web清空。storageDomain持久化因 zod 依赖问题暂缓。
结构
dsh-changes-panel/
├── CONTEXT.md # 术语表
├── docs/adr/ # 架构决策记录
├── cordis.patch.yml # 插入 host 半到插件花名册
├── package.json # dsh.bundle.patch + dsh.client 声明
├── tsdown.config.ts # node + browser 双产物构建
├── src/index.ts # host 半:fs/observed 内容快照 + 会话隔离 + webServer 路由
└── src/client/index.ts # client 半:标签注入 + 会话内面板 + diff 渲染
工作原理
- host:监听全局
fs/observed事件,首次观察某路径时记录基线,内容变化即视为改动,用 LCS 行 diff 计算累计差异;通过webServer注册GET /plugins/ui-changes-panel/working-set?sessionId=...输出 JSON,POST /plugins/ui-changes-panel/action执行批量采纳/回退。工作集在 host 内存中按 隔离, 时删除。