dsh-simplify
Verifieddsh-simplify · v0.1.4 · MIT
DeepSeek Harness 插件:评审最近改动的代码,提升清晰度、一致性与可维护性(由 pi-simplify 迁移)。
Install
dsh plugin add dsh-simplify Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Readme
dsh-simplify
DeepSeek Harness(dsh)插件:评审最近改动的代码,提升清晰度、一致性与可维护性。 由 Pi 扩展 pi-simplify(MIT)迁移而来,功能等价。
安装
# 在目标 profile 中安装本插件(npm 已发布,包名 dsh-simplify)
dsh plugin --profile web add dsh-simplify
本地开发版安装(源码路径,需先
npm install && npm run build):dsh plugin --profile web add <本插件仓库路径>
版本要求:Node >= 22.19;宿主 dsh 0.1.1-rc.2 及以上(依赖
dsh-llm ^0.1.1-rc.2)。
注意:
dsh plugin add只更新 profile 清单,不会热加载到已运行的 dsh web 进程, 需重启 dsh web 后/simplify才会注册生效。
用法
| 命令 | 作用 |
|---|---|
/simplify |
评审所有未提交改动(工作区 diff) |
/simplify --staged |
只评审已暂存改动 |
/simplify src/foo.ts src/bar.ts |
指定文件 |
/simplify --ref=main |
对比指定分支的改动 |
执行后,插件把「变更文件 + 变更行范围 + 四条简化原则」作为用户消息注入
当前 agent 会话(next-turn),模型随即按约束在变更行范围内完成简化并跑测试。
功能清单
- git diff 变更检测:
--name-status解析(M/A/R/C),重命名/复制取新路径;工作区模式自动识别未跟踪新增文件(untracked);新仓库(无首提交)也能列出暂存区与未跟踪的新文件;显式指定的未跟踪文件同样识别为整文件在范围内; - 变更行号提取:
--unified=0解析,相邻区间合并,count=0 跳过,纯删除文件降级提示;按路径分块批量提取(一次 git 调用取多个文件);输出超限截断时降级为「行号不可用」; - 参数与路径解析:支持单双引号包裹的带空格路径与参数(如
--ref="feature branch"、"dir with space/a.ts",引号未闭合直接报错),自动规范化 Windows 路径;非 ASCII 文件名(中文等)与含特殊字符的路径原样支持(core.quotepath=off+ C-quote 反解码); - 指定文件模式:显式文件列表按
--ref/--staged取行号; - 回退与透明提示:
HEAD无结果时自动回退HEAD~1,并在 UI 状态与提示词中显式标注回退来源; - 错误透传:未知
--ref、非 git 仓库、git 不在 PATH 等失败直接以错误提示呈现(含 git 的 fatal 信息),不与「无变更」混淆; - 提示词:Preserve functionality / Apply project standards / Enhance clarity / Maintain balance 四条原则 + 变更行范围锁定 + 逐文件修改 + 跑测试 + 总结;
- 无变更提示:不注入消息,直接返回 UI 提示文本。
开发
npm install # 安装 dependencies(dsh-llm)与 devDependencies(dsh 各 seam 包)
npm run build # tsc 构建到 lib/
npm run typecheck # 类型检查
npm test # 构建 + 功能等价测试(node --test,真实 git 仓库)
依赖策略:运行时 peer 契约为
@deepseek-ai/cordis ^4.0.1、`@deepseek-ai/dsh-llm=0.1.0-rc.7 <0.2.0 || >=0.1.1-rc.1 <0.2.0
、@deepseek-ai/schemastery ^3.18.1, 由宿主提供;dependencies里的同名包仅作宿主缺失时的兜底副本,npm 去重后与 宿主同实例。peer 范围的第二段>=0.1.1-rc.1` 是有意为之:npm semver 只在范围 端点同为 prerelease 且版本元组相同时才匹配 prerelease,第一段覆盖 0.1.0-rc.7+, 第二段放行 0.1.1-rc.x。构建期类型依赖(dsh-commands / dsh-session / dsh-subprocess 等)在 devDependencies,与宿主闭包版本对齐。
发布(本机)
GitHub Actions CI(.github/workflows/ci.yml,push/PR 自动跑 ubuntu/windows × node 22 测试)
继续保留;仅移除发布 workflow(publish.yml),改为本机发布:
npm run publish:local # patch(默认)
npm run publish:local -- minor # minor
npm run publish:local -- major # major
脚本(scripts/publish.mjs)流程:
- 校验 git 工作区干净(
npm version会创建 commit + tag,要求干净); npm version <bump>—— 自动触发version钩子跑npm test, 测试通过后才提交并打v*标签;npm publish发布到 npm(prepublishOnly钩子保证lib/为最新构建);- 提示手动推送:
git push && git push --tags(本机发布不代替推送)。
前置:本机已登录 npm(
npm whoami可验证);账号开启 2FA 时按提示输入 OTP。 如果 git 工作区有未提交改动,脚本会中止并列出待处理文件。
迁移说明
变更点、API 映射与验证记录见 MIGRATION.md。
License
MIT(pi-simplify 为 MIT,本插件延续 MIT)。