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

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

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

小夜