dsh-ponytail:在 DSH 里给智能体加上「少写一行」的工作流约束

前言

在 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 等命令:

  • ponytail
  • ponytail-review
  • ponytail-audit
  • ponytail-debt
  • ponytail-gain
  • ponytail-help

规则集的权威来源是 skills/ponytail/SKILL.md,README 不保留第二份副本。

档位与持久化

档位 行为 是否持久化
lite 按需求实现,并用一行说明更懒的替代方案 是
full 强制执行梯子;默认档位 是
ultra YAGNI 极端:先挑战需求再动手 是
review 过度工程审查;指向 ponytail-review 技能 否,仅当前会话
off 不注入规则,恢复常规范式 是

可持久化的四档写入 ponytail 设置命名空间;设置卡片、Composer 芯片、ponytail 工具与 /ponytail 命令保持一致,重启后仍生效。review 仅会话级,避免部署默认落在审查模式。

切换方式

  1. 在 Composer 输入 /ponytail <level>,例如 /ponytail ultra、/ponytail off。
  2. 模型调用 ponytail 工具;可选参数 {"mode": "lite"} 会设置并持久化档位,无参数时报告当前档位。
  3. 在普通消息里输入 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 试一轮真实需求。

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

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

Xiaoye