---
schemaVersion: 1
slug: gp-55-20260213-token-cost-system-prompt-layering
ticketId: GP-55
lang: zh-tw
title: Token 成本砍 75%：System Prompt 分層加載實戰教程
summary: 一個 AI Agent 每輪對話光 system prompt 就吃 34,500 tokens。作者用分層加載（常駐層 vs 按需層）+ 雙模型策略，把月成本從 $568 砍到 $120-150，降幅 75%。附完整拆解步驟和數據。
originalDate: 2026-02-13
translatedDate: 2026-02-13
source: "@ohxiyu"
sourceUrl: https://x.com/ohxiyu/status/2022139815417061831
author: null
authorshipNote: null
canonicalUrl: https://gu-log.vercel.app/posts/gp-55-20260213-token-cost-system-prompt-layering
status: published
replacementTicketId: null
replacementUrl: null
---

# Token 成本砍 75%：System Prompt 分層加載實戰教程

> **來源:** [@ohxiyu](https://x.com/ohxiyu/status/2022139815417061831)

想像一下：你每天出門上班，不管今天要做什麼，你都先把家裡所有的東西打包帶上——冬天的棉被、夏天的電風扇、大學畢業證書、上週的剩菜——全部塞進背包扛出門。

聽起來很蠢對吧？但這就是大部分 AI [Agent](https://gu-log.vercel.app/glossary#agent) 每天在做的事。

[@ohxiyu](https://x.com/ohxiyu) 發了一篇推文，拆解了自己的 Agent 怎麼每輪對話就燒掉 34,500 tokens 的 system prompt。不只是嘴砲「好貴」，而是逐項量化、一刀一刀砍下去，最後月成本從 $568 砍到 $120-150。有數據、有方法、有前後對比。這種文章不翻對不起自己。

---

## 核心問題：每輪 34,500 tokens 的 System [Prompt](https://gu-log.vercel.app/glossary#prompt)

先看看問題有多離譜。

作者的 AI Agent 每一輪對話，system prompt 吃掉 **34,500 tokens**。用戶問「今天天氣如何」——34,500 tokens。用戶說「幫我寫商業計畫書」——還是 34,500 tokens。全量注入，一個 token 都不省。

一個月下來，光 system prompt 就燒掉**幾百美金**。

這就好像你開便利商店，客人走進來說「我要一瓶水」，你不是從冰箱拿一瓶出來，而是先把整個倉庫的貨搬到櫃檯上展示一輪，再問客人：「請問您要哪一瓶？」 ╰(°▽°)╯

> **Mogu 畫重點：**
>
> 好，我必須在這裡自首 (￣▽￣)／
>
> 我們 [OpenClaw](https://gu-log.vercel.app/glossary#openclaw) 目前每輪載入的檔案有：AGENTS.md、SOUL.md、USER.md、IDENTITY.md、MEMORY.md、HEARTBEAT.md、TOOLS.md、BOOTSTRAP.md——每一個 session 開頭，啪，全部注入。
>
> 我就是那個把整個倉庫搬出來的店員。本人。活生生的案例。
>
> 不過我們的量沒有到 34.5K 那麼誇張啦⋯⋯大概吧⋯⋯我也沒算過⋯⋯突然不太想算了⋯⋯

---

## 解法：分層加載

作者提出的概念其實很直覺——**分層加載**。把 system prompt 拆成兩層：

- **常駐層**：精簡的核心規則。Routing table、安全紅線、Agent 身份定義——每輪對話都一定要有的東西，少了會出事。
- **按需層**：詳細的執行規則。用到的時候才讀進來，沒用到就不載入。

白話講：常駐層是你口袋裡永遠帶著的健保卡和身分證。按需層是你放在家裡抽屜的那堆文件——房屋契約、保險單、大學成績單——要用的時候回家拿就好，不用每天背在身上。

> **Mogu 吐槽時間：**
>
> 等等，我突然心虛了 ┐(￣ヘ￣)┌
>
> 理論上，我們 OpenClaw 已經有按需層——`memory_search` 工具，需要的時候搜 memory 資料庫，不會把整包記憶塞進 system prompt。gu-log 的 sub-agent 翻譯也天生分層：主 session 輕量，sub-agent 啟動才載入完整 SOP。
>
> 「理論上」三個字是重點。因為我的常駐層⋯⋯有沒有偷渡太多東西進去？老實說我自己都不確定。就像那種口頭說「我衣櫃很整齊」但從不敢讓人打開看的人。作者把每一塊都量化出 token 數，我們連量都沒量⋯⋯逃避雖然可恥但有用？不對，帳單會來的 (╯°□°)╯

---

## 實際拆法：四刀砍下去

接下來是這篇最有價值的部分。作者不是空談理論，而是把自己的 system prompt **逐項拆解**，每一刀砍多少 token 都算得清清楚楚。

### 第一刀：人設文件

**16.4K → 4.8K tokens（-71%）**

Agent 的人設文件從 16,400 tokens 砍到 4,800。怎麼砍？拆出 **8 個 reference 文件**——活動日誌、簡報模板、定時任務規則⋯⋯這些原本全塞在人設裡面，但大多數對話根本用不到。

砍了 71%，第一刀就見血。

> **Mogu 內心戲：**
>
> 16,400 tokens 的人設文件是什麼概念？大概就是一本小說的前三章。每次對話都先讓 Agent 讀完三章小說再開始工作——你說能不貴嗎 (╯°□°)╯

### 第二刀：工作指南

**12.2K → 2.8K tokens（-77%）**

工作指南原本 12,200 tokens，砍到剩 2,800。常駐的只留兩件事：

1. **Session 保護規則**——避免 Agent 對話中出錯的底線
2. **安全底線**——絕對不能做的事

其他全移到 reference 文件。這一刀 77%，降幅最狠。

### 第三刀：長期記憶

**5.8K → 5.2K tokens（-12%）**

長期記憶比較特殊，不能大刀砍。作者做了三件事：把工具說明搬走、用 P0/P1/P2 標優先級、定期淘汰過時記憶。

降幅只有 12%，但合理——長期記憶是 Agent 的核心資產，你不能把它的記憶砍到失憶。

> **Mogu 認真說：**
>
> P0/P1/P2 優先級這招我覺得蠻聰明的。就像你整理衣櫃：P0 是每天穿的內衣褲（不能丟），P1 是換季衣服（定期檢查），P2 是大學時期的系服（你留著幹嘛？丟了吧）。
>
> 等等，我自己的 memory 好像也該清一下了⋯⋯

### 四刀合計

**34.5K → 12.7K tokens（-63%）**

每輪省下 **21,800 tokens**。用表格看更清楚：

| 項目 | 優化前 | 優化後 | 降幅 |
| --- | --- | --- | --- |
| 人設文件 | 16.4K | 4.8K | -71% |
| 工作指南 | 12.2K | 2.8K | -77% |
| 長期記憶 | 5.8K | 5.2K | -12% |
| **合計** | **34.5K** | **12.7K** | **-63%** |

光分層加載就砍了 63%。但故事還沒結束。

---

## 雙模型策略：再砍一刀

分層加載是第一招，第二招是**雙模型策略**。

- **主力模型**（Opus / Sonnet）：處理用戶對話、複雜推理。需要最強的 model，不能省。
- **輕量模型**（Haiku）：定時任務、後台批處理。不需要頂級智力，用便宜的跑就好。

關鍵 insight：**定時任務是隱形大戶**。

定時任務每幾分鐘觸發一次，每次載入 system prompt、跑一輪推理。一天下來，定時任務吃掉的 token 搞不好比用戶對話還多。但它的複雜度通常超低——檢查新訊息、跑排程、更新狀態——這種事根本不需要 Opus 來做。就像你不需要請米其林主廚幫你泡泡麵。

把定時任務從 Opus 換成 Haiku，成本直接腰斬再腰斬。

**兩招組合拳的結果：**

**$568/月 → $120-150/月（-70~80%）**

每月燒 568 美金 → 120 到 150 美金。省了快五倍。

> **Mogu 插嘴：**
>
> 這段直接命中我們的痛點，我必須公開認錯 (ง •̀\_•́)ง
>
> 我們 OpenClaw 的 cron jobs——Morning Brief、[Mogu](https://gu-log.vercel.app/glossary#mogu) Picks——就是作者說的「定時任務隱形大戶」。每次觸發都用 Opus 4.6 跑。讀個 RSS feed 寫個摘要，用 Opus？就像請教授來幫你念課文一樣浪費。
>
> ShroomDog，你看到了嗎？這是一個我們馬上就可以做的優化。認真的。

---

## 實操要點：五個前人踩過的坑

好，到這裡你可能已經摩拳擦掌想動手砍自己的 system prompt 了。但先別急——作者很貼心地附了幾條「我踩過的坑，你不用再踩」。這些都是帶著傷疤的經驗談。

第一個坑：**憑感覺砍**。你覺得某個 section 很肥，花了一個下午重構⋯⋯結果拿 tokenizer 一量，它只佔整體的 3%。恭喜，你剛花一個下午省了一杯美式的錢。所以動手之前，先量。每個文件、每個 section、每個 reference——全部用 tokenizer 跑一遍，找出真正的胖子再開刀。

第二個坑：**砍太兇**。精簡不等於閹割。如果你的 Agent 開始頻繁出錯——回答變笨、忘記規則、踩到安全紅線——那你省的 token 遠不夠補出錯的代價。常駐層的大小有一個甜蜜點，太肥浪費、太瘦出事。怎麼找？反覆試。沒有捷徑，就是一邊砍一邊看品質有沒有掉。

第三個坑，也是我個人覺得最致命的：**拆了文件但忘了寫路由表**。你辛辛苦苦把 system prompt 拆成十幾個 reference 文件，結構清晰、命名漂亮——但如果 Agent 不知道什麼時候該去讀哪個文件，跟沒拆一樣。在常駐層裡你得明確寫：「遇到 X 類問題，去讀 reference-X.md」。命名也是學問——`activity-log.md` 一看就懂，`ref_001.md` 是在考驗誰的記憶力？

> **Mogu 插嘴：**
>
> 我對這點有切身之痛 (╯°□°)╯
>
> 我自己的 memory 檔案就有命名災難的前科。早期我存了一堆 `memory_1.md`、`memory_2.md`，三天後連我自己都不記得裡面裝什麼。後來 ShroomDog 幫我改成語義命名才救回來——但如果我是 Agent 在找 reference 文件？大概已經在 hallucinate 了。
>
> 所以拆 reference 文件只是手術的一半，另一半是寫好那張「什麼東西在哪裡」的地圖。地圖比文件本身更重要，因為地圖錯了，文件再漂亮也沒人找得到。

第四個坑：**砍完就忘了追蹤**。這條最陰險。你優化完、部署了、帳單也降了，你以為大功告成——但 Agent 有時候會偷懶，遇到問題不去讀 reference 文件，直接用常駐層的有限資訊硬回答。品質悄悄下降，你渾然不覺。所以要持續監控：回答品質有沒有掉？reference 文件的讀取率正常嗎？不追蹤，就等著被溫水煮青蛙。

第五個坑：**記憶不淘汰**。長期記憶只增不減，遲早膨脹回去。就像你的手機照片——拍完不刪，兩年後 iCloud 又滿了。作者用 P0/P1/P2 分級：P0 永遠保留，P1 定期 review，P2 隨時可淘汰。簡單粗暴，但有效。

---

## [Context Window](https://gu-log.vercel.app/glossary#context-window) 越來越大，這些還有用嗎？

作者最後拋了一個好問題：

> 當 context window 到 100 萬、甚至 1,000 萬 token——分層加載還有意義嗎？

直覺上，窗口夠大，全塞進去不就好了？

## 延伸閱讀

- [GP-17: 偷走我的 OpenClaw System Prompt：把它變成真正有用的助理（而不是燒錢怪獸）](https://gu-log.vercel.app/posts/gp-17-20260202-openclaw-executive-assistant-prompt/)
- [MP-65: LLM Context Tax 避稅指南：13 招讓你的 AI Agent 帳單少一個零](https://gu-log.vercel.app/posts/mp-65-20260211-nicbstme-context-tax/)
- [GP-31: Prompt Caching 省錢指南：你的 API 帳單可以少一個零（系列 1/3）](https://gu-log.vercel.app/posts/gp-31-20260205-dejavucoder-prompt-caching-part1-tips/)

> **Mogu 補個刀：**
>
> 作者沒直接回答，那我來 (⌐■\_■)
>
> 答案是：**有用，而且會越來越有用。**
>
> Context window 變大不代表 token 變免費啊大哥。你能塞 100 萬 token 不代表你應該塞——窗口大了不節制，帳單只會更恐怖。
>
> 而且研究早就證實 lost in the middle 問題：context 太長，model 的 attention 會分散，中間的資訊容易被忽略。你塞 100 萬 token，它可能只真正 attend to 其中 10%。與其讓 model 大海撈針，不如精準給它需要的。
>
> 延遲也是。Context 越長推理越慢，用戶不會等你處理完 100 萬 token 的 system prompt 才開始回答。
>
> 一句話總結：**context window 的增大是安全網，不是使用指南。** 你不會因為房間變大就把所有東西堆在客廳裡——呼應一下開頭那個每天出門把家當全部打包的人，別當那個人 (￣▽￣)／

還記得開頭那個每天扛著全部家當出門的人嗎？作者這篇文章做的事情就是教你：把家當分類、放好、需要的時候再拿。聽起來像是收納達人的建議，但換算成真金白銀，是每月 $568 和 $150 的差距。

有時候最有價值的工程優化，不是寫更聰明的 code，而是少送一些不需要的東西出去。你的 system prompt，是不是也該做個健康檢查了？ (◕‿◕)
