你向你的 AI 助手要一個日期選擇器。

它安裝 flatpickr、寫一個包裝元件、加上一份樣式表、設定主題覆寫,然後開始跟你解釋時區處理。四百行之後,你得到一個日期選擇器。

坐在兩個座位外的資深工程師本來會這樣寫:

<input type="date">

Ponytail 是一個開源的技能/外掛,試圖把那種人塞進你的程式撰寫代理裡。它可搭配 Claude Code、Codex、Cursor、Gemini CLI、Copilot、OpenCode、Windsurf、Cline,以及一長串其他工具使用。採用 MIT 授權。

一個畫面的核心概念

Ponytail 不是工具、函式庫,也不是模型。它是一組規則集,會在每一輪被注入到你的代理上下文中。它的核心是一個階梯。在寫任何程式碼之前,代理會先停在第一個符合的階梯上:

1. 這東西真的需要存在嗎?   -> 不需要:跳過(YAGNI)
2. 這個程式庫裡已經有了嗎? -> 重用,不要重寫
3. 標準函式庫做得到嗎?     -> 用它
4. 原生平台功能有嗎?       -> 用它
5. 已安裝的相依套件有嗎?   -> 用它
6. 一行就夠嗎?             -> 那就一行
7. 只有到這一步:做出最小可行的實作

基本上就是這樣。儲存庫裡其他東西都只是打包:將近二十種代理的適配器、幾個斜線命令,以及一個基準測試框架。

這個階梯有兩點,比表面看起來更重要:

它是在理解之後才運作,不是取代理解。 這些規則會要求代理先讀取變更所碰到的程式碼,並在選擇階梯之前追蹤實際流程。對解法懶一點,但不要對讀程式碼庫懶。

驗證不在範圍內。 規則明確保護信任邊界驗證、錯誤處理、安全性與可及性。目標不是「最少 token」,而是「只寫這個任務需要的東西」。程式碼之所以變小,是因為多餘的東西本來就不需要,不是因為硬是極限壓縮出來的。

安裝方式

選擇你的代理。以 Claude Code 為例,需要兩個提示(必須分開送出):

/plugin marketplace add DietrichGebert/ponytail
/plugin install ponytail@ponytail

Codex:

codex plugin marketplace add DietrichGebert/ponytail
codex plugin add ponytail@ponytail

Copilot CLI:

copilot plugin marketplace add DietrichGebert/ponytail
copilot plugin install ponytail@ponytail

Gemini CLI:

gemini extensions install https://github.com/DietrichGebert/ponytail

對於 Cursor、Windsurf、Cline、Kiro、Aider 和 Copilot Chat,沒有外掛層,所以你要把儲存庫中對應的規則檔複製出來(.cursor/rules/、.windsurf/rules/、.clinerules/,以此類推)。另外有些代理也會自動從專案根目錄載入 AGENTS.md,而這個儲存庫本身就附了一份,所以只要從 checkout 下來就能直接用,不需要額外設定。

Claude Code 和 Codex 的外掛會執行兩個很小的 Node 生命週期 hook,所以 node 必須在你的 PATH 裡。如果沒有,技能還是能用;只是少了常駐啟用。

指令

指令 功能
/ponytail [lite\|full\|ultra\|off] 設定強度或關閉。預設是 full。
/ponytail-review 檢視你目前的 diff 是否過度設計,回傳刪除清單。
/ponytail-audit 同樣功能,但針對整個儲存庫,而不是 diff。
/ponytail-debt 收集你延後處理的 ponytail: 捷徑,整理成帳本。
/ponytail-gain 顯示量測到的成效儀表板。
/ponytail-help 快速參考。

就算你從不開啟常駐模式,/ponytail-review 也是我最先會用的指令。把它指向你已經寫好的 diff,是一種低承諾的方式,看看這套紀律在你的程式碼庫裡是否真的能找出問題。

這些指令需要支援技能的主機。只有指令提示的適配器(Cursor、Windsurf、Cline、Copilot Chat、Kiro)會拿到常駐規則集,但不會有這些指令。

數字真正說了什麼

這裡讓這個專案比大多數 GitHub trending 條目更有意思,而且值得仔細看,因為這故事有個反轉。

最初的基準測試宣稱可減少 80–94% 的程式碼。有人開了 issue #126,提出四個合理批評:

  1. 單一的 prompt-completion 配對,不是代理實際的使用方式。
  2. 基準組只是個很愛講話的裸模型,會用長篇文字和選項去撐答案,所以「答案行數」其實是在數註解,不是在數程式碼。
  3. 「偏好一行式」可能會犧牲安全性。
  4. 七個字的提示詞,也許就能達到整個技能的效果。

在更公平的基準之下:

相較無技能基準 LOC token 成本 時間 安全
ponytail -54% -22% -20% -27% 100%
caveman(簡短敘述) -20% +7% +3% +2% 100%
「YAGNI + 一行式」提示詞 -33% -14% -21% -30% 95%

逐項任務的數字更有用:

任務 基準 ponytail
日期選擇器 404 23
顏色選擇器 287 23
檔案拖放區 251 95
多步驟精靈 571 312
依標題搜尋專案 44 44
匯出專案為 CSV 36 33
計算使用者專案數量 21 17

形狀很清楚。當存在過度建置陷阱時,削減幅度會非常大,因為代理會去用 <input type="date">,而不是自己做一個元件。當程式碼本來就很精簡時(例如後端 CRUD),各種方法最後都會收斂,ponytail 就不會有作用。-54% 這個標題數字,是跨這兩類任務的平均值,所以要把它理解成「有時候很驚人,有時候完全沒差」,而不是「到處都少一半程式碼」。

我覺得最有說服力的是安全性那一層。六個任務會建立一個起始檔案,要求寫一個函式,並像真實工單一樣把安全需求隱含起來。接著評分器會用對抗性輸入去執行產出的函式:路徑穿越、SQL injection、偽造 token、格式不正確的 CSV 列。

在路徑合併那個任務上,單純的一行提示詞寫出的程式碼最少(6 行),但有四分之一的執行會讓 ../../ 檔名逃出目錄。Ponytail 寫了大約 9.5 行,並且 4/4 都通過。多出來的三行就是那個防止路徑穿越的檢查。這就是使用結構化規則集,而不是只叫你的代理「寫短一點」的全部理由。

還有兩點我想給他們按讚。基準測試的說明文有一節限制條件,老實點出自己的弱點(只有一個模型、n=4、安全性只是底線而非證明)。而且它也記錄了他們在先前一輪發現的污染 bug:外掛的 SessionStart hook 也在基準組上觸發,偷偷讓 ponytail 在自己身上生效。能發現並公開這件事,比表格裡任何一個數字都更能建立信任。

我會在哪裡提出質疑

這只是提示,不是保證。 這裡的一切都只是上下文視窗裡的指令。模型會偏離、在壓力下忽略規則,並且在不同供應商之間表現不一。沒有什麼能強制這個階梯一定被遵守。

成效取決於你的代理在某種特定方式上很爛。 這些收益來自會過度建置的代理。如果你用的是更強的模型,或者你本來就會寫很精準的工單,明確寫「使用原生輸入」之類的限制,那麼很多空間早就被吃掉了。README 本身也提到,某些推理模型可能會反過來,因為花了額外思考 token 去猶豫每個階梯。

值得試嗎?

值得,但要先釐清這個「值得」是哪一種。

嘗試成本只有兩個指令,再加上一個關閉它的斜線命令。沒有執行時成本,不會成為你專案裡的相依套件,也沒有綁定風險,而且卸載方式有文件說明(甚至包含一個清理它在外掛資料夾外寫入狀態的腳本)。在這個價位下,根本不太需要猶豫。

Repo: github.com/DietrichGebert/ponytail

基準測試說明與重現步驟:benchmarks/results/2026-06-18-agentic.md


原文出處:https://dev.to/arshtechpro/ponytail-the-ai-coding-skill-that-makes-your-agent-write-less-code-29l3


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
boluoji
📝23   💬3   ❤️6
526
🥈
站長阿川
📝4   💬2   ❤️1
186
🥉
mike
1
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
📢 贊助商廣告 · 我要刊登