DEV Community
Grade 8
3h ago
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
前幾天在聽 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 anonChange handler..." - Caveman Lite(60 tokens,省下 31.0%): "In React, setting the value prop on an input without anonChange handler makes it read-only..." - Caveman Full(44 tokens,省下 49.4%): "Input value bound to state but missing onChange handler makes it read-only. AddonChange event..." - Caveman Ultra(34 tokens,省下 60.9%): "Input value bound state, no onChange → read-only. AddonChange 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)
Comments
No comments yet. Start the discussion.