acanzaima/dsh-code-review ↗★ 0

dsh-code-review

Review, stage and commit Git changes in non-modal floating review windows inside the DSH Web UI, with an optional AI-assisted change grouping.

包名
dsh-code-review
兼容性
待验证
版本
0.1.0
许可证
MIT
最近更新
2026年11月8日

同名包的其他仓库

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:acanzaima/dsh-code-review

使用

打开审阅窗口

点击对话输入框工具行中、权限 / 模式控件之后的「打开 Code Review」按钮,审阅面板以非模态的桌面式浮动窗口打开:没有遮罩、不阻塞 DSH 页面,后面的对话与其它界面始终可以正常使用;窗口默认尺寸是 DSH 窗口内容区的 85%,并且只能在 DSH 内容区内移动(四边受限,不会被拖到 DSH 标题栏下方或窗口外),最大化会铺满整个内容区。窗口只能通过标题栏的关闭按钮关闭(Esc 不关闭审阅窗口本身);可以拖动标题栏移动窗口、从右侧 / 底部 / 右下角缩放、最小化到标题栏(再点标题栏的还原按钮恢复)、点击标题栏的最大化按钮或双击标题栏最大化 / 还原。再次点击入口按钮会把该会话 / 工作区已有的窗口提到最前,不会重复打开。每个会话 / 工作区各自打开独立窗口,切换工作区不会关闭或改变已经打开的窗口;窗口状态(位置、大小、最小化 / 最大化)只保存在当前页面的内存中,刷新页面会关闭所有窗口。仓库由当前对话的 Session.header.cwd 解析;目录不是 Git 仓库时,窗口显示空状态并提示先 git init。空白会话和已有对话使用同一个入口位置。

审阅 diff

文件列表将文件名与目录分行显示;diff 两列上方分别标明比较基准与目标。窗口外观跟随 DSH 的浅色 / 深色主题。

文件导航默认按 Git 状态分组(已暂存 / 未暂存 / 未跟踪 / 冲突),工具栏的分组选择器可以切换为「AI 归类 · 按职能」或「AI 归类 · 按功能逻辑」,三者随时切换;文件导航标题行左侧是标题与文件数,右侧同组放置快速定位 / 全部展开 / 全部收起。diff 左右并排:左栏是比较基准,右栏是目标,表头写明两侧的基准标签。未变更的大段内容默认折叠,可展开;二进制、符号链接、子模块、仅模式变化或字节超限的文件会明确提示,而不是给出错误的逐行差异;超过预览行数上限的文件显示截断预览并标注 patch-only。状态列表本身超过 2000 行时,窗口会显示截断告警并禁用全局写操作。顶部刷新按钮重新读取仓库状态,每次写操作后也会自动刷新;写操作后同一文件的 diff 会保留上一份内容、只在标题行显示小 spinner,只有切换文件或仓库才会先清空再加载。底部状态栏常驻显示就绪 / 执行中 / 错误 / 操作通知与仓库摘要,就绪时悬停绿点可看上次刷新时间;工具栏左侧的分支 chip 可展开查看 HEAD 短 SHA、上游与领先 / 落后,可复制分支名 / 仓库路径,也可打开「设置远程仓库…」配置远程地址(只写本地 Git 配置,不切换分支);diff 头部的变更计数以紧凑的「当前 / 总数」显示,悬停可看完整文案。

暂存与还原

在文件行或分组标题前勾选即把该文件 / 整组加入暂存区(也就是提交内容),取消勾选移出暂存区、工作区内容保留;分组勾选框在部分暂存时显示半选。标题行的勾选框是全选:作用于当前筛选结果(无搜索时即整个仓库),勾选把其中尚未暂存的条目加入暂存区、取消勾选把其中已暂存的移出;冲突条目不参与全选,列表被截断或写入进行中时全选禁用并说明原因。工具栏不再单独提供 +/− 按钮,批量暂存 / 取消暂存的能力合并到全选。也可以右键文件条目(或聚焦后按 Shift+F10 / 菜单键)暂存 / 取消暂存,或还原未暂存的改动(还原不可撤销,需要确认)。把焦点放在 diff 的某个变更块上可以只对这个变更块执行同样的操作;菜单会标注目标(文件 · 变更块 n)并在 diff 中高亮该块范围,点击未变更区域不会误触发。所有写回前都会重新计算并校验指纹,文件在预览后发生变化时操作会中止并刷新;diff 与 hunk 菜单绑定当前展示的版本,轮询发现内容变化后会重新加载。暂存 / 取消暂存后选中的文件按路径保留,不会跳到别的行。

提交与推送

窗口底部是可折叠的提交区(默认收起):标题行显示「将提交 N 个文件」,展开后是多行提交信息文本框和提交按钮(文本框内按 Ctrl/Cmd+Enter 可直接提交);提交主按钮固定显示「提交」,待提交文件数只出现在标题行,不在按钮上重复。勾选的文件已经暂存,提交区不再重复列出暂存预览。暂存区为空、存在未解决冲突或暂存内容在检查后发生变化时都会阻止提交(提交指纹覆盖完整暂存区,不受列表截断影响),成功后显示短 SHA 与标题。推送对话框以只读方式显示本地源分支,可编辑目标远程与目标分支;切换 remote / 目标分支会重新预览,没有上游时可以设置并推送;远程拒绝时会提示先拉取合并,插件不会自动强制推送。仓库还没有配置远程时,点工具栏左侧分支 chip →「设置远程仓库…」,填写名称(默认 origin)与仓库地址(HTTPS / SSH / 本地路径均可);对话框会列出已有远程、点击即可填入,同名保存会更新地址。保存只写入本地 Git 配置、不测试网络连通性,成功后刷新仓库状态,推送按钮随之可用。提交信息输入框的 placeholder 给出 Conventional Commits 示例(如 feat: 完善审阅流程),只是输入提示、不强制格式;提交区仍默认收起,展开后是多行提交信息。

键盘快捷键

按键作用
↓ / ↑文件列表聚焦时切换文件;diff 行聚焦时逐行移动
Home / End(文件列表聚焦时)跳到第一个 / 最后一个文件
Alt + ↓ / ↑在窗口任意位置切换文件(diff 行聚焦时为上一个 / 下一个变更块)
Tab(diff 区域内)焦点进入 diff 的变更行
Enter(diff 行聚焦时)打开该变更块的右键菜单
Shift + F10 或菜单键在聚焦的文件条目或 diff 变更行上打开右键菜单
Ctrl(macOS 为 Cmd)+ ← / →上一处 / 下一处变更
Ctrl / Cmd + Enter(提交信息框内)执行提交
R刷新仓库状态
?打开 / 关闭快捷键说明
Esc只关闭当前聚焦窗口内最上层界面(右键菜单 → 确认框 → 推送对话框 → 设置 → 快捷键说明),不关闭审阅窗口本身;窗口只能用标题栏的关闭按钮关闭;写入进行中不关闭