dsh-ponytail:在 DSH 里常驻「最小完整改动」工作流

前言

用 DeepSeek Harness(DSH)做日常开发时,模型容易把简单需求扩成大面积重构,或回复冗长、要点分散。你可以在系统提示里手写「只做最小改动」,但每次会话都要记得带上,子代理也未必继承同一套约束。

Ponytail 上游项目把这类习惯叫做「lazy senior dev mode」:用能完整解决问题的最小改动推进任务,回复尽量一次读完。维护者 Vincent-chk 将其实现为 DSH 插件 @dsh-ext/dsh-ponytail(GitHub:Vincent-chk/dsh-ponytail),以单个 bundle 形式接入:在 Plugins 里打开后对本 profile 的每次会话生效,无需记忆 slash 命令。社区目录页:https://www.skillhub.cn/plugins/Vincent-chk/dsh-ponytail。

这是什么

dsh-ponytail 把上游 Ponytail 的规则与技能打包进 Cordis patch。bundle 开启后,会在每步组装提示时注入 ponytail:rules 段(order 9500),并注册六个与 Ponytail 相关的 skill;关闭 bundle 则移除规则与全部技能。强度由配置项 defaultMode 决定,不是运行时命令切换。

包名是 @dsh-ext/dsh-ponytail(当前版本 0.1.1,MIT)。要求 DSH 版本 >=0.2.1-rc.2 <0.3.0。请勿与 npm 上无关的旧包 dsh-ponytail@0.2.0 混淆——装错会报与当前 DSH 不兼容。

核心功能

常驻规则(Always-on rules)

提示段中会带上 PONYTAIL MODE ACTIVE — level: <level> 以及规范化的 Ponytail 规则;在本 profile 的每次会话、每一步组装、含子代理在内都会重新读取。发送整条消息且内容恰好为 stop ponytail 或 normal mode 时,本次进程内规则会结束(与上游行为一致);重新打开 bundle 或重启后恢复为配置的 level。

六个技能

会话目录会在请求匹配时让模型加载对应 skill,例如审查类请求可落到 ponytail-review,无需额外手势。五个任务 skill 也可手动输入 /ponytail-review、/ponytail-audit、/ponytail-debt、/ponytail-gain、/ponytail-help;核心 ponytail skill 仅由模型按需加载。

四级 defaultMode

在 bundle 行配置里设置 defaultMode,无命令、无状态文件:

defaultMode 行为
off 不注入规则;六个 skill 仍可按需加载。
lite 按需求实现;用一行点出更小的可选方案。
full 完整 Ponytail 规则(默认)。
ultra 在动手实现前先质疑请求是否合理。

解析顺序:环境变量 PONYTAIL_DEFAULT_MODE 优先于行内 defaultMode,再否则为 full。

有意未移植的能力

README 说明:Claude Code 状态条/本地 HTML 看板、上游 /ponytail 等级命令与状态文件、按项目分级等未移植;DSH 侧已有 token/cache 展示,开关与等级由 bundle 与部署配置承担。

安装与启用

任选一种方式,安装的是同一 bundle(含 dsh.bundle.patch)。

Plugins → Add plugin 或 CLI dsh plugin add 可使用:

途径 规格
GitHub github:Vincent-chk/dsh-ponytail
Git URL https://github.com/Vincent-chk/dsh-ponytail
Tarball 在检出目录执行 npm pack 后,填写 .tgz 的绝对路径
本地目录 本仓库目录的绝对路径

插件市场索引: 在 Plugins → Discover → Add index source 添加:

https://vincent-chk.github.io/dsh-ponytail/market/index.json

然后从卡片安装。官方说明该包尚未发布到 npm(npm publish 见仓库 PUBLISHING.md)。

在 Plugins 页面关闭 bundle 会移除规则与六个 skill;再次打开即恢复。

调整强度(defaultMode)

在 profile 的 cordis.patch.yml 增加覆盖行。加载器会替换该行的完整 config,因此需写明想要的 level:

- id: ponytail
  name: '@dsh-ext/dsh-ponytail'
  config:
    defaultMode: lite   # off | lite | full | ultra

修改后 HMR 会重组;若未生效,可在 Plugins 页先关再开 bundle。

典型用法

  1. 安装并启用 bundle,保持默认 full,日常编码会话会自动带上最小完整改动约束。
  2. 需要代码审查时,直接描述「review this change」类请求,或输入 /ponytail-review。
  3. 临时只想轻量约束时,将 defaultMode 设为 lite;希望模型先挑战需求再写代码时用 ultra。
  4. 单次对话内想退出规则:发送单独一条 stop ponytail 或 normal mode。

仓库内 npm test 会跑自检与 bundle 注入测试,用于验证 level 语法、停用短语、六项资源完整性及未注册多余命令等;开发者可在本地检出后自行运行,安装用户一般不必执行。

适用场景与注意

适合希望 DSH 长期保持「 senior 式小步交付」、又不想每次手写系统提示的开发者;分类上属于工作流类插件。

插件以当前 DSH 进程权限运行,安装前请阅读仓库源码与 MIT 许可证,并确认来源为 Vincent-chk/dsh-ponytail 而非旧 npm 包 dsh-ponytail。若出现与 dsh-ponytail@0.2.0、DSH 0.1.0-rc.6 相关的兼容错误,按 README Troubleshooting 卸载错误包后改用 github:Vincent-chk/dsh-ponytail 或市场索引安装。

结尾

dsh-ponytail 把 Ponytail 的常驻规则与六项技能收成一键开关的 bundle,用 defaultMode 控制强度,适合在 DSH 里固定「最小完整改动」习惯。目录:https://www.skillhub.cn/plugins/Vincent-chk/dsh-ponytail;源码与说明:https://github.com/Vincent-chk/dsh-ponytail。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye