TL;DR:AI 沒有記憶。每次回你話,它做的是把整段對話從頭重讀一遍,再接下去寫。問題是它一次能讀進去的量有上限,這個範圍叫 context window(上下文視窗)。對話太長,最舊的部分就被擠出去,它這一輪就真的沒讀到那段。你開頭交代的事會「失效」,多半是這樣來的。
這事你八成碰過。跟 AI 聊一個東西,開頭你交代清楚「全部用繁體中文、不要 emoji」,它前幾輪乖乖的;聊著聊著,十幾二十輪過去,又開始冒簡體、撒 emoji。或者更乾脆——昨天跟它討論到一半的事,今天開個新對話再問,它一臉茫然,好像那段話從沒發生過。
你會很自然地說「它怎麼又忘了」。但「忘記」這個詞有點誤導:要先「記得」過,才談得上忘,而它從來沒有記得過。
它每次都是從頭讀一遍
你跟它聊了半天,它腦袋裡沒存著「我們剛剛聊到哪」。
那它怎麼接得上話?因為每次輪到它回你,背後是把你們從開頭到現在的整段對話,原封不動再餵它讀一遍,從頭讀到尾,然後往下接一句。它讀完那一瞬間「知道」前面發生了什麼,但那不是記住,是剛剛又重看了一次。
打個比方。它比較像一個失憶、但讀很快的人。你每次去找他,都把你們從頭到現在的對話紀錄整本塞給他,他飛快翻完,抬頭回你一句。那一刻他是真懂了你們聊到哪;可他腦子裡什麼都沒留,全靠手上那本。你下次再來,又是重新塞一次。它每一輪實際在做的,就是讀完眼前這串、然後接下去寫最順的那個字。
那本紀錄,有塞不下的時候
問題來了:那本「對話紀錄」不能無限長。
它一次能讀進去的量是有上限的,這個上限就叫 context window,上下文視窗。算的單位是 token——也就是它眼裡的文字小塊,不完全等於一個字(這個我在 Token 是什麼 裡聊得比較細,草莓數 r 那篇也有個積木的比喻,這篇不看也不影響)。
現在這個視窗開得很大,一般閒聊很難塞爆。但只要你貼了一篇長文、或一路聊了很久很久,總量超過上限,系統就得動手砍——通常是把最舊的對話先丟掉(各家做法不太一樣,有的直接砍掉、有的先壓成一小段摘要再留著)。所以你也會不知道被丟掉哪一段。(想知道大概佔掉多少視窗,可以丟進Token 視覺化工具看一眼,它會直接拿 GPT、Claude、Gemini 的上限幫你比。)
所以你開頭交代的那些規矩,聊太長之後會慢慢「失效」,多半是那句話早就滑出視窗,不在對話的記憶裡。
那個「記憶」功能,是另一回事
ChatGPT 確實有個「記憶」功能,但那個跟我們在講的 context window 不是同一層的東西。
那個記憶(Memory)功能,比較像它幫你另外整理的一份小抄(OpenAI 官方有說明這功能)。你說過「我是寫程式的」「我習慣用繁中」,它記下來,之後每開新對話,偷偷把這些塞回去提醒自己。那是跨對話、長期留著的東西,而且是濃縮過的重點,不是你們每一句話的逐字稿。
context window 則是「這一次,它眼前能看多少」。你新開一個對話它忘得一乾二淨,就因為這一次的對話紀錄是空白的——那份小抄也許還在,但它頂多是幾條濃縮的重點,沒有你們昨天那整段對話的細節。
知道這件事之後,可以怎麼用
想通它沒記憶、全靠重讀,有些原本很煩的狀況就順了。
要它記住某個關鍵設定,最土也最有效的辦法就是「再貼一次」。重要的規矩,過一陣子重申一遍;開新對話時,把前情提要濃縮成幾句帶上去(像開頭先丟一句「承上次:我在寫一封婉拒信,語氣要客氣但堅定,全程用繁中」,把關鍵設定一次交代清楚)。你得再複述一次,好讓那段話這一輪真的出現在它面前——出現了,它就讀得到。
還有一招:一個對話聊到又臭又長、前後打架的時候,與其在裡面跟它盧,不如乾脆開個乾淨的新對話,把目前的結論濃縮成幾句貼進去重來。新的一頁、乾淨的視窗,往往比硬聊下去清爽得多。
至於它另外那些怪,比方同一個問題每次答案都不一樣,那是別的機制,跟記不記得無關,這篇就先不岔過去了。
這件「每一輪都重讀一遍」還有個有趣的副作用:就算你只回它一句「謝謝」,它還是得把整本對話從頭讀過、再回你一句。我算過這一聲謝謝的成本,便宜得很,不過「便宜」跟「免費」是兩回事。
每接一句話,它都是把眼前那本對話重讀一遍,再往下接。但各家 AI 發展很快,也許這篇很快就會過時了,但就跟大家分享~
English version: Why Does AI Forget What You Said Earlier?

