實戰手冊 · Field Manual 2026 春季號
github.com/DietrichGebert/ponytail · 49k ★
P
第 01 期 · 開源 AI Agent / Prompt Engineering

讓 AI 只寫
必要
那幾行。

Ponytail 是 MIT 授權的開源 AI agent 技能,把「最懶的資深工程師」的判斷裝進你的 agent:寫 code 前,先沿一條六階決策階梯往下問——「這需要存在嗎?標準庫能做嗎?平台原生功能有嗎?」最後才寫最小可行的程式。在真實 Claude Code session 的測試中,相對無技能 baseline 平均少寫約 54% code(over-build 情境最高 94%),同時保留每一道安全護欄。本手冊涵蓋安裝、四種強度、指令總覽、官方用法與一段實戰示範。

54%
平均少寫 Code
14
支援的 Agent
100%
安全護欄保留
MIT
開源授權
01
這是什麼

一套讓 agent
先問該不該寫
的規則。

Ponytail 由 Dietrich Gebert 開源,本質是一份注入 AI agent 的規則集(ruleset),外加幾個技能與指令。它的人設來自每間公司都有的那位資深工程師:綁馬尾、戴橢圓眼鏡,在公司比版本控制還久;你給他五十行,他看一眼,什麼都不說,用一行換掉。Ponytail 把那個人放進你的 agent。

它解決的是 AI agent 的一個傾向:過度建構(over-build)。你要一個日期選擇器,agent 可能去裝 flatpickr、寫一個 wrapper component、加一張樣式表,還順便開啟時區的討論。Ponytail 介入的點在於,寫任何 code 前先沿一條六階決策階梯往下走,停在第一個成立的階。

關鍵不是「最少 token」,而是只寫任務需要的。程式之所以小,是因為它必要,不是因為被壓行數。官方在真實 repo(FastAPI + React)上用 headless Claude Code 跑 12 個功能任務(Haiku 4.5、n=4)測得:相對無技能 baseline,Ponytail 是唯一在 LOC、token、成本、時間四項全降、且安全分維持 100% 的一組。

決策階梯 · 停在第一個成立的階
該存在嗎 標準庫 平台原生 已裝依賴 一行 最小可行
He says nothing. He writes one line. It works.
他什麼都不說。他寫一行。它就動了。
— DietrichGebert/ponytail README 標語
02
安裝

14 種 agent,
各自一行裝好。

Claude Code 與 Codex 的 plugin 會跑兩個極小的 Node.js 生命週期 hook,所以 node 需在 PATH 上。最常見的兩個 host 安裝如下:

# 在 Claude Code 對話框輸入這兩行 /plugin marketplace add DietrichGebert/ponytail /plugin install ponytail@ponytail # 桌面版 Claude 沒有 /plugin 指令:改從 UI 安裝 # Customize → personal plugins 旁的 + → Create plugin and add marketplace # → Add from repository → 貼上 repo URL
# Codex CLI codex plugin marketplace add DietrichGebert/ponytail # 開 /plugins 選 Ponytail 安裝,再到 /hooks 檢視並信任兩個 lifecycle hook # GitHub Copilot CLI copilot plugin marketplace add DietrichGebert/ponytail copilot plugin install ponytail@ponytail

其他 host:一行或一個檔

skill-capable 的 host 用各自的套件指令安裝;instruction-only 的編輯器則複製對應的 rules 檔即可,規則仍會常駐。

工具 安裝方式
Gemini CLI / Antigravity CLI gemini extensions install <repo URL>(或 agy plugin install)
OpenCode 從本 repo 的 checkout 執行,於 opencode.json 加 plugin 路徑
Pi agent harness pi install git:github.com/DietrichGebert/ponytail
OpenClaw clawhub install ponytail
Cursor / Windsurf / Cline / Kiro / Zed 複製對應的 rules 檔(.cursor/rules/.windsurf/rules/ 等)
CodeWhale / VS Code(Codex 擴充) 讀專案根目錄的 AGENTS.md,零設定
node 不在 PATH 也不會壞。node 不在(非互動 shell 的)PATH 上,技能照常運作,只是常駐啟用會安靜地停用,而不是在每個 prompt 報錯。Nix / nvm 使用者要特別確認非互動 shell 的 PATH。
03
能力總覽

四個強度,
五個指令。

Ponytail 預設每個 session 常駐,強度分四級。/ponytail 不帶參數會回報當前等級;帶 lite / full / ultra / off 切換。指令需要 skill-capable host(Claude Code、Codex、OpenCode、Gemini、pi);在 Codex 裡它們是技能,用 @ 觸發。

Level · 01
/ponytail lite
輕量提醒
最低干預。在不打斷節奏的前提下,於明顯 over-build 時輕推一下。
Level · 02
/ponytail full
預設強度
預設值。每一輪都套用完整決策階梯。可用 PONYTAIL_DEFAULT_MODE 改全域預設。
Level · 03
/ponytail ultra
最強模式
官方說明:留給「codebase 得罪過你」的時候。最積極地砍多餘建構。
Level · 04
/ponytail off
關閉
暫時停用。啟動與切換時會顯示目前模式。
Command · 05
/ponytail-review
diff 審查
審查當前 diff 的過度工程,回傳一份「刪除清單」。
Command · 06
/ponytail-audit
全 repo 稽核
稽核整個 repo 的過度工程,範圍不限於這次 diff。
Command · 07
/ponytail-debt
技術債帳本
把你用 ponytail: 標記延後的捷徑收集成帳本,讓「之後再說」不會變成「永遠不做」。
Command · 08
/ponytail-gain
成效計分板
顯示 benchmark 量到的影響:少寫的 code、省下的成本、加快的速度。
Command · 09
/ponytail-help
快速參考
上述指令的快速參考。

六階決策階梯,逐階問清楚

這是 Ponytail 的核心機制。寫 code 前,agent 沿這條階梯往下,停在第一個成立的階——能用標準庫就不裝套件,有平台原生功能就不自己寫:

問題 → 行動
1這需要存在嗎? → 不需要就跳過(YAGNI)
2標準庫能做嗎? → 用它
3有平台原生功能嗎? → 用它
4已安裝的依賴能做嗎? → 用它
5一行能解決嗎? → 一行
6到這裡才寫:能動的最小實作
懶,但不馬虎。信任邊界的驗證、資料遺失處理、安全與無障礙(accessibility)永遠不在被砍的清單上。Ponytail 是唯一在 benchmark 安全分維持 100% 的精簡組;一個單純「寫一行」的 prompt 會掉掉其中一道。
04
官方文件記載的用法

依官方文件,
這樣最有效。

以下八條全部來自官方 README 與 docs,不含社群傳聞或未驗證的數字。每張卡標注出處段落。

TIP 01

預設是 full,可用 env 改全域

PONYTAIL_DEFAULT_MODE 環境變數(lite/full/ultra/off),或 ~/.config/ponytail/config.jsondefaultMode 欄位,設定每個新 session 的等級。預設 full

來源 · 官方 README「Install」段落
TIP 02

ultra 留給「被 codebase 得罪」時

官方原話:/ponytail ultra exists for when the codebase has wronged you personally。日常用 full 即可,ultra 砍得最積極。

來源 · 官方 README「Install」段落
TIP 03

review 給你一份刪除清單

寫完一段就跑 /ponytail-review,它審查當前 diff 的過度工程,回傳可刪項目;/ponytail-audit 則擴大到整個 repo。

來源 · 官方 README「Commands」
TIP 04

用 ponytail: 標記延後,再用 debt 收回

真的要走捷徑時,用 ponytail: 註解標記。之後跑 /ponytail-debt 把這些延後項收集成帳本,避免「之後」變「永遠不做」。

來源 · 官方 README「Commands」
TIP 05

指令需要 skill-capable host

指令需 Claude Code、Codex、OpenCode、Gemini 或 pi。Cursor、Windsurf、Cline、Copilot、Kiro、Antigravity 等 instruction-only adapter 只載常駐 ruleset,沒有指令與模式開關。

來源 · 官方 README「Commands」
TIP 06

node 要在 PATH 上

Claude Code / Codex plugin 跑兩個 lifecycle hook,需要 node 在 PATH。不在的話技能仍可用,只是常駐啟用會安靜停用而非報錯。Nix/nvm 注意非互動 shell。

來源 · 官方 README「Install」段落
TIP 07

CodeWhale 讀 AGENTS.md,零設定

AGENTS.md 複製到你的專案根目錄,或從本 repo 的 checkout 執行 codewhale,規則即生效。VS Code 的 Codex 擴充同樣讀 AGENTS.md

來源 · 官方 README「Install」段落
TIP 08

不需要設定檔

官方 FAQ:不需要 config 檔。可選的 config.json 或 env 變數只用來設預設等級,沒有任何必填項。

來源 · 官方 README「FAQ」
05
實戰示範

一個日期選擇器,
從一堆檔案到一行

以下取自 README 的招牌例子:同樣要一個日期選擇器,無技能的 agent 會去裝套件、寫 wrapper、加樣式表;掛上 Ponytail 後,它停在決策階梯的「平台原生」那一階——瀏覽器本來就有 <input type="date">。接著示範 /ponytail-review 在一段已寫好的 diff 上回傳刪除清單。

~/projects/app · claude code · ponytail full
You › 幫我加一個日期選擇器,讓使用者選預約日期。
[ponytail full · 套用決策階梯] rung 1 該存在嗎? → 是,需要選日期 rung 2 標準庫? → 不適用(前端) rung 3 平台原生? → 命中。瀏覽器有原生 date input
Claude(ponytail)› 不用裝 flatpickr,不用 wrapper component,不用樣式表。 瀏覽器本來就有一個:
<!-- ponytail: browser has one --> <input type="date">
[diff: +1 行 · 0 個新依賴 · 原生鍵盤與無障礙支援保留]
You › /ponytail-review
[掃描當前 diff 的過度工程] DELETE LIST — · dateUtils.ts:formatForPicker() 包了原生 toISOString(),刪 · DatePicker.css(整檔)原生控制項自帶樣式,刪 · validateDate() 保留 — 信任邊界驗證,不在砍的清單上
淨變動:-86 行 · 安全護欄:全數保留 ✓
你要一個日期選擇器。
瀏覽器本來就有一個。
— ponytail README「Before / after」

這段示範的重點

砍掉的是 包裝,不是 功能:被刪的是重複包原生 API 的工具函式和多餘樣式表,而 validateDate() 這種信任邊界驗證留著。這正是 Ponytail 與單純「寫一行」prompt 的差別——後者在 benchmark 會掉掉一道安全護欄,Ponytail 不會。

示範中的行數是說明性數值。實際省幅取決於任務本身:有真正 over-build 陷阱(date picker、color picker)時最大,程式本來就精簡時接近零。

06
邊界與限制

知道它不省什麼。

  • 它不是程式碼高爾夫。規則從來不是「最少 token」或「最少行數」,而是「只寫任務需要的,且絕不砍驗證、錯誤處理、安全與無障礙」。code 小是因為必要,不是被壓成一行炫技。
  • 在會花 thinking token 斟酌階梯的 reasoning model 上可能反效果。官方明說:在 GPT-5.5 這類會逐階推敲的模型上,成本與延遲可能不降反升。省成本與省時間是「會照階梯走的模型」上的副作用,不是保證。
  • benchmark 是特定條件下的量測。主數據為 Haiku 4.5、n=4、12 個功能任務,在 FastAPI + React 的真實 repo 上跑。省幅在「真有 over-build 陷阱」時最大(可達 94%),在本來就精簡的程式上接近零。
  • 舊的「80–94% less code」要正確解讀。那組是早期 single-shot 數字,issue #126 指出裸模型 baseline 會用散文與選項灌水。官方已改用 agentic baseline,84–94% 是「per-task 上限」而非平均;平均約 54%。
  • 指令需要 skill-capable host。Cursor、Windsurf、Cline、Copilot(編輯器)、Kiro、Antigravity 等 instruction-only adapter 只會載入常駐 ruleset,沒有 /ponytail 指令與模式切換。
  • node 不在 PATH,常駐啟用會靜默停用。不是報錯,是安靜地不啟用。要常駐生效就確認 node 在(非互動 shell 的)PATH 上,Nix / nvm 環境尤其要檢查。
  • 桌面版 Claude 沒有 /plugin 指令。要從 UI 安裝:Customize → personal plugins 的 + → Create plugin and add marketplace → Add from repository,再貼 repo URL。
  • 你堅持要那個 120 行的 cache class,它還是會寫。官方 FAQ 的回答:你不需要,但你硬要的話,他會幫你建——慢慢地、正確地,一邊看著你。判斷力仍在你手上。
07
進階路徑

把懶惰內建
每個 session。

裝好、跑通 full 之後,下面幾步把 Ponytail 從「單一 host 的提醒」推到「整個團隊與工具鏈的一致規範」。

進階玩法地圖

1. 設好團隊預設等級。PONYTAIL_DEFAULT_MODEconfig.jsondefaultMode 統一每個新 session 的強度,讓團隊不必每次手動切。

2. 把 review 接進你的流程。每個 PR 前跑 /ponytail-review 拿刪除清單,週期性跑 /ponytail-audit 掃整個 repo,把過度工程當成可量測的待辦。

3. 管理你的 ponytail 技術債。ponytail: 標記延後的捷徑,定期 /ponytail-debt 收成帳本,讓「之後再說」有歸還的一天。

4. 跨工具統一規範。docs/agent-portability.md 對照哪個檔對應哪個 agent,把同一套規則同步到 Cursor、Windsurf、Cline、Kiro 等 instruction-only 編輯器。

5. 自己量一遍。/ponytail-gain 看成效計分板,或依 benchmarks/ 在你自己的 repo 與模型上重現量測,別只信別人的數字。

最該讀的三份延伸閱讀

benchmarks/results/2026-06-18-agentic.md——完整方法、逐任務表格與限制。
examples/——更多「倖存者」:被精簡前後的真實對照。
docs/agent-portability.md——哪些檔對應哪個 agent 的完整對照。

The code you never wrote scales infinitely.
你從沒寫的程式,可以無限擴展。
零 bug、零 CVE,永遠 100% 上線。
— ponytail README「FAQ · Does it scale?」