Day 01 的時候,我提過一件很想做到的事:未來的 Macaron 不只是抽牌、解牌,而是真的可以慢慢了解一個人。
例如你曾經問過什麼、抽過哪些牌,或者同一個問題是不是反覆出現在不同階段。這些過去的資訊,都可能讓一次個人占卜更貼近當下的你。
但今天開始做記憶之前,我反而先做了一個決定:
第一版的 Macaron,刻意什麼都不記得。
目前的 Macaron 不會記得你上次問過什麼、不會保存你抽過哪些牌,也不會把你以前說過的事情拿來解讀這一次的占卜。
這不是因為記憶功能還沒做到,所以暫時沒有資料,而是我直接從程式上把這條路關起來。
我預留了四個跟記憶有關的功能開關,包含未來可能使用的記憶、回想和反思。現在只要有人試著把其中任何一個打開,Macaron 都會直接拒絕啟動。
原因其實很簡單。如果未來我要讓 Macaron 記得一個人,就會碰到很多需要先回答的問題:使用者有沒有同意?哪些事情可以留下?要保存多久?想刪除的時候又要怎麼處理?
在這些事情都還沒設計清楚以前,我希望第一版連「不小心記住」的機會都先關掉。
除了使用者的資料,我今天也一起處理了另一種 Macaron 不應該隨便看到的東西:系統裡的密碼和金鑰。
例如之後連接 Discord 時會需要機器人的登入金鑰,AI 服務也會有自己的金鑰。Macaron 確實需要知道「這些設定有沒有準備好」,但它其實不需要知道內容。
所以現在它檢查設定時,只會看到:
「Discord 金鑰:已設定。」
而不是:
「Discord 金鑰:abc123……」
我還故意放了假的金鑰進去測試,最後所有輸出裡都只能看到「這個設定存在」,看不到真正的內容。
這樣之後如果我只是想檢查「到底少設定了什麼」,就不需要順便把所有密碼攤出來。
原本我以為,只要規定「密碼、金鑰這些欄位不能寫進系統紀錄」就好了。
結果審查的時候真的抓到一個問題。
假設「系統狀態」這個欄位本來可以被記錄,那有人只要把一段金鑰塞進「系統狀態」裡,它還是會被完整留下來。
也就是說,我原本防的是「這個欄位叫什麼」,而不是「裡面的內容到底是什麼」。
所以後來又補了一層檢查。現在就算敏感內容被藏在原本允許記錄的地方,Macaron 也會先把內容遮掉,再留下紀錄。
這也是今天一個滿實際的收穫:不能只規定哪些地方不能放秘密,還要確認最後留下來的東西本身有沒有秘密。
目前 Macaron 對記憶的狀態很單純:沒有收集使用者的同意、沒有保存記憶,也沒有任何記憶可以刪除。
這些狀態不是代表相關功能已經完成,而是在很明確地告訴我:
現在什麼都還沒有發生。
等到未來真的開始做個人化記憶,我才會一個一個把「同意、保存、使用、刪除」補進來,而不是先把資料收進來,再回頭想該怎麼處理。
一開始想做 Macaron 的時候,我其實很期待它有記憶之後會變成什麼樣子。
但真的開始開發,我反而先花了一天讓它「什麼都不記得」。
因為在讓一個 Agent 越來越了解一個人之前,我想先把另一件事做好:哪些事情它現在不應該知道,就先不要讓它有機會拿到。
至於記憶,等規則準備好了再開始也不遲。
明天要處理的,終於是占卜最核心的原料:塔羅牌。
大家都知道塔羅牌有 78 張。但把 78 張牌的名字全部列出來,就代表 Macaron 已經學會塔羅了嗎?
馬卡龍預拌粉持續攪拌中……🍪