PerryLink/dsh-github
PerryLink/dsh-github官方级 GitHub CI 集成:composite action.yml、轮询 PR 评审机器人(幂等行内评论 + status-check 门禁)以及 PR/issue 工具,所有写入走人工审批门。
会话修改审查插件:追踪会话内 write/edit 工具调用并展示 diff 对比;会话隔离、子代理聚合、SSE 实时推送、角标与颜色自定义。
DeepSeek Harness(DSH)会话修改审查插件:自动追踪会话内的文件写入/编辑操作,在会话视图中以 diff 对比形式展示,支持颜色自定义、实时推送、会话隔离与子代理聚合。
一个包同时承载 Host 逻辑与浏览器 UI(
dsh.bundle+dsh.client双 manifest)。
| 功能 | 说明 |
|---|---|
| 自动追踪 | 监听 write / edit 工具调用,记录修改前后内容与时间 |
| diff 对比 | LCS 行级 diff:新增(绿)/ 删除(红)/ 上下文(灰),含新旧行号 |
| 会话隔离 | 每个会话只展示自己的修改,切换会话即切换审查内容 |
| 子代理聚合 | 子代理(subagent)的修改自动聚合到根父会话 |
| 实时推送 | SSE 服务端推送,修改文件后角标/列表即时刷新(零轮询) |
| 撤回变更 | 可单独撤回某一项修改(保留其后无冲突的修改),或撤回整个文件的全部修改(恢复到本次会话首次修改前;会话中新建的文件则删除)——直接改写磁盘文件 |
| 轮次内审查 | 每轮对话尾部展示本轮变更的文件列表与可展开的 diff(支持单项撤回),与「审查」标签的会话累计视图相互区分 |
| 数量角标 | 「审查」标签显示待审文件数,背景/文字颜色可自定义 |
| 颜色自定义 | 12 项颜色在 设置 → 修改审查 页调整(含对话底部变更列表的背景色、边框色、新增/删除行数颜色),每个颜色项都带透明度滑块(支持 rgba),localStorage 持久化 |
| 侧边栏净化 | 隐藏左侧栏的 Cordis 插件运行提示(cordis-panel) |
| 「审查」标签页 — 文件列表 + diff 预览 | 轮次内审查卡片 |
|---|---|
| 展开的 diff 与单项撤回 | 颜色自定义:设置 → 修改审查 |
|---|---|
| 插件市场安装 |
|---|
dsh plugin add(npm 发布后)dsh plugin --profile web add dsh-change-review
node_modules,并在 profile 的 cordis.patch.yml 注册:- insert:
- id: diff-review
name: 'dsh-change-review'
- id: ui-diff-review
name: 'dsh-change-review'
本插件面向 Web profile(
dsh --profile web)。
| 配置项 | 键名 | 浅色默认 | 深色预设 |
|---|---|---|---|
| 新增行背景 | addBg | #e6ffec | #10251c |
| 新增行文字 | addFg | #1a7f37 | #7ee787 |
| 删除行背景 | delBg | #ffebe9 | #2d1415 |
| 删除行文字 | delFg | #cf222e | #ffa198 |
| 上下文背景 | ctxBg | #f6f8fa | #161b22 |
| 行号 / 标记 | gutter | #57606a | #8b949e |
| 角标背景 | badgeBg | #0969da | #4493f8 |
| 角标文字 | badgeFg | #ffffff | #0d1117 |
| 新增行数(对话底部) | turnAdd | #1a7f37 | #7ee787 |
| 删除行数(对话底部) | turnDel | #cf222e | #ffa198 |
| 背景色(对话底部) | turnBg | rgba(255,183,77,.1)(淡橙 10%) | rgba(255,183,77,.1)(淡橙 10%) |
| 边框色(对话底部) | turnBorder | #ffb74d(淡橙) | #ffb74d(淡橙) |
write/edit 工具调用;按会话隔离,子代理改动沿 owner 链聚合到根父会话/diff-review/events)推送,客户端只处理当前会话事件dsh.diff-review.colors);审查记录持久化到磁盘(写操作后防抖自动保存,退出时同步落盘,文件位于 ~/.dsh/profiles/web/diff-review-state.json),重启 dsh web 后自动恢复;删除该文件即清空历史记录turn/start/turn/end)得出——不依赖事件监听,重启/恢复的会话也能正确归属,多轮修改会正确分到各轮;子代理在父会话轮次内产生的修改也计入该轮。每轮对话尾部的卡片与该轮次对应;「审查」页的「最新一轮」视图展示最近一个轮次。升级前(未记录轮次)的旧记录不会出现在轮次卡片中,但仍可在「审查」标签查看es.onopen 重连后重新同步which 命令与 /Applications 路径识别。按钮文字显示「用xxx打开」并展示编辑器自带的应用图标(通过 /diff-review/editor-icon/:id 路由从应用 bundle 读取 .icns 并转 PNG 提供)。选中后所有「打开文件」操作均用该编辑器打开;未选择时回退系统默认。选择保存在 localStorage,路由 /diff-review/open-with-editor 在主机端派发编辑器命令。检测同时解析 app bundle 内的真实可执行路径(execPaths),即使 CLI 未加入 PATH 也能用编辑器自身的二进制打开文件。open -R(macOS)/ explorer(Windows)/ xdg-open(Linux)在文件管理器中高亮文件。.drv-view 在各会话阶段保持稳定overscroll-behavior: contain 阻止两栏之间的滚动联动),浏览文件时预览位置保持不动,方便审查dsh-change-review id 注册(原为 @deepseek-ai/dsh-client-ui-diff-review),并从 cordis.patch.yml 移除了重复的 ui-diff-review 注入项,插件只会注入一次且能正确加载~/.dsh/profiles/web/diff-review-state.json,防抖自动保存 + 退出时同步落盘)write/edit 工具调用,LCS 行级 diff、子代理聚合、SSE 实时推送、颜色自定义、数量角标Host(lib/index.js)
· tools/result 监听 → 按会话分桶记录
· LCS 行级 diff
· HTTP 路由:/diff-review/summary · /file · /clear · /revert · /turn(均带 ?session=)
· SSE:/diff-review/events
│ HTTP + SSE(同源)
Browser UI(lib/client.js,__ModuleLoader__ bundle)
· 会话头部探针同步当前会话(隐藏)
· 「审查」视图标签 + 角标
· 设置页「修改审查」颜色自定义
· EventSource 实时订阅
插件代码与你的 harness 进程同权限运行。使用前请审阅源码;收录于社区市场不构成安全背书。
MIT