dhj-l
dsh-git-review
No description
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
git-review(代码变更审查)
DSH 动态 Cordis 插件:在会话头部显示当前工作区的 git 变更文件列表,点击文件后在右侧抽屉查看 GitHub 风格的 diff(带语法高亮,新增/删除行以绿/红区分)。
这是一个动态插件源码包(不是 deepseek-harness 仓库内的正式包)。它通过
cordis_define/cordis_run工具加载到正在运行的 DSH 会话中,进程重启后不保留。
目录结构
src/host.js—— Host 半部(code.host函数体):通过shell服务运行只读 git 命令(git status --porcelain -z、git diff HEAD、git ls-files --others),未跟踪文件用fs读取内容构造「新文件」diff。src/client.js—— Client 半部(code.client函数体):会话头部按钮 + 右侧抽屉 UI + 统一 diff 解析器 + 轻量语法高亮扫描器。package.json—— 元数据(仅归档用途)。README.md—— 本文档。
功能
- 会话标题栏出现「变更」按钮,徽标显示未提交变更文件数。
- 右侧抽屉:左侧文件列表(路径 + 状态徽标 +
+x -y统计),右侧 diff 面板。 - diff 渲染:双列行号、绿色新增 / 红色删除(行号栏与标记也着色)、hunk 头、文件头统计。
- 语法高亮:按扩展名识别 JS/TS/JSON/CSS/HTML/Python/Shell/YAML/Markdown,关键字、字符串、数字、注释、函数、类名、常量分别着色。
- 未跟踪文件:通过
git ls-files --others --exclude-standard展开为单个文件,点击查看全量新增内容。 - 刷新、Esc / 遮罩关闭、二进制文件提示、超大 diff 截断提示。
如何重新加载
- 读取
src/host.js与src/client.js的完整内容。 - 调用
cordis_define:plugin.kind: 'new'(首次定义)或'existing'(更新已有 pluginId)code.host=src/host.js的内容code.client=src/client.js的内容
- 调用
cordis_run激活该 Package。
已知限制
- 依赖
shell服务运行 git;Host 以danger-full-access沙箱模式执行这些只读 git 命令(因为部分部署的会话沙箱后端无法启动)。 - 语法高亮为轻量扫描实现,非完整 LSP/编辑器级别;转义引号、多行块字符串等边界情形的着色可能不精确。
- 大 diff 按 6MB stdout 上限截断,文件列表上限 200。
- 未跟踪文件内容上限 4MB。
运行时依赖(插件通过 ctx.get 可选读取,缺失时安全降级)
- Host:
sandboxPolicy、sessions、shell、fs - Client:
slots;注册插槽conversation.session.header.actions与shell.overlay