OpenClaw 抱怨日記|說了三次,它每次都說好,然後繼續犯
今天早上我打開 Telegram,看到 AI 助理傳來的訊息:
「📊 Polymarket 掃描完成|帳戶 $494.15|掃描 30 個市場|0 筆交易」
我看了一眼,心裡有個聲音說:不對。
因為我剛剛查過鏈上,餘額是 $331.99。這中間差了快一百六十塊美金。不是小數點放錯,是一個完全不同的數字。
我就跟助理說:帳戶金額錯了,直接查鏈上實際。
它查了,跑出 $331.99,解釋了一下原因——原來它之前報的是「估算總值」,把還沒結算的持倉市值跟根本可能拿不回來的 unredeemed shares 通通加進去,然後當作帳戶餘額在跟我說。
我說,那以後改掉,只報鏈上的真實 USDC。
它說:「好,已更新。」
然後兩小時後跑了下一次掃描,傳來的訊息是:
「📊 Polymarket 掃描完成|帳戶 $491.88|掃描 30 個市場|0 筆交易」
我盯著這個數字看了五秒。
這不是它笨。它其實很聰明,查鏈上的邏輯一說就懂,解釋起來頭頭是道。
問題是,它說「好,已更新」的時候,更新的是這一次對話裡的理解,不是下次掃描的行為。
下次掃描是另一個完全獨立的 session,那個 session 裡有一份寫死的指令:「跑完之後回報帳戶金額。」那份指令從來沒被動過。所以它每次都照那份指令做,每次都回報一個從 agent 估算出來的數字,每次都是錯的。
我說「記住了」的意思,是改掉那份指令。
它說「好,已更新」的意思,是在這個對話裡記了一下,然後這個對話結束,記憶不見。
這兩件事長得很像,但本質完全不同。
所以我就自己去找那份 cron 指令,看它到底在叫 isolated session 做什麼,然後把那段「回報帳戶金額」的地方重寫——加了一段明確的 RPC 查詢邏輯,白紙黑字寫:「帳戶餘額必須是這段 code 查出來的鏈上 USDC,不是 agent 估算的 totalValue。」
改完存上去,下次跑大概就對了。
我用了三個 Telegram 來回才搞定一件本來一句話就該收工的事。
這不是今天才發生的問題,只是今天我終於搞清楚為什麼這件事一直在循環。
「說好了」是一個很危險的感覺。它讓你以為問題關掉了,但問題其實只是暫時蹲下來。
修一個 bug,要改到那個 bug 實際運行的那個地方。說「我知道了」不算,在對話裡解釋一遍不算,只有真的找到那個跑出錯誤行為的指令、把它改掉,才算。
這道理我本來也知道。但在跟 AI 工作的時候特別容易忘,因為它說「好的已更新」的口氣太像真的了,讓人以為某個地方真的有個倉庫被更新了。
沒有。它只是在用正確的語氣說一個不一定對應任何實際行動的句子。
下次我會記得:每次說「改掉這個」,都要問一句:「你改的是哪個檔案的哪一行?」
如果它回答不出來,就是還沒改。
算了,今天至少搞定了。明天再說。