前言¶
在 DeepSeek Harness(DSH)里让模型改代码,常见结果是:为一个小需求补上缓存类、配置开关和工厂函数,而一行标准库或平台能力就能解决。DSH 社区把能力拆成插件挂载;工作流类插件可以在不改编排核心的前提下,把「先问要不要做、再沿梯子找最简实现」写进系统提示和技能。下面介绍 maci0 维护的 dsh-ponytail(Ponytail,lazy senior dev mode):六套可加载技能、常开的反过度工程规则集,以及插件配置卡片与 Composer 芯片。
这是什么¶
dsh-ponytail(npm 包名 @maci0/dsh-ponytail)面向 DSH >=0.2.1-rc.2 <0.3.0,许可证 MIT。思路改编自 DietrichGebert/ponytail(MIT):「He says nothing. He writes one line. It works.」插件通过 Cordis 扩展点把规则注入系统提示,并提供 ponytail 工具、/ponytail 命令与 Web 侧设置卡片,让当前进程内的智能体在「lite / full / ultra」等档位下按同一套梯子选方案。
社区目录页:https://www.skillhub.cn/plugins/maci0/dsh-ponytail。源码与说明:https://github.com/maci0/dsh-ponytail。
核心功能¶
梯子(Ladder)¶
除 off 外,当前档位对应的规则集会加入每次请求的系统提示。梯子顺序为:质疑该能力是否必要 → 复用仓库已有代码 → 标准库 → 平台能力 → 已安装依赖 → 一行能写清的实现;在第一级能站稳处停止。README 强调:懒惰不等于疏忽;理解问题、信任边界校验、数据丢失处理、安全与无障碍不在削减范围内。
六套技能¶
通过 DSH 的 skill 工具加载,并在 Composer 中表现为 /ponytail-review、/ponytail-audit 等命令:
ponytailponytail-reviewponytail-auditponytail-debtponytail-gainponytail-help
规则集的权威来源是 skills/ponytail/SKILL.md,README 不保留第二份副本。
档位与持久化¶
| 档位 | 行为 | 是否持久化 |
|---|---|---|
lite |
按需求实现,并用一行说明更懒的替代方案 | 是 |
full |
强制执行梯子;默认档位 | 是 |
ultra |
YAGNI 极端:先挑战需求再动手 | 是 |
review |
过度工程审查;指向 ponytail-review 技能 |
否,仅当前会话 |
off |
不注入规则,恢复常规范式 | 是 |
可持久化的四档写入 ponytail 设置命名空间;设置卡片、Composer 芯片、ponytail 工具与 /ponytail 命令保持一致,重启后仍生效。review 仅会话级,避免部署默认落在审查模式。
切换方式¶
- 在 Composer 输入
/ponytail <level>,例如/ponytail ultra、/ponytail off。 - 模型调用
ponytail工具;可选参数{"mode": "lite"}会设置并持久化档位,无参数时报告当前档位。 - 在普通消息里输入 stop ponytail 或 normal mode,效果同
/ponytail off;须是人类自己的整句指令,同流中的注入上下文不能切换档位。
Web 侧¶
插件声明 dsh.bundle,安装后挂载自带 cordis.patch.yml 层。浏览器侧在设置变更时及每 5 秒读取 GET /ponytail/level(返回 { mode, source },source 为 settings 或 session),在插件行配置槽绘制卡片,并在会话输入区左侧绘制芯片;卡片与芯片提供 en、zh 两套文案。
安装与启用¶
DSH 需满足 >=0.2.1-rc.2 <0.3.0。升级 Harness 后应重启 DSH 并刷新浏览器。
README 要求以 bundle 方式安装:用 dsh plugin add 挂载包内 patch 层,设置编辑器才能写入;若用 --patch 添加 overlay,下次启动会消失,且 Plugins 卡片无法保存到该层。
固定 npm 版本安装(资料原文命令,当前包版本 0.20.0):
dsh plugin --profile web add --save-exact @maci0/dsh-ponytail@0.20.0
升级时改用新版本号执行同一命令,然后重启 dsh web(bundle 层在启动时组合)。
典型用法¶
先设档位,再提需求。README 中的交互示例:
/ponytail ultra -> Ponytail level: ultra (was full).
/ponytail -> Ponytail level: ultra.
/ponytail off -> Ponytail off (was ultra). Normal behavior.
技能内 full 档示例(加 API 响应缓存):
> Add a cache for these API responses.
`@lru_cache(maxsize=1000)` on the fetch function. Skipped custom cache class,
add when lru_cache measurably falls short.
配置¶
| 字段 | 默认值 | 含义 |
|---|---|---|
defaultMode |
full |
启动档位;须为 off、lite、full 或 ultra |
用户在卡片或 /ponytail 中选择档位后,用户设置命名空间会覆盖默认值。无效档位在插件加载时失败,而非静默错误行为。
若要从环境变量设定启动档位,在 profile 的 cordis.patch.yml 中用同 id 覆盖整行 config(不要用 bundle 的 insert 再插一行,否则会重复挂载):
- id: ponytail
config:
defaultMode: !!js process.env.PONYTAIL_DEFAULT_MODE ?? 'full'
适用场景与注意¶
适合谁: 希望在 DSH 工作流里系统性抑制「为单点需求堆抽象层」的团队或个人;需要审查式会话时可用 review 档配合 ponytail-review 等技能。
进程与权限: 插件以当前 dsh 进程 的权限运行,规则对进程内所有 agent 共享同一提示段与命名空间值。安装前请阅读源码与 MIT 许可证,确认符合你的安全与合规要求。
已知限制(来自 README):
- 梯子缩短的是实现路径,不跳过读代码与理解问题。
- 进程外子 agent(如
subagent-claude-code、subagent-codex)各自启动 CLI,不继承本插件规则。 - 档位变更不是会话事件;重放会话时仍按各请求已携带的规则集展示。
- 修改 Host 侧需
bun run build并重启;修改浏览器侧需刷新页面。
DSH 生态采用「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
小结¶
dsh-ponytail 把 Ponytail 的「一行够用就一行」梯子写进 DSH:六技能、常开规则、工具与命令切档,加上 Web 配置卡片与芯片。若你正用 DSH 做编码类工作流,可从上述安装命令固定 @maci0/dsh-ponytail@0.20.0,用 /ponytail full 或 ultra 试一轮真实需求。