AI Workflow · part 5
[Claude Code] 讓 Claude 自己幫你瘦身 — 打造 /slim 設定檔健檢 Skill
❯ cat --toc
- 白話版:讓 AI 自己做健康檢查
- 前言
- Part 1:問題 — 設定檔怎麼偷偷變胖的
- 每個 turn 都帶著跑的東西
- 我的實際數字
- Part 2:診斷 — 五種讓設定檔變胖的原因
- 1. 同一份東西寫了兩遍
- 2. MEMORY.md 塞了大段筆記
- 3. 規則檔裡面寫了操作手冊
- 4. 過期的東西還在
- 5. 查一下就好的東西被綁在每次都讀的檔案裡
- Part 3:做一個 /slim Skill
- 第一步:量
- 第二步:診斷
- 第三步:提案
- 第四步:執行
- Part 4:實際清完變怎樣
- MEMORY.md:12,337 → 3,941 bytes(砍 68%)
- CLAUDE.md:11,306 → 2,569 bytes(砍 77%)
- 讓 QMD 也能搜 memory 子檔案
- 帶走這些
- 最花時間的不是清理
- 五個診斷法,任何 Claude Code 設定都適用
- 一句話原則
- 結語
TL;DR
Claude Code 的設定檔會默默長大 — CLAUDE.md、MEMORY.md、rules 加起來可以悄悄吃掉每個 turn 10K+ tokens。我做了一個 /slim skill,讓 Claude 自己做健檢。一個指令,從 ~10,500 砍到 ~4,100 tokens — 降 61%,東西一個沒丟。
白話版:讓 AI 自己做健康檢查
你每傳一則訊息給 Claude Code,它不是只看你打的字。它還會把一整疊設定檔翻出來 — 你的 coding 規則、記憶筆記、工具清單。時間久了,這疊東西越來越厚,因為你一直加規則、存筆記、裝新工具。重點是:不管這次用不用得到,它每次都全部翻出來。
就像你出門背一個包。手電筒、急救包、地圖,一個一個往裡塞。結果包 20 公斤了,你只是去隔壁買杯咖啡。東西不用丟,但不需要全部扛著走 — 放家裡,要用再拿就好。
我做了一個 /slim 的 skill,讓 Claude 自己秤秤背包多重。哪些檔案太肥,哪些根本不用每次都帶,它會自己找出來、搬到需要時才查的地方。結果:東西全都還在,但每則訊息輕了 61%。
完整的 SKILL.md 可以直接拿去用:GitHub Gist
前言
上一篇講了 token 為什麼燒那麼快,給了 8 招應對。裡面最實用的一條:CLAUDE.md 只放重點,細節搬到別的檔案。
我照做了,撐了兩週。然後 MEMORY.md 又胖到 12,000 bytes — 因為我順手把操作筆記直接寫在裡面。CLAUDE.md 裡面有一大段流程教學,跟 SKILL.md 裡的一模一樣。背包又沉了。
靠意志力沒用。我需要一個自動化的體檢機制。
Part 1:問題 — 設定檔怎麼偷偷變胖的
每個 turn 都帶著跑的東西
Claude Code 每次收到你的訊息,都會把這些一起讀進去:
| 檔案 | 放什麼的 | 什麼時候讀 |
|---|---|---|
CLAUDE.md | 專案規則、coding 慣例 | 每次都讀 |
rules/*.md | 各主題的規則 | 每次都讀 |
MEMORY.md | 記憶索引 | 每次都讀 |
SKILL.md 不一樣 — 只有你叫它的時候才讀。這個差別很關鍵:一個是每次都收的稅,一個是用到才付的費。
麻煩的是沒有任何警告。MEMORY.md 從 2,000 偷偷長到 12,000,不會有人跟你說。CLAUDE.md 跟 SKILL.md 內容重複了,也不會有人提醒。你只會在某天覺得「怎麼 context 這麼快就滿了」的時候才回頭看。
我的實際數字
跑健檢之前,每個 turn 帶著的:
| 檔案 | Bytes | ~Tokens |
|---|---|---|
| CLAUDE.md | 11,306 | ~3,200 |
| 7 個 rules | 7,854 | ~2,300 |
| MEMORY.md | 12,337 | ~3,500 |
| 合計 | 31,497 | ~10,500 |
一萬出頭的固定開銷。200K 的 context window,你還沒開口就花掉 5%。就算開 1M context,每個 token 還是照收錢的(Opus input $15/MTok)。
Part 2:診斷 — 五種讓設定檔變胖的原因
我把設定檔全部翻過一遍,歸納出五個常見的問題:
1. 同一份東西寫了兩遍
CLAUDE.md 裡放了完整的 Core Loop 步驟(RETRIEVE → EXECUTE → RECORD),120 行。但 skills/yoshihiko-brain/SKILL.md 裡面一模一樣的東西已經有了,而且 skill 只在觸發的時候才會讀。
代價:每個 turn 多花 ~2,000 tokens,讀一份根本不需要每次都帶的副本。
2. MEMORY.md 塞了大段筆記
MEMORY.md 本來應該只是目錄 — 一行一筆,指向獨立的檔案。結果我的裡面長出五大段操作筆記:vLLM 啟動指令、Ollama 模型速度、PAL routing 規則、gateway 重啟步驟。每段 10 到 30 行。
代價:每個 turn 多花 ~3,000 tokens,帶著一堆可能一整週都用不到的東西。
3. 規則檔裡面寫了操作手冊
CLAUDE.md 該放的是規則 — 「input 一定要驗證」、「不要 mutate 物件」這種。不該放的是操作流程 — 「第一步跑這個、第二步看那個」。流程放 SKILL.md 就好,用到的時候才讀。
我的 Codex Code Review 段落有觸發條件、跳過條件、呼叫格式、workflow 流程圖,全塞在 CLAUDE.md 裡。很重要,但不需要每次對話都帶著。
4. 過期的東西還在
MEMORY.md 裡面有一整段 llama-server on GX10 的紀錄 — 三月就因為 SM121 crash 放棄的東西。這段話每個 turn 都會被讀到,但我永遠不會再用 llama-server 了。
5. 查一下就好的東西被綁在每次都讀的檔案裡
「openclaw gateway 怎麼重啟」、「GX10 vLLM 啟動指令」這種是查詢型的資訊。你需要的時候查一下就好,不需要每則訊息都背在身上。
解法:搬到 QMD(本地 markdown 搜尋引擎)索引的子檔案裡。Claude 要用的時候跑一下 qmd search "openclaw restart",30ms 就找到了。
Part 3:做一個 /slim Skill
Claude Code 的 skill 就是一個 markdown 檔案,放在 ~/.claude/skills/<名稱>/SKILL.md。你打 /slim,Claude 就照上面寫的流程跑。重點是 skill 只有觸發時才讀,平常不佔 context。
/slim 分四步:
第一步:量
把所有每 turn 都讀的檔案列出來,算大小,跟目標比:
| 檔案 | Bytes | ~Tokens | 目標 | 狀態 |
|------|-------|---------|------|------|
| CLAUDE.md | 11,306 | ~3,200 | <3,000 | ⚠️ 超標 |
| MEMORY.md | 12,337 | ~3,500 | <2,000 | ⚠️ 超標 |
我訂的標準:
- CLAUDE.md:3,000 tokens 以下(規則 + pointer,不放流程)
- MEMORY.md:2,000 tokens 以下(目錄而已,每筆一行)
- 單一 rules/*.md:500 tokens 以下
- 全部加起來:8,000 tokens 以下
第二步:診斷
超標的檔案,Claude 會標出是哪種問題、建議怎麼處理:
[MEMORY.md:94-104] 塞了大段筆記 — openclaw gateway 完整設定
→ 搬到子檔案,這裡只留一行連結
→ 省 ~300 tokens/turn
[CLAUDE.md:78-195] 重複 — Core Loop 在 SKILL.md 裡已經有了
→ 從 CLAUDE.md 刪掉
→ 省 ~2,000 tokens/turn
第三步:提案
按能省多少排序,列出來給你看。Claude 不會自己動手,等你說好才做。
第四步:執行
你點頭之後,Claude 會:
- 把大段落搬到獨立的子檔案
- MEMORY.md 原位換成一行 pointer
- 新檔案丟進 QMD 建索引(
qmd update && qmd embed) - 跑完報告前後對比
整個 SKILL.md 大概 80 行,邏輯不複雜 — 值錢的是那五個診斷模式,不是程式碼。
Part 4:實際清完變怎樣
MEMORY.md:12,337 → 3,941 bytes(砍 68%)
五段筆記搬出去變五個獨立檔案:
| 原本在 MEMORY.md 裡的 | → 搬去哪 | 搬了多少 |
|---|---|---|
| openclaw gateway 設定 | infra_openclaw_gateway.md | ~800 bytes |
| PAL MCP routing + 模型清單 | infra_pal_routing.md | ~3,200 bytes |
| yui agent 細節 | project_yui.md | ~600 bytes |
| GX10 vLLM 啟動設定 | 併進現有的 gx10-vllm.md | ~2,400 bytes |
| llama-server(已棄用) | 併進 gx10-vllm.md 當歷史 | ~800 bytes |
192 行的大雜燴 → 58 行的乾淨目錄。
CLAUDE.md:11,306 → 2,569 bytes(砍 77%)
| 拿掉的 | 搬去哪 | 為什麼拿 |
|---|---|---|
| Core Loop(120 行) | 本來就在 SKILL.md | 重複的 |
| Query Strategy Guide | 本來就在 SKILL.md | 重複的 |
| Recording Format | 本來就在 SKILL.md | 重複的 |
| PAL routing 完整版 | infra_pal_routing.md | 查的時候再讀 |
| Codex review 完整版 | 濃縮成 4 行摘要 | 規則留,流程走 |
| Integration Notes | 直接刪 | 留著也不影響行為 |
留下來的:5 行規則、12 列 collection map、PAL routing 4 行摘要、Codex review 3 行摘要。
讓 QMD 也能搜 memory 子檔案
搬出去的東西不只是換個資料夾放 — 我把整個 memory 目錄加進 QMD 的搜尋範圍:
qmd collection add ~/.claude/projects/-Users-coolthor/memory \
--name claude-memory --mask "**/*.md"
qmd embed
之後 Claude 要查什麼,直接搜:
qmd search "openclaw restart" -c claude-memory
# → infra_openclaw_gateway.md (93% match, 30ms)
一樣的資訊,不用每次帶著跑。要用的時候 30ms 搜到。
帶走這些
最花時間的不是清理
清理本身花 15 分鐘。真正虧的是之前根本不知道有問題 — 我帶著 10,500 tokens 的固定開銷跑了好幾週。/context 一直都在,我只是從來沒想過拿它來檢查設定檔。
五個診斷法,任何 Claude Code 設定都適用
- 找重複:CLAUDE.md 跟 SKILL.md 有一樣的內容?從 CLAUDE.md 刪
- 數行數:MEMORY.md 某一筆超過一行?那是筆記,不是目錄,搬出去
- 分規則和流程:「永遠驗證 input」是規則,「第一步跑 X、第二步跑 Y」是流程。流程放 skill
- 看日期:30 天前的東西還躺在每 turn 都讀的檔案裡?八成過時了
- 問自己:「這個真的需要每次都帶著嗎?」不需要的話,讓它可以被搜到就好
一句話原則
規則跟參考資料要分開放。規則短、永遠有用、改變行為。參考資料長、偶爾用到、回答問題。規則跟著每個 turn 走,參考資料放在搜得到的地方就好。
結語
之前:~10,500 tokens/turn(CLAUDE.md 3,200 + rules 2,300 + MEMORY.md 3,500)
之後:~4,100 tokens/turn (CLAUDE.md 730 + rules 2,300 + MEMORY.md 1,126)
省了:~6,400 tokens/turn (減 61%)
丟了:零 — 全部搬到搜得到的子檔案
/slim 就是我的定期健檢。下個月 MEMORY.md 因為新東西又胖了,跑一次就好。
想自己做一個的話:
- 先跑
/context看你的 token 都花在哪 - 建一個
~/.claude/skills/slim/SKILL.md(我的在這),定好 量 → 診斷 → 提案 → 執行 的流程 - 訂標準(我的:CLAUDE.md < 3,000、MEMORY.md < 2,000、總計 < 8,000)
- 每個月跑一次,或是覺得 context 變快用完的時候跑
省 token 最好的方法不是少寫字。是別把不需要每次都讀的東西,綁在每次都讀的檔案裡。
常見問題
- 怎麼看 CLAUDE.md 吃了多少 token?
- 在 Claude Code 裡跑 /context。它會列出 system prompt、tools、memory files、對話歷史各吃多少。你的 CLAUDE.md 和 rules 檔案在 'Memory files' 底下,有精確數字。
- CLAUDE.md 應該多大?
- 3,000 tokens 以下。它每個 turn 都會帶著跑,所以裡面放的東西是永久稅。規則和 pointer 放 CLAUDE.md,完整步驟放 SKILL.md — 那個只有觸發的時候才會讀。
- 怎麼減少 MEMORY.md 的 token 用量?
- 把它當目錄用,不要當筆記本。每一筆一行、150 字元以內、指向獨立檔案就好。大段落搬出去,原位只留一行連結。
- Claude Code 可以自己檢查設定嗎?
- 可以。做一個 skill(像 /slim),讓它讀所有會跟著每個 turn 跑的檔案、算 token、找膨脹,然後提出清理方案。你確認了它才動手。