Bundle
dsh-commit-review
DSH plugin: /commit and /review slash commands mirroring Claude Code's built-in git workflow commands.
- Source
- the-qian
- stars
- 4 stars
- License
- MIT
- Updated
- Updated 3 days ago
Readme
# dsh-commit-review
<p align="center">
<img src="https://img.shields.io/badge/DSH-0.1.0--rc.6-blue" alt="DSH version">
<img src="https://img.shields.io/github/license/the-qian/dsh-commit-review" alt="License">
<img src="https://img.shields.io/badge/platform-host%20side-8A2BE2" alt="Host side">
<img src="https://img.shields.io/badge/no%20build%20step-plain%20JavaScript-success" alt="No build step">
</p>
一个 [DSH(DeepSeek Harness)](https://github.com/deepseek-ai/deepseek-harness) 插件:为 Web GUI 增加 `/commit` 与 `/review` 两个斜杠命令,**对标 Claude Code 内置的同名命令**,把「分析变更 → 生成 Conventional Commits 提交」和「代码审查」变成一条命令即可触发的标准工作流。
- ✅ 官方 dsh 插件形态(`dsh.bundle.patch`),通过 `dsh plugin add` 一键安装
- ✅ 纯 Host 侧、零依赖、无构建步骤(`lib/index.js` 即最终产物)
- ✅ 预检失败(非 git 仓库 / 工作区干净 / git 未安装)直接返回卡片提示,不浪费一轮模型
- ✅ 提交与审查由模型用自身工具执行,天然走 DSH 的沙箱与审批策略
- ✅ 注册随插件行生命周期自动装卸(`ctx.effect` 包裹)
## 安装
### 方式一:从 GitHub 安装(推荐)
```powershell
dsh plugin --profile web add https://github.com/the-qian/dsh-commit-review.git
```
> 本包没有 `prepare` 构建脚本,pnpm 不会要求 `allowBuilds`,安装即可用。
### 方式二:本地路径安装
```powershell
git clone https://github.com/the-qian/dsh-commit-review.git
dsh plugin --profile web add D:\path\to\dsh-commit-review
```
安装完成后**重启 profile**(bundle 层在 boot 时装配):
```powershell
dsh web
```
重启后在输入框输入 `/`,即可在命令面板看到 `commit` 和 `review`。包名与仓库名均为 `dsh-commit-review`(与 `cordis.patch.yml` 中的行引用保持一致)。
## 命令
### `/commit [message guidance]`
分析当前 git 变更并**真正创建提交**(不只是给出建议)。可选参数会成为提交消息的引导,例如:
```
/commit
/commit fix the login bug
```
处理流程:
1. 预检:`git status --porcelain=v1 --branch` + 暂存/未暂存 diff 统计(经 `subprocess` 直接调用 git,无 bash 依赖,20s 超时保护)
2. 预检通过后,将完整工作流注入模型:
- 检查真实 diff 与最近提交风格(`git log`)
- 选定 Conventional Commits 类型/范围(`feat`/`fix`/`docs`/`style`/`refactor`/`perf`/`test`/`build`/`ci`/`chore`/`revert`,破坏性变更用 `!` 或 `BREAKING CHANGE` footer)
- 逻辑分组暂存(**永不提交** `.env`、凭据、私钥等密钥)
- 生成祈使句、一般现在时、≤72 字符的主题行
- 执行 `git commit` 并用 `git log -1 --stat` 验证后报告哈希与消息
3. 内置 git 安全协议:不改 config、不 force、不跳过 hooks、hooks 失败时修复后新建提交(不 amend)
### `/review [security|performance|simplicity|style|i18n|with-context|guidance]`
审查当前未提交的变更(暂存 + 未暂存),在对话中输出按严重度分级的 markdown 审查报告,**只审查、不修改任何文件**:
```
/review # 通用审查
/review security # 安全优先
/review performance # 性能优先
/review simplicity # 简洁性优先
/review style # 代码风格优先
/review i18n # 国际化优先
/review with-context # 结合全仓库上下文审查
```
报告格式:一段总结 → 按 critical / major / minor / nit 排序的发现(每条含 `文件:行号` 引用、原因说明、具体修复建议)→ 正面观察。工作区干净时提示可用 `/review HEAD~1` 审查指定提交。
## 与 Claude Code 的对标
| 维度 | Claude Code | 本插件 |
| --- | --- | --- |
| `/commit` | 分析变更、生成消息并提交 | ✅ 同流程,另加 git 安全协议与预检短路 |
| `/review` | 审查当前变更并输出报告 | ✅ 同流程,支持全部官方修饰词 |
| 修饰词语法 | `/review:security`(冒号) | `/review security`(空格;DSH 命令解析器 `[a-z0-9_-]` 不支持冒号) |
| 提交执行 | 模型直接执行 | 模型经 DSH 沙箱/审批策略执行(更安全) |
| 会话语言 | 跟随用户 | 跟随用户(默认简体中文) |
## 工作原理
```
用户输入 /commit 或 /review
│
▼
commands 注册表执行 handler(dsh-commands,与 /plan 同一机制)
│
├─ 预检:subprocess 直接 spawn git(status + diff --stat)
│ ├─ 失败/无变更 → 直接返回卡片,不进模型
│ └─ 通过 → 携带上下文快照
▼
agent.steer(用户消息) 把完整工作流注入模型的下一步
│
▼
模型用自身工具(pwsh/read)执行真实 diff 分析、暂存、提交或审查
```
- **注册表**:行只消费 `commands` + `subprocess` 两个服务,不发布服务,因此无需 isolate realm
- **生命周期**:两条注册都用 `ctx.effect(() => commands.register(...))` 包裹,插件行卸载时自动反注册
- **平台无关**:git 通过 `subprocess.resolveExecutable('git')` 解析,Windows/POSIX 通用
## 目录结构
```
dsh-commit-review/
├── cordis.patch.yml # dsh.bundle.patch:向 profile 组合插入插件行
├── lib/
│ └── index.js # 插件本体 { name, inject, apply },纯 JS 无构建
├── package.json # 包元数据 + dsh.bundle 声明
├── LICENSE # MIT
└── README.md
```
## 本地开发
```powershell
# 1. 以链接方式装进 profile(改代码即时生效,重启 profile 后应用)
dsh plugin --profile web add D:\path\to\dsh-commit-review
# 2. 编辑 lib/index.js(纯 JavaScript,无需编译)
# 3. 重启 profile 验证:
dsh web
```
语法检查:`node --check lib/index.js`
## License
[MIT](./LICENSE) © [the-qian](https://github.com/the-qian)
Install
dsh plugin --profile web add github:the-qian/dsh-commit-review
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-commit-review from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.