前言:
在把平台從概念推向可運作原型的過程中,今天我把焦點放在一個既技術又倫理的議題:AI 應該記得什麼、又應該忘記什麼?
這個問題不是學術討論,而是工程設計:記錄對話可以讓系統提供更連貫的體驗,但過度記憶可能侵犯隱私、形成不當依賴,或讓使用者感到不安。因此,Day 24 的任務是把「記憶的倫理」改寫成可執行的系統需求與開發計畫,而不是直接假設使用者已經在系統中輸入或作出選擇。
一、今天的目標:
定義「記憶層級」:哪些對話要長期保留、哪些只作短期暫存、哪些要允許使用者刪除。
設計資料模型與 API 規格(方便未來串接前端)。
規劃 UX 流程與提示文案(如何讓使用者理解記憶權限)。
撰寫測試計畫(單元測試 + 使用情境測試),確保資料刪除/保留功能可被驗證。
二、概念模型:
我先在筆記中畫出一個簡單的記憶層級圖:
這個分層不是哲學性口號,而是工程必需:它決定我們資料庫 schema、API endpoint 與前端按鈕要怎麼做。
三、資料庫與 API 草案:
我在 repo 裡新增一個 design/memory.md,同時寫下下面的示範 schema 與 API 規格。
資料庫 schema(MongoDB-like pseudo)
User {
_id,
username,
created_at,
settings: {
memory_default: "session" | "local" | "persistent",
anonymize_on_save: boolean
}
}
Conversation {
_id,
user_id,
session_id,
messages: [
{ role: "user"|"ai", text, timestamp, sentiment_score|null }
],
memory_level: "session"|"local"|"persistent",
anonymized: boolean,
created_at
}
API 路由草案(Express-like)
POST /api/conversation // 建立/append 會話 (默認 session)
body: { user_id, session_id, message }
POST /api/conversation/save // 使用者選擇儲存此會話到 persistent
body: { conversation_id, anonymize: true|false }
DELETE /api/conversation/:id // 刪除指定會話(硬刪 / 標記刪除)
GET /api/conversation?user_id=...&level=persistent // 取得長期記憶
我在 server/routes/memory.js 放入了偽程式碼供後端實作參考,並寫好單元測試模板(Mocha/Jest)。
四、前端 UX 草案(Canva 原型+文字):
因為目前你偏好用 Canva 做原型,我在 Canva 上設計了三個關鍵畫面(示意):
會話結束提示(Modal):問使用者「是否要保存今天的對話?」並同時提供「匿名化」勾選。文案示例:「是否將這段對話保存在你的哲學日誌?勾選「匿名化」將移除個人識別資訊。」
記憶管理頁(Settings):讓使用者設定預設記憶策略(session/local/persistent)與自動刪除天數。
忘記按鈕(Conversation View):每個會話旁有「忘記」按鈕,觸發確認與刪除流程。
這些原型我以點擊流程圖標示出來(Canva 的連結互動版),方便日後將介面對接到 React。重要的是,介面要透明、可控,讓使用者覺得「記憶是我的資產,不是系統的負擔」。
五、測試計畫:
我為此功能寫下三類測試場景:
我還在 design/privacy-compliance.md 中列出應考慮的條款(例如:明確告知使用者會話如何被儲存、是否會被用於訓練模型等),供日後放入「隱私政策」參考。
六、總結:
技術工作背後,仍然有哲學的疑問:記憶對自我有何意義?
我在筆記中寫道:有些記憶讓我們成長,有些則需要被放下。把「遺忘」當作功能設計,不僅是隱私需求,更是一種對於人類脆弱性的尊重。平台的任務不是囤積數據,而是協助人「回顧並選擇」——這本身就是一種倫理實踐。