如果你等不及要讀這篇文章,現在就把這個提示詞複製貼上到你的 Claude Code / Codex / Grok 裡,馬上就能用:
安裝 XERJ(文件:
https://xerj.org/llms.txt ),為這個專案的原始碼建立索引,並設定參考編碼:複製並索引與我們正在構建的專案最接近的開源儲存庫,並在撰寫程式碼之前,搜尋它們如何解決問題。
大多數人把 Claude Code 當作昂貴的實習生來用,而這裡要告訴你如何讓它每次迭代都變得更聰明(真的)。
你交給它一個任務。它問幾個問題。它搜尋你的儲存庫,猜測你的程式碼如何運作,寫出一個實作,然後某個東西壞了。你貼上錯誤訊息。它重寫。然後又有別的東西壞了。
每一次的迭代,都是你花錢買的 token。
而 Claude 卡住的原因,通常不是因為問題太難。而是因為你讓它重新發現一個已經存在於某處的答案,無論是在你自己的儲存庫裡,還是在一個已經有數千名開發者幫你找到所有邊界案例的開源專案中。
XERJ 對此進行了嚴謹的測試。8 個編碼任務,4 種程式語言,每種設定跑 16 次,token 數量直接從 Claude -p 提取。
從記憶中:260,916 個輸出 token 從參考中:9,982 個輸出 token

記憶模式解決了 16 個任務中的 11 個。參考模式解決了全部 16 個。
所以,認真讀下去吧 ↓↓↓
你正在為之付費的循環

一個正常的對話流程是這樣的。
你描述你想要什麼。Claude 開始探索。它對你的模式、你的錯誤處理、你的資料結構做出假設。它根據那個假設撰寫程式碼。假設在某個地方錯了,所以東西壞了,你解釋錯誤,它重寫,然後你再繞一圈,直到輸出結果符合你一開始腦海中的想法。
人們把這個循環解讀為 Claude 不擅長寫程式。事實正好相反。Claude 非常擅長拿一個可運作的範例,並將其應用到新的情境中。這個循環之所以發生,是因為對話中沒有範例,所以它把對話的前半段都花在重建一個範例上。
輸出 token 是昂貴的,在 Claude 模型上的定價大約是輸入 token 的 5 倍。所以這個循環的每一圈,都是以最高費率計費的。
提示詞和參考是不一樣的東西

提示詞是指令。參考是證據。

你可以寫兩千個字來精確描述某個東西應該如何運作,但 Claude 仍然需要將這個描述轉化為實作,然後猜測你遺漏的所有細節。
一個可運作的實作已經包含了那些你永遠不會寫下來的部分:
- 架構
- 錯誤處理
- 重試邏輯
- 兩年前有人在生產環境中遇到的邊界案例
- 一個函式為什麼要那樣拆分的原因
你沒有在提示詞中提到這些,因為你根本不知道它們很重要。
這裡有個最尖銳的例子。編譯器最終會洩漏一個方法名稱。它會告訴你這個函式叫做 absorb 而不是 push,並為此向你收取 20 到 25 倍的 token 費用。但編譯器永遠不會洩漏一個合約。你的工具鏈中沒有任何東西會告訴你,這個結構在被讀取之前必須先被密封。這個規則存在於撰寫該函式庫的人的腦海裡,以及函式的本體中,再多的提示詞也無法找回它,因為你根本不知道它的存在。

這就是為什麼這個方法能同時減少 token 消耗並提高品質。輸入更多有用的上下文,減少猜測,減少重試次數。
測試結果顯示了什麼
與基於 grep 的設定相比,參考編碼在相同的 8 個任務上使用了 2.7 倍更少的輸出 token。各組的總成本從記憶模式的 $11.18 美元,降到 grep 模式的 $3.27 美元,再降到參考模式的 $1.58 美元。

Grep 看起來像是解決方案,但大多時候不是。Grep 告訴 Agent 去哪裡找,然後 Agent 仍然需要將檔案讀入上下文才能理解它。在這項研究中,有一個語料庫為了做到這一點,拉取了 106 萬個輸入 token。雖然 token 比較便宜,但數量極其龐大,而且你還得等待 Agent 的每一次迭代。
然後是更大規模的測試。為這項研究從頭開始撰寫了 13 個函式庫,橫跨 5 種程式語言,每個函式庫都能編譯並通過自己的測試,每個都帶有一個編譯器無法警告你的執行時期規則。這是刻意為之的,因為你無法在模型已經記住的程式碼上測試檢索能力。

純靠記憶:21 個任務中只成功 1 個 搭配檢索:21 個任務全部成功
花費 $21.90 美元對比 $3.38 美元。
這不是更便宜,而是完全不同的結果。
其中一個最乾淨的範例是一個 Java 任務。建立一個只能附加的帳本(append-only ledger),在重播前密封,並截斷到一個檢查點。從記憶模式中,它重新發明了整個東西,寫了 503 行,大約 36,000 個 token,截斷語義錯誤,未能通過測試。給了它參考後,它只寫了四行。103 個 token。通過測試。
按程式語言區分的數據告訴你價值所在。Python 從 14,752 降到 214。C 從 18,792 降到 988。Java 從 27,108 降到 98。JavaScript 只從 4,300 降到 646,因為前綴樹(prefix trie)是一個已知的結構,模型已經大致知道答案了。

在日常工作中使用 XERJ 的開發者回報,token 消耗大約減少了 5 倍。這是自行回報的數據,而非基準測試結果,所以請將其視為最低標準,而非最終成果。
為什麼更長的提示詞無法解決這個問題
有一段時間,對於糟糕輸出的答案總是一樣的:寫一個更好的提示詞。加入更多上下文。解釋架構。
有時候這確實有效。
但提示詞是你在描述一個你還沒寫出來的解決方案。而參考是一個別人已經發布並除錯過的解決方案。你無法透過描述來得到那個只因為維護者在凌晨 3 點被限速、匆忙修補而存在的重試邏輯。
程式碼已經在那裡了。你不需要解釋它背後的所有決策。
找到參考才是真正的工作

這就是事情搞砸的地方。
手動做的意思是打開 GitHub,瀏覽那些只有部分相符的儲存庫,翻閱舊的 Pull Request,然後打開你八個月前的程式碼庫,試著回憶你當初把檔案命名為什麼。等你找到可用的東西時,你本來都可以把功能寫完了。
所以,搜尋必須要便宜,否則沒有人會做第二次。
這就是 XERJ 的用途。它為程式碼建立索引,讓你可以根據你正在解決的問題來搜尋,而不是根據檔名或關鍵字,然後將匹配的實作提取出來,作為你可以直接交給 Claude 的參考。https://xerj.org
如何執行

1) 將安裝提示詞複製/貼上到 Claude Code 對話中
安裝 XERJ(文件:
https://xerj.org/llms.txt ),為這個專案的原始碼建立索引,並設定參考編碼:複製並索引與我們正在構建的專案最接近的開源儲存庫,並在撰寫程式碼之前,搜尋它們如何解決問題。
2) 檢查你的編碼 Agent 的回應,並建議你想要複製作為參考的專案
無論你在建構什麼,你總是知道還有誰在做同樣的事。有些專案在這個階段已經會被 Claude Code 找到,你可以根據自己的選擇添加更多。5 到 10 個通常就夠了,但這取決於你在寫什麼程式。
3) 製作下一個產品功能並檢查結果
讓它自由發揮,然後享受(或不享受)新的結果。你隨時可以回到浪費時間的編碼模式,但我相信你會立刻看到差異。
4) 讓它持續運作,並用你的回饋幫助社群
你以這種方式完成的每個任務,都會成為下一個任務的參考。這個函式庫會不斷累積。任何時候,當
何時跳過它
如果模型已經知道這段程式碼,那麼這只是一個額外的成本,沒有其他作用。然而,這種情況並不常見。

他們也測量了這一點,針對 Valkey 和 Memcached,這些是 Claude 肯定訓練過的真正公開程式碼。從記憶模式中,它以 $1.49 美元的成本在 6 個任務中獲得 6 次成功。檢索模式則以 $4.40 美元的成本在 6 個任務中獲得 5 次成功。它不僅輸了,成本還是什麼都不做的三倍。
所以,界線在於:一邊是私有的、專有的或真正不熟悉的程式碼,另一邊是模型已經「吃過」的所有東西。

如果你正在建構的東西以前從未被建構過,那就沒有東西可以參考,你又回到了描述它的狀態。
如果參考是針對你沒有使用的框架版本撰寫的,那麼它的成本會超過它節省的。
而如果任務只有四行程式碼,那就直接寫吧。
仍然有待解決的問題
那 13 個函式庫是為這項研究而建的,這使得它們從結構上來說是不熟悉的,同時也讓它們變得很小。還沒有人針對一個真正大型的私有程式碼庫運行過這個測試。預期差距會在那裡擴大,因為 grep 的成本會隨著程式碼樹的大小而增加,而檢索的成本則保持平穩,但這只是猜測,直到有人實際測量為止。
上面的所有數字都來自 XERJ 自己發布的基準測試,每次運行的原始數據都在他們的儲存庫中。 https://xerj.org/case-studies/reference-coding
重點結論
你不需要一個不同的模型,也不需要離開 Claude Code。
你需要停止每次都從零開始每個任務,因為你正在建構的東西,很可能已經存在於你的儲存庫中,或是一個兩年前就解決了這個問題的開源專案裡。
如果有人已經解決了它,就把他們的程式碼交給 Claude,讓它從那裡開始工作。而這對你來說沒有任何成本,只是一個提示詞。






