DEV Community

Cover image for caveman 真的能幫我省下 Token 帳單嗎?
JH5
JH5

Posted on

caveman 真的能幫我省下 Token 帳單嗎?

前幾天在聽 MS的 Token 滅火大會時,線上的講師提到的熱門工具,https://github.com/juliusbrussee/caveman

只要掛上 caveman system prompt,就能在保證 100% 技術精確度的前提下,大幅砍掉 AI 程式碼生成時的輸出 token 成本。

實測顯示,在 React 入門除錯範例中,caveman ultra 模式能省下 60.9% 的 token,然後我找了社群上熱門的 Next.js Todo List App 專案(包含 Prisma 與 Server Actions)來實測,修改優先級、過濾排序與截止日期等功能也省下了約 49% 的 token。

不論是你想要降低 API 成本與提高 IDE 反應速度的開發者,建議都可以去下載來試試看。


caveman如何兼顧精確與精簡?

最近經歷了 Antigravity 與 Gitub Copilot 的雙重錢包夾殺,一直看著 token 噴掉真的超心痛,還用到不少 API 額度 QQ

caveman 是由 Julius Brussee 開發的 AI 程式碼代理人(AI coding agent)擴充技能,特點是透過精簡的原始人口吻抹除廢話以節省高達 60% 的輸出 token 成本。
運作的邏輯其實很土炮,就是透過 system prompt 強制 AI 閉嘴XD。

把所有無意義的客套話(比如「我很樂意為您解答」、「這是一個很好的問題」)、冠詞(a, an, the)還有無關緊要的修飾詞全部濾掉。
不過它只對文字敘述下重手,對程式碼區塊則是原封不動,這保證了代碼的 100% 精確度。

目前 Caveman 提供了 4 種不同的對話壓縮層級(grunt levels):

  • lite:只去掉廢話,保留完整句子與文法結構。
  • full:去掉冠詞,允許碎片句,開始用短同義詞。
  • ultra:極致縮寫,把 database 寫成 DB,用箭頭 表示因果關係。
  • wenyan:直接用文言文回覆,利用中文文言文的超高資訊密度來壓縮 token。

從入門到全端的 token 變化

我找了三個開發中常見的案例,在我的 local 環境用 tiktoken 庫(基於 OpenAI 的 cl100k_base 編碼,就是 GPT-4 用的那套)跑了實際的 token 計數。
以下是這三個範例的實測結果。

案例一:React Controlled Component

這個問題很基本,就是 input 綁定了 value 卻沒有寫 onChange 導致輸入框被鎖死。
這時候一般 LLM 會長篇大論解釋 controlled component 的機制,我們看看 caveman 各模式怎麼回答:

  • Vanilla(87 tokens): "Sure! I'd be happy to explain this. The reason you can't type into the input field is because you've set its value prop to a state variable (value), but you haven't provided an onChange handler..."
  • Caveman Lite(60 tokens,省下 31.0%): "In React, setting the value prop on an input without an onChange handler makes it read-only..."
  • Caveman Full(44 tokens,省下 49.4%): "Input value bound to state but missing onChange handler makes it read-only. Add onChange event..."
  • Caveman Ultra(34 tokens,省下 60.9%): "Input value bound state, no onChange → read-only. Add onChange to update. Fix: onChange={e => setValue(e.target.value)}."
  • Caveman Wenyan(39 tokens,省下 55.2%): "React元件以value縛state,缺onChange,遂成唯讀。增 onChange={(e) => setValue(e.target.value)} 即解。"。 (我第一眼看到這些訊息還想說這是啥玩意...)

範例二 Prisma Eager Load 優化

在撈資料庫時,不小心用 include 查了整張 posts 表,只是為了解構 posts 的陣列長度。

  • Vanilla:103 tokens。
  • Caveman Lite:73 tokens(省下 29.1%)
  • Caveman Full:55 tokens(省下 46.6%)
  • Caveman Ultra:47 tokens(省下 54.4%)
  • Caveman Wenyan:71 tokens(省下 31.1%)

範例三:Next.js App Router JWT Middleware API

這個範例包含了整段 TypeScript 的 API Route 程式碼,因為程式碼本身是不被壓縮的,這會大幅拉高 baseline。

  • Vanilla:283 tokens。
  • Caveman Lite:242 tokens(省下 14.5%)。
  • Caveman Full:203 tokens(省下 28.3%)。
  • Caveman Ultra:197 tokens(省下 30.4%)。
  • Caveman Wenyan:221 tokens(省下 21.9%)。

Next.js Todo App 修改

為了確認真的能救我的信用卡,我在我的 Antigravity 環境中,呼叫三個 subagents( Gemini 3.5 Flash)來修修改改 Next.js Todo List App 專案(結合 Prisma 與 Server Actions)的三項功能修改:加入優先程度、篩選與排序、截止日提醒。

我給了這三個 subagents 一模一樣的開發要求,在 vanilla、caveman ultra 與 caveman wenyan 三種系統設定下執行修改,並計算回傳的完整 token 數:

  • Vanilla 正常對話:總共消耗 2398 tokens 不意外的,大量的篇幅說明 Server Actions 的運作原理、詳細的修改步驟指示,以及各種前後說明的客套話。
  • Caveman Ultra 模式:總共消耗 1227 tokens 直接拿掉了所有贅詞,把「步驟一、步驟二」壓縮成極短的英文縮寫,只留下最重要的程式碼 diff,大概換算下來在三個任務中省下了 48% 的 token!
  • Caveman Wenyan 文言文模式:總共消耗 1606 tokens 以文言文的精簡方式交代步驟(到底是有什麼需求才會做這個mode XD ),但可能是受限於 tokenizer 對中文字元的編碼,只省下了 33% 的 token,效果略輸給 Ultra。

實測的局限

從數據上來看,只要回答中「程式碼」所佔的比例越高,caveman 的節省效率就會跟著遞減,好像也很合理,畢竟總不能讓 AI 把 NextResponse.json 瞎縮寫成 NextRes.json,這樣應該會引來更多的悲劇。

而在純文字回答的入門範例中,雖然帳面上可以爽拿 60.9% 的節省率,但到了實際開發與 修改,程式碼區塊是 byte-preserved,省下的百份率大概就落在 30% 到 40% 左右,不過依然是個很可觀的數字,一個月可以省下大概 40% 的額外 API 帳單,也是一筆不小的費用。

體感上更棒的是,因為 AI 吐出的 token 變少了,IDE 的反應速度也快了很多。

用了一週多,我個人覺得,平日開發使用full模式,大概能穩定省下 40% 到 50% 的 token,而且可讀性最好,如果你正在差找大量的 debug log 或是彙整資料,偶爾可以直接開 ultra,反正你只要看錯誤代碼跟那一兩個關鍵字。

至於 wenyan 模式,安裝完玩過一次即可XD

Top comments (0)