省 Token 技巧與效率最大化
Token 是什麼?
💡 比喻:計程車跳錶 每次你跟 AI 對話,就像搭計程車—— 你說的每個字(輸入 Token)和 AI 回覆的每個字(輸出 Token)都在跳錶。 說越多、回越長,費用越高。
省 Token = 省錢 = 用更少的「油」跑更遠的「路」。
Token 的計算方式
什麼是 Token?
- 英文:大約 1 個單字 = 1 Token("hello" = 1 Token)
- 中文:大約 1 個字 = 1.5~2 Token("你好" ≈ 3 Token)
- 程式碼:依長度而定(一行 code ≈ 5-15 Token)
Token 的兩種類型:
- 輸入 Token(Input):你說的話 + CLAUDE.md + 讀取的檔案
- 輸出 Token(Output):AI 回覆的內容 + 修改的檔案
輸出 Token 通常比輸入 Token 貴 3-5 倍!
所以讓 AI 「少回廢話」比「你少打字」更省錢。
Token 費用示意
操作 大約 Token 消耗
────────────────────────────────────────────────
讀取 CLAUDE.md(有快取) ≈ 0(幾乎免費!)
簡單問答 ≈ 500-1,000
修改一個檔案 ≈ 2,000-5,000
建立完整 CRUD ≈ 10,000-30,000
大型重構 ≈ 50,000-100,000
Claude Opus 4 大約價格參考:
輸入:$15 / 百萬 Token
輸出:$75 / 百萬 Token
省 Token 的 7 個技巧
技巧 1:CLAUDE.md 用快取
❌ 每次對話都重新解釋專案:
"我的專案用 .NET 8,SQLite,EF Core,
有 HomeController, ProductController..."
→ 每次花 500+ Token 重複說明
✅ 寫好 CLAUDE.md:
AI 自動載入,有快取機制 ≈ 0 Token
→ 省下 95% 的重複說明 Token
這是最重要的省 Token 技巧,沒有之一。
技巧 2:精準 Prompt(不說廢話)
❌ 浪費 Token 的寫法(87 個字):
"你好,我想請你幫我一個忙,
如果你方便的話,可以幫我看一下
HomeController.cs 這個檔案嗎?
我覺得裡面可能有一些問題,
你看看能不能幫我改一下,
謝謝你喔!"
✅ 省 Token 的寫法(29 個字):
"HomeController.cs 的 Index action
回傳 null,改成回傳 View(model)"
→ 省了 60% 的輸入 Token,結果一樣好
技巧 3:SubAgent 多工
❌ 一個一個做:
"改 HomeController" → 等 → "改 ProductController" → 等 → "改 CSS"
→ 每次等待都在消耗 context
✅ 讓 AI 用 SubAgent 並行處理:
"同時幫我做以下三件事:
1. HomeController 加上搜尋功能
2. ProductController 加上分頁
3. site.css 加上 dark mode 樣式"
→ AI 會分配 SubAgent 並行處理
→ 各自獨立 context,不互相干擾
→ 更快完成,Token 更少
技巧 4:一次給完整需求
❌ 來回問答(浪費 Token):
你:"幫我建一個 Controller"
AI:"什麼 Controller?"
你:"ProductController"
AI:"要什麼 action?"
你:"CRUD"
AI:"用什麼 DbContext?"
→ 6 次往返 = 6 倍的 context 載入
✅ 一次到位:
"建立 ProductController,
用 ApplicationDbContext,
有完整 CRUD(Index, Details, Create, Edit, Delete),
所有 action 用 async/await,
加上中文註解"
→ 1 次往返 = 最少的 Token
技巧 5:用 Glob/Grep 而非讓 AI 猜
❌ 讓 AI 猜檔案位置:
"找一下有沒有用到 DbContext 的地方"
→ AI 會一個一個資料夾搜尋,讀很多不相關的檔案
→ 每個讀取的檔案都消耗 Token
✅ 明確告訴 AI:
"在 Controllers/ 資料夾裡,
找出所有用到 ApplicationDbContext 的 Controller"
→ AI 用 Glob 精準搜尋,不浪費 Token
你也可以在 Prompt 中指示 AI 用特定工具:
"用 Grep 搜尋所有包含 'TODO' 的 .cs 檔案"
→ AI 會用 Grep 工具,比逐一讀檔案快且省 Token
技巧 6:bypassPermissions 避免重複確認
❌ 每次操作都要確認:
AI:"我要修改 HomeController.cs,可以嗎?"
你:"可以"
AI:"我要執行 dotnet build,可以嗎?"
你:"可以"
→ 每次確認都多一輪對話 = 多花 Token
✅ 設定 bypassPermissions:
在 settings.local.json 加上允許清單
→ AI 直接執行,不問許可
→ 省下確認來回的 Token
技巧 7:Hook 自動化
❌ 每次手動指示:
"改完後幫我 build"
"改完後幫我 build"(每次都要說)
→ 重複指令浪費 Token
✅ 設定 Stop Hook:
每次 AI 回應結束自動執行 dotnet build
→ 不用每次提醒 → 省 Token
Context Window 管理
什麼是 Context Window?
Context Window = AI 的「工作記憶」
就像你桌上能同時攤開的文件數量有限
Claude Opus:最大 1M Token(約 75 萬個中文字)
→ 聽起來很多,但實際上很容易用完
消耗來源:
- CLAUDE.md 內容
- 對話歷史(越長消耗越多)
- 讀取的檔案內容
- AI 的回覆
Compaction(自動壓縮)
當對話太長時,Claude Code 會自動壓縮對話歷史。
壓縮前:完整的對話記錄(包含所有細節)
壓縮後:摘要版本(可能丟失某些細節)
⚠️ 壓縮可能造成的問題:
- 之前的修改細節被遺忘
- 特定的程式碼片段被摘要掉
- AI 可能重複做已經做過的事
如何避免 Compaction 問題
1. 對話太長時開新 session
→ 有 CLAUDE.md 在,新 session 也不需要重新解釋
2. 重要的決定寫進 CLAUDE.md
→ 壓縮不影響 CLAUDE.md
3. 一個 session 做一個主題
→ 做完購物車 → 開新 session → 做結帳功能
SubAgent 多工原理
💡 比喻:老闆分配工作 你是老闆,你有三件事要做。 方法 A:你自己一件一件做 → 慢 方法 B:你找三個員工,每人做一件 → 快
SubAgent 就是方法 B。主 Agent(老闆)把工作分給 SubAgent(員工), 他們各自獨立完成,互不干擾。
SubAgent 的運作方式
主 Agent(你的對話)
├── SubAgent 1:修改 HomeController.cs
├── SubAgent 2:修改 ProductController.cs
└── SubAgent 3:修改 site.css
每個 SubAgent 有獨立的 context
→ 不會互相占用 Token
→ 可以並行處理,更快完成
適合用 SubAgent 的情境
✅ 適合:
- 不同檔案的獨立修改(各改各的,不互相影響)
- 平行建立多個功能(各自獨立的功能)
- 同時搜尋多個來源(各自搜尋不同地方)
❌ 不適合:
- 需要互相參考的修改(Controller 要看 Model 的改動)
- 有先後順序的工作(要先建 Model 才能建 Controller)
- 需要統一風格的修改(可能各自寫出不同風格)
如何觸發 SubAgent
你不需要手動觸發 SubAgent,只要在 Prompt 中描述多個獨立任務:
"請同時幫我做以下事情:
1. 在 Models/ 建立 Review.cs(Id, Content, Rating, ProductId)
2. 在 wwwroot/css/review.css 寫評價區的樣式
3. 在 Views/Shared/_Layout.cshtml 加上 review.css 的連結"
AI 會自動判斷這三件事可以並行,分配 SubAgent 處理。
實際範例:省 Token 寫法 vs 浪費 Token 寫法
情境:幫專案加上搜尋功能
❌ 浪費 Token 的對話(5 次往返):
你:"我想加搜尋功能"
AI:"搜尋什麼?"
你:"搜尋課程"
AI:"在哪個頁面?"
你:"課程列表頁"
AI:"用什麼方式搜尋?"
你:"標題關鍵字"
AI:[開始實作]
總計:5 次往返 × 每次載入 context = 大量 Token
✅ 省 Token 的對話(1 次往返):
你:"在 CourseController 的 Index action 加上搜尋功能,
接收 query 字串參數,
用 LIKE 搜尋 Course 的 Title 欄位,
搜尋框放在 Views/Course/Index.cshtml 頂部,
用 form GET 提交,保留搜尋結果"
AI:[直接實作完成]
總計:1 次往返 = 最少 Token
Token 節省對比
方式 預估 Token 消耗 花費時間
──────────────────────────────────────────────
浪費寫法(5 往返) ≈ 15,000 Token 10 分鐘
省 Token 寫法 ≈ 4,000 Token 2 分鐘
節省:73% Token + 80% 時間
🤔 常見錯誤
錯誤 1:對話太長不開新 Session
❌ 一個 session 做了 3 小時
→ context 爆滿 → 自動 compaction → 丟失細節
→ AI 開始忘記之前的修改 → 重複工作 → 更浪費 Token
✅ 一個功能做完就開新 session
→ 做完購物車 → /exit → claude → 做結帳功能
→ 有 CLAUDE.md 在,新 session 也能馬上進入狀態
錯誤 2:每次重複解釋專案背景
❌ 每次對話都打:
"我的專案用 .NET 8,有 HomeController..."
→ 重複了 100 次 = 浪費幾萬 Token
✅ 寫一次 CLAUDE.md:
以後每次對話自動載入(快取 ≈ 0 Token)
→ 一勞永逸
錯誤 3:不用 SubAgent 全部自己跑
❌ 一個一個指令:
"改 HomeController" → 等 5 分鐘
"改 ProductController" → 等 5 分鐘
"改 CSS" → 等 5 分鐘
→ 總共 15 分鐘
✅ 同時指派多個獨立任務:
"同時改 HomeController、ProductController、CSS"
→ AI 分 SubAgent 並行 → 5 分鐘搞定
→ 時間省 2/3,Token 也更少
本章重點整理
| 技巧 | 省 Token 幅度 | 難度 |
|---|---|---|
| CLAUDE.md 快取 | ★★★★★ | 簡單 |
| 精準 Prompt | ★★★★ | 中等 |
| 一次給完整需求 | ★★★★ | 簡單 |
| SubAgent 多工 | ★★★ | 中等 |
| Glob/Grep 搜尋 | ★★★ | 簡單 |
| bypassPermissions | ★★ | 簡單 |
| Hook 自動化 | ★★ | 中等 |