
ponytail 通过结构化能力声明,强制模型优先复用现有代码,降低审查成本与 Token 消耗。
大家用 AI 寫程式碼時,是不是也經常遇到這種尷尬?專案裡明明已有寫好的工具函式,模型卻視而不見,非要重新造一個一模一樣的輪子。
為了防範它亂寫,我們只能在工作區堆滿各種文字規範。每次改兩行程式碼,就得趕緊測試並提交 Git,生怕之前的邏輯被抹掉。這種防賊一樣的 Vibe Coding 體驗,實在令人心累。
今天我想向大家推薦開源專案 ponytail(https://github.com/DietrichGebert/ponytail)。它能讓模型精準識別已有的程式碼可提供能力,幫我們擺脫繁瑣的防禦型 Prompt。
接下來,我將結合實際使用經驗,聊聊如何從防禦式檢視轉向結構化上下文注入。希望這能幫助大家卸下心理包袱,重新找回流暢「開飛」的開發節奏。
不過在體驗這份輕鬆之前,我們先看看自己是如何一步步落入防禦陷阱的。
在工作區寫下密密麻麻的約束,本意是為了限制模型亂寫。然而,實際結果往往適得其反。
當規範層層疊加時,模型會判斷既有的程式碼未必符合新約定。為了穩妥起見,它乾脆避開既有的實作,重新生成一套新邏輯。
這就像給新員工發了一本 300 頁的手冊。他看到一大堆規章後,拿不準現有的共用函式到底合不合規。為了不出錯,他索性自己重新寫一套驗證函式。
大家常以為是模型「不聽指揮」,其實是我們寫的規範越多,模型越不敢直接複用舊程式碼。
正在渲染 Mermaid 圖表...
模型每次都會吐出大量冗餘的程式碼。為了攔截這些重造的「輪子」,不得不逐行進行人工審查(Code Review)。沒有審查,就是「欠債」,早晚得還。
為了應對模型輸出的「越軌」,我每次都是在專案上,進行著「計畫 - 審查 - 再計畫 - 再審查 - ... - 建置(Plan-Review-Build)」的微步循環,本質上是一種防禦性工作流程。
正在渲染 Mermaid 圖表...
雖然我的效率提高了許多,但我的 Vibe Coding 體驗總是略顯繁重,直到幾個月前我導入了 ponytail,才讓我飛了起來。
模型天生精通許多程式語言與通用系統設計。但在具體專案中,它卻有一個讓人頭痛的習慣:總是傾向於重複實作既有的功能。哪怕專案裡早已寫好現成的工具函式,它依然很容易視而不見,順手再造一個新輪子。
要解決這個問題,不需要給模型寫長篇大論的「警告信」。ponytail 的核心哲學極其簡單:最好的程式碼,就是那些永遠不需要被寫出來的程式碼。
它並非複雜的程式碼掃描工具,本質上是對 LLM產生邏輯的一種強力介入。它透過幾項結構化聲明,強迫模型在產生程式碼前,先把生成路徑從「從零編寫」切換為「優先選擇現有元件」。
關於 ponytail 的具體安裝與設定,建議直接參考官方儲存庫的說明:
實際導入時無需複雜設定,直接按照官方 README 引入即可。在工作區中只需要傳達一條核心原則:必須優先使用專案現有能力;只有在確認沒有合適的既有實作時,才允許撰寫新程式。
在導入 ponytail 之前,我曾整理過一套非常繁瑣的提示詞規範:
但隨著模型能力越來越強,這些層層疊加的規則反而成了絆腳石,甚至互相衝突。我曾經乾脆刪光所有規則,想給模型「自由發揮」的空間。
結果,失去約束的模型徹底放飛自我。我不得不變成一個「碎碎唸、婆婆媽媽」的大管家,每次產生程式碼都得跟在後面修正。只要有一次審查沒看仔細,程式碼庫就會多出一堆冗餘函式,累積沉重的審查負債。
ponytail 的魔力,就在於用極簡的宣告讓模型重新立足於專案中。它不再像個隨意發揮的外人,而是把分析問題的首要角度,固定在當前專案的程式碼庫上。
這種介入帶來了兩個非常直觀的效益:
ponytail 在社群受到了極大的歡迎,短短幾個月內,Star 數就衝到了 119k。
ponytail 非常適合中大型專案,或是已經累積較多共用函式庫的既有專案。若用於全新的空白專案,由於缺乏可重複使用的既有程式碼,ponytail 的最佳化效果就不會太明顯。事實上,它只解決了上下文正確性的問題,無法取代人類的架構思考與業務邏輯判斷。
它能有效防範重複造輪子的風險。然而,如果業務需求本身存在衝突,模型依然會產出符合介面規範、但業務邏輯錯誤的程式碼。
隨著 AI 技術的快速演進,模型供應商未來很有可能會將這類上下文宣告理念直接納入到模型原生能力中。從長遠來看,ponytail 也許只是 AI 工具鏈演進過程中的一個過渡插曲。
但在目前的開發體驗中,它確實有效地破解了重複造輪子的困境。它把 Vibe Coding 從「提心吊膽的監督」變成了「順暢的協作」。如果你也深受模型重複造輪子之苦,強烈建議你趕快親自體驗看看。
ponytail 通过结构化能力声明,强制模型优先复用现有代码,降低审查成本与 Token 消耗。
核心優勢
邊界與代價
適用場景 具備公共函式庫與較多程式碼積累的中大型專案開發。