前言¶
在 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 試一輪真實需求。