我的聊天機器人剛開始好好的,用了幾週老用戶一進來就爆掉!
chatbot 剛上線時完美,幾週後老用戶一登入、聊個兩三句就整個報錯。你自己測都沒事。這不是隨機 bug——你缺的詞叫「對話歷史累積撞上限」。這頁講一個只有『真實用戶用久了』才會爆的隱形炸彈。
先說結論:你的機器人沒壞。它只是在等一個「用夠久的老用戶」來引爆。
這個坑最陰的地方在於——你永遠測不出來。
你剛做好機器人,自己開來聊個幾句,完美。上線,一開始的新用戶也都正常,你很滿意。
然後過了幾週,客訴進來了:某個從第一天就在用的老粉,說他一登入、聊個兩三句,機器人就報一個看不懂的錯,整個掛掉。你自己再開來測——一切正常。
你抓破頭:「同一支程式,為什麼只有他會爆?我怎麼複製不出來?」
因為引爆這顆炸彈的,不是「你做了什麼」,是時間。
你缺的詞 = 對話歷史(conversation history)累積撞上限 / .slice 截斷
為什麼「用越久越會爆」?(人話版)
大多數聊天機器人的做法,是每次都把完整的對話歷史一起送給 AI(這樣它才記得你們之前聊過什麼)。
問題來了:你通常會給這個「訊息清單」設一個長度上限。開發初期,你隨手設個「最多 50 則」——因為那時候你自己測,最多聊個十幾句,50 綽綽有餘。
但真實用戶不是這樣用的。一個老用戶累積幾週,對話歷史可能已經 200、300 則了。他一登入,程式把整段歷史載入——碰! 撞破那個 50 則的上限。
而且最靠北的是:他不是「聊到第 50 句」才爆,是一進來、載入舊歷史的當下就爆了。所以他感覺是「才聊兩句就壞」,其實那兩句背後拖著幾百句的歷史。
你自己測不出來,因為你的帳號沒有累積幾週的歷史。這是個「只有時間能養出來」的 bug。
正確做法:送出前,只留最近的 N 則
解法簡單又一石二鳥:在把歷史送給 AI 之前,先砍成「只留最近的 N 則」(例如最近 40 則)。
// 送出前,把歷史截斷成最近 40 則
const recentHistory = fullHistory.slice(-40);
// 然後只送 recentHistory,不送 fullHistory
這一刀下去,好處是雙份的:
- 永遠不會撞上限——不管用戶累積幾百則,送出去的永遠只有 40 則。
- 省錢——AI API 是按「送進去的量」(token)收費的。你每次送整段幾百則歷史,等於每句話都在燒錢;砍成 40 則,帳單直接瘦一大圈。
另外,把上限設寬一點(例如「最多 100 則」留安全邊際),別設得剛剛好卡在你的截斷值。
⚖️ 誠實說清楚:截斷歷史意味著 AI 會「忘記」很久以前聊的內容——如果你的應用需要它記得早期的事,就要另外做「摘要」(把舊對話濃縮成幾句重點再保留)。但對大多數聊天機器人,「記得最近 40 則」已經非常夠用。核心教訓是那句我最想你記住的話:做東西時要想像「幾週後真實使用」的樣子,不是只想「我現在測」的樣子。
你會搜錯的關鍵字 vs 該搜的正確詞彙
| 你崩潰時會打的(搜不到) | 該搜的正確詞彙 |
|---|---|
| 「聊天機器人用久了會壞」 | conversation history limit |
| 「老用戶一進來就報錯」 | message array max length |
| 「AI 聊天很花錢」 | token cost / history truncation / slice |
把右邊那欄丟進 Google、或直接貼給你的 AI。這就是我們在幹的事——把你崩潰時打出來的髒話,翻譯成能找到答案的詞。
🎁 直接貼給你的 ChatGPT / Claude
這一段免費。複製、貼上、送出——先讓你的 AI 動起來。
我做了一個聊天機器人,會把完整的對話歷史送給 AI API。剛開始都正常,但用了幾週後,某些老用戶一登入、聊沒幾句就報錯(顯示成看不懂的通用錯誤)。我自己測試都沒問題。 請告訴我: 1. 為什麼「用久了、對話變長」會突然爆掉?(我聽說跟訊息陣列的長度上限有關) 2. 為什麼是老用戶先中、我自己測不出來? 3. 正確做法是什麼?請解釋送出前把歷史「截斷成最近 N 則」(slice)為什麼同時能省錢(token)。
想更進一步?
上面免費的三層已經能讓你動起來。如果你想要「照著做不迷路」甚至「我們幫你跑好」——往下看。
- 免費 這個坑是什麼、誰會踩
- 免費 人話解釋:錯在哪、正確的詞彙
- 免費 一段可直接貼給 AI 的 prompt
完整實作文件
未來新增- 對話歷史管理的完整策略:截斷長度怎麼抓、要不要做摘要
- 「想像幾週後真實使用」的測試清單,讓你上線前就抓到這類炸彈
- token 成本與對話品質的平衡設定
可跑的 codebase / skill
未來新增- 現成的歷史截斷 + 上限設定範本,clone 下來套用就好
- ✅ 自動保留最近 N 則 ✅ token 省一半 ✅ 上限留安全邊際
本文首發於 AI 許願池(https://kaowan.pages.dev/articles/chatbot-breaks-after-weeks/),發佈日 2026年7月5日。 轉載請註明出處——原創者不怕考古,只有小偷怕。🕳️