DSH Plugin Store
Back to home

dhj-l

dsh-git-review

No description

Stars
1
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 14, 2026
Other
GitHub repo

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 -zgit diff HEADgit 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 截断提示。

如何重新加载

  1. 读取 src/host.jssrc/client.js 的完整内容。
  2. 调用 cordis_define
    • plugin.kind: 'new'(首次定义)或 'existing'(更新已有 pluginId)
    • code.host = src/host.js 的内容
    • code.client = src/client.js 的内容
  3. 调用 cordis_run 激活该 Package。

已知限制

  • 依赖 shell 服务运行 git;Host 以 danger-full-access 沙箱模式执行这些只读 git 命令(因为部分部署的会话沙箱后端无法启动)。
  • 语法高亮为轻量扫描实现,非完整 LSP/编辑器级别;转义引号、多行块字符串等边界情形的着色可能不精确。
  • 大 diff 按 6MB stdout 上限截断,文件列表上限 200。
  • 未跟踪文件内容上限 4MB。

运行时依赖(插件通过 ctx.get 可选读取,缺失时安全降级)

  • Host:sandboxPolicysessionsshellfs
  • Client:slots;注册插槽 conversation.session.header.actionsshell.overlay