Token 降本增效 · 8 / 13

Agent 四大成本陷阱與熔斷

上一節看到的還只是「一次成功的執行」。真實世界裡,Agent 的帳單事故來自四個方向:工具返回爆炸、思考稅、死迴圈、歷史雪球。每一個都有對應的工程解法。

工具截斷思考稅迴圈熔斷歷史壓縮
互動演示 · 挨個拆四個陷阱

陷阱一 · 工具返回值的資訊爆炸

使用者說「幫我查一下資料庫裡所有使用者的訂單」,Agent 調 SQL 工具返回 10,000 條記錄 ≈ 500,000 Token。這 50 萬 Token 會被塞進下一輪 Input:直接觸發高價區、甚至撐爆上下文視窗,模型還會因資訊過載而「迷失」,輸出品質反而下降。解法是給所有工具套一層截斷保護:

def safe_tool_call(tool_func, *args, max_tokens=2000, **kwargs): result = tool_func(*args, **kwargs) result_str = json.dumps(result, ensure_ascii=False) estimated = len(result_str) * 0.5 # 粗略估算 Token if estimated > max_tokens: # 保留前後各一段 + 中間標記,提示模型縮小範圍 truncated = result_str[:1000] + "\n...[已截斷]...\n" + result_str[-500:] return { "status": "truncated", "preview": truncated, "total_records": len(result), "message": f"返回結果過長(約{int(estimated)} Tokens),已截斷。" "如需完整資料,請縮小查詢範圍。" } return result
工具返回值資訊爆炸與截斷策略
10,000 條 SQL 記錄 ≈ 50 萬 Token:截斷保護是 Agent 工具層的標配。(圖:作者分享原稿)
陷阱二 · 思考 Token 的隱形帳單

Qwen-Plus 思考模式、DeepSeek-R1、o1 這類模型會生成「思考過程」:使用者可能看不到,但全部按 Output 計費,而且單價還翻 4 倍(Qwen-Plus 非思考輸出 2 元/M,思考模式 8 元/M)。同一個 Agent 任務開啟思考模式後:可見輸出不變(450 Token),思考過程 +2,000 Token,輸出費用暴漲 +2,078%

任務型別思考模式理由
簡單檢索❌ 關閉不需要深度推理
資料清洗❌ 關閉規則明確,不需要「想」
複雜推理✅ 開啟值得為準確率付費
程式碼生成⚠️ 視情況簡單函式關閉,複雜架構開啟

進階解法:用 0.6B 級的極小模型做前置分診,先花幾釐錢判斷這個請求需不需要深度思考,再決定路由到哪個模式——這就是第 3 節「T2 給 T0 打下手」的具體形態。

思考 Token 的隱形帳單
模型的「內心戲」全在燒錢,而且單價翻 4 倍:按任務分級開關思考模式。(圖:作者分享原稿)
陷阱三 · 死迴圈

Agent 修 Bug:修復 A → 報錯 B → 修復 B → 報錯 A(回到原點)→ …… 15 輪還在轉。每輪 Input 膨脹 1,000 Token 的話,20 輪下來成本漲 13 倍;更糟的是使用者等了 5 分鐘任務還沒完成。解法是強制熔斷,三個條件任一命中就優雅退出:

class AgentExecutor: def __init__(self, max_rounds=10, max_tokens=50000): ... def execute(self, task): while not task.is_complete(): self.round_count += 1 # 熔斷 1:輪次上限 if self.round_count > self.max_rounds: return self._graceful_exit("已達到最大執行輪次") # 熔斷 2:Token 預算 if self.total_input_tokens > self.max_tokens: return self._graceful_exit("已達到 Token 預算上限") # 熔斷 3:死迴圈檢測(連續 3 輪輸出相似度 > 90%) if self._detect_loop(): return self._graceful_exit("檢測到可能的死迴圈") result = self._run_one_round(task) self.total_input_tokens += result.input_tokens

優雅退出時要帶上 rounds_executedtokens_consumedpartial_result——半成品也比黑洞強。

Agent 死迴圈與三條熔斷策略
輪次上限、Token 預算、死迴圈檢測:三道保險絲確保任務不會無限等待。(圖:作者分享原稿)
陷阱四 · 歷史記錄的雪球效應

標準做法(錯誤)是每輪都把完整歷史塞進 Input。優化做法是固定左側 + 壓縮歷史 + 保留最近 N 輪:System Prompt 永不壓縮(保快取前綴),最近 3 輪保留完整細節,更早的歷史用小模型壓成一句摘要。

方案第 10 輪 Input說明
無限膨脹~50,000 Tokens包含全部歷史
滑動視窗(最近 5 輪)~12,000 Tokens丟失早期上下文
固定 + 摘要 + 最近 3 輪~6,000 Tokens既保關鍵資訊,又控制長度
綜合清單與三條紅線
控制點策略預期收益
工具返回值截斷 + 摘要,上限 2k Tokens防止單輪爆炸
歷史管理固定左側 + 壓縮舊歷史降低 50%+ Input
迴圈控制熔斷機制(輪次 / Token / 死迴圈檢測)防止無底洞
思考模式按任務分級開啟Output 成本降 4 倍
模型選擇簡單子任務用小模型降低單價
快取利用固定 System Prompt,命中 KV CacheInput 成本降 90%
紅線閾值建議後果應對
單輪 Input< 32k Tokens跳入高價區歷史壓縮 + 工具截斷
總輪次< 10 輪成本指數膨脹熔斷機制
I/O Ratio監控 > 50:1Agent 在「空轉」優化流程或降級任務
本節要點

給工具返回值設 2k 上限:截斷 + 摘要 + 提示縮小範圍,防止單輪 Input 爆炸。

思考模式按任務分級:看不見的內心戲也按 Output 計費,單價還翻 4 倍。

熔斷是 Agent 的保險絲:輪次、Token 預算、死迴圈檢測三選一命中就優雅退出。

歷史管理用「固定 + 摘要 + 最近 3 輪」,比粗暴滑動視窗省一半還不失憶。

內容來源:整理自作者團隊內部分享《AI Token 降本增效策略分享》「Agentic 應用的計費機制」。Agent 卡死與防呆的產品視角在動手實戰篇有專門章節,上下文壓縮另見Harness 核心 · 上下文溢位