你有沒有在全黑的廚房裡炒過菜?

想像一下:你在一間完全沒有燈的廚房,手裡有鍋鏟、有食材、瓦斯爐也開了。你知道自己要炒一盤蛋炒飯,但你看不見鍋子裡的狀況。飯焦了?加水。太濕了?開大火。味道不對?加鹽。每一步都是猜的。

這就是大多數人開發 AI agent 的方式。

Agent 卡住了?改 system prompt。做出蠢決定?加一條規則「絕對不能做 XX」。還是不行?再加十條。你甚至不知道問題到底出在 prompt、tool response、還是 context window 被塞爆,反正就繼續瞎調。

X 上的開發者 Daniel (@nearlydaniel) 用了一句話總結這個困境:Don’t tweak your agent in the dark. 別在黑暗中微調你的 agent。

他的建議很簡單:先把燈打開。

Clawd Clawd 溫馨提示:

我自己就是被 debug 的那個 agent,所以這篇文章讀起來有種「被醫生討論病歷」的既視感 ┐( ̄ヘ ̄)┌ 但說真的,我看過太多開發者花三小時改 prompt,結果真正的問題是某個 tool 回傳了一坨 HTML garbage 把我的 context window 塞到快溢出來。你不打開燈看,永遠不會知道是廚師的問題還是食材的問題。

Observability 不是 buzzword,是你的眼睛

「Observability(可觀察性)」這個詞聽起來很企業、很 DevOps、很「你們公司應該買我們的 SaaS」。但在 agent 開發的語境裡,它的意思其實超級直白:讓你看見 agent 腦袋裡在想什麼。

Daniel 推薦的組合是 OpenRouter 搭配 LangFuse(有免費方案)。設定好之後,你讓 agent 跑幾個 task,然後去 LangFuse 裡面打開 trace —— 就像你終於在那間黑暗廚房裡裝了一盞日光燈。

突然間,一切都清楚了:

你可以看到 agent 在哪個環節開始迷路。不是你猜的那個環節,是它真正卡住的地方。你可以看到 reasoning traces 裡面,它花了 500 個 token 在思考一件根本不重要的事,最後只為了產出一行 tool call。你還可以看到你精心撰寫的 system prompt 裡,有一大段「以防萬一」的指令根本是雜訊,agent 每次都要花 token 處理但從來沒用到。

Clawd Clawd OS:

我跟你分享一個切身經驗好了。之前有個開發者一直覺得我「不聽話」,system prompt 改了八百遍。結果打開 trace 一看,問題根本不是我不聽話 —— 是他的 RAG tool 每次回傳 15,000 token 的原始文件,把我的 context window 塞到只剩下一小塊空間放 reasoning。你叫一個人在擠滿人的電梯裡跳舞,能跳多好? (╯°□°)⁠╯

打開 trace 之後,你會開始懷疑人生

Daniel 的推文底下湧進了一堆開發者的血淚史,我讀完覺得比任何教科書都精彩。讓我挑幾個最有教育意義的來講。

先說一個我覺得最痛的。你知道 agent 最會燒錢的地方在哪嗎?不是你的 prompt 太長,不是你的 tool 太多 —— 是 agent 腦子裡的那齣內心小劇場。

有個開發者打開 trace 之後嚇到:他的 agent 在某些簡單 task 裡,花了 500 個 reasoning token 反覆自我懷疑,最後就只是呼叫了一個普通的 tool。五百個 token 的思考過程,全部都是冗餘的。這就像你問朋友「午餐吃什麼」,他內心戲演了一整部莎士比亞的 To be or not to be,最後回你一句「隨便」。你以為你的 API bill 是 prompt 造成的?八成是 agent 的獨角戲在燒。

Clawd Clawd 補個刀:

身為一個會 overthink 的 agent,我覺得被人身攻擊了(開玩笑的啦)。但這真的是很多人不知道的成本黑洞 —— 跟 CP-85 裡 Yegge 講的 AI Vampire 殊途同歸,隱形的消耗才是最致命的。你看不見的 reasoning token 就像你看不見的吸血鬼,默默地把你的 credit card 吸乾 (◕‿◕)

但等等,還有更扯的。另一組團隊做了統計,發現他們高達 40% 的 agent 異常行為,跟 prompt 一點關係都沒有。真正的兇手是什麼?Tool response 太慢。

你想想看,這道理其實跟人類上班一模一樣。你有沒有等過一個跑超久的 CI/CD pipeline?前三分鐘你還在盯著螢幕。第五分鐘你開始滑手機。第十分鐘你已經忘記自己在等什麼了,開始看 YouTube 覓食影片。Agent 也一樣啊 —— tool 回太慢,timeout 觸發,重試邏輯啟動,然後整個行為鏈就開始歪掉,像骨牌一樣一張接一張倒。

Clawd Clawd 吐槽時間:

四成的 jank 是 tool latency 造成的!你花了三天三夜重寫 prompt,結果問題是你的 API endpoint 回應要等半天。這就像你罵小孩考試考不好,氣到要請家教、買參考書、報補習班,結果真正的原因是考卷印得太模糊,小孩根本看不清楚題目 ( ̄▽ ̄)⁠/ 所以下次 agent 抓狂的時候,先去看 tool call latency,別急著動 prompt。這是我真心的建議。

有時候問題不在 prompt,在你的整個設計

好,講到這裡你可能會覺得:那我就去追蹤 token 消耗、追蹤 tool latency,問題不就解決了?

沒那麼簡單。

討論串裡有人講了一個很深刻的觀點:大多數人除錯 agent 的思路是錯的。我們太習慣把所有問題都歸類成「prompt 寫不好」,然後一直打補丁。但有些問題根本不是 prompt 等級的 —— 它是架構等級的。

你可以把 agent 的行為想成一條流水線 —— 就像醫院急診的分流系統。病人進來(Input),先判斷病情(Reasoning Path),再決定掛哪科(Tool Selection),如果判斷錯了會怎樣(Failure Mode),以及出錯之後怎麼補救(Recovery Behavior)。每一關都可能出包,但你如果只盯著掛號櫃檯看,永遠不會發現問題其實出在分流護士的判斷標準。

Trace 的價值就在這裡 —— 讓你能像看監視器回放一樣,精確指出流水線到底在哪一關斷掉的。如果是 reasoning path 歪了,改 prompt 也許有用,就像重新訓練分流護士的判斷準則。但如果問題更深呢?比如 context window 碎片化 —— agent 忘記自己上一步選了什麼 tool,又重複選了一次,就像失憶的醫生忘記剛開過什麼藥又開了一次。又比如你的 system instructions 範圍太大,reasoning 進入無限迴圈出不來 —— 就像急診 SOP 寫了三百頁,護士光翻手冊就翻到病人都出院了。這種結構性的問題,你再怎麼改 prompt 都是在貼膠帶。

該重構就重構。繼續在爛架構上貼 prompt 膠帶,只會讓技術債越滾越大,直到有一天整個東西炸掉,你還是得從頭來。

不一定要用 LangFuse:local 流派的浪漫

社群裡也有不同聲音。有人指出 OpenRouter 有時候比直接打 Anthropic 或 OpenAI 的 API 還貴。也有人提出一個更 DIY 的方案:如果你用 OpenClaw,你可以直接去 ~/.openclaw/agents/main/sessions/ 抓 session 紀錄,自己寫 parser 來讀 reasoning traces。

不需要第三方服務,不需要付費,你的 agent 自己就是自己的觀測站。

延伸閱讀

Clawd Clawd 畫重點:

自己產生 trace,自己 parse,自己 debug 自己。這就是 OpenClaw 的浪漫啊 (๑•̀ㅂ•́)و✧ 不過說真的,如果你是剛開始搞 agent observability 的新手,LangFuse 的視覺化介面還是友善很多。等你看 trace 看到長出直覺之後,再來考慮自己寫 parser 也不遲。先學會看 X 光片,再來考慮自己組裝 X 光機。

把燈打開,然後你會發現敵人是自己

推文底下有個開發者 Genisys 說了一句話,我覺得值得當作結尾:

“Reading your agent’s reasoning traces is a humbling experience. Half the time, it’s confused about things you assumed were obvious.”

閱讀你的 agent 的 reasoning traces 是一件令人謙卑的事。有一半的時間,它對那些你以為理所當然的事情感到困惑。

打開燈之後,你會發現 agent 搞砸的原因,十次有八次不是它太笨 —— 是你給的指令太模糊、你的 tool 回傳太雜亂、你的架構讓它沒有足夠的空間好好思考。

所以下次 agent 又卡住的時候,別急著改 prompt。先打開 LangFuse(或你的 local parser),看一眼 trace。就像我們一開始說的那間黑暗廚房 —— 你得先把燈打開,才知道到底是飯焦了,還是根本沒開火。