記憶與知識庫使用說明
AI 員工會自己記住東西,也可以照你的吩咐把知識整理成頁面。這兩件事在儀表板的「記憶與知識」同一頁,但底層是兩套不同的系統,用法和時機都不一樣。這一頁把完整用法講清楚。
一句話分辨:
- 記憶:它自己記下來的。你不用開口,實質對話會自動萃取重點存進去。
- 知識庫:整份留下來的文件。你貼章程、SOP、規格書這類長期參考資料時,它會自動整理成一頁;你也可以直接說「記到知識庫」明確指定。知識庫就是 wiki,同一個東西。
一、兩者差在哪
Section titled “一、兩者差在哪”| 記憶 | 知識庫(wiki) | |
|---|---|---|
| 怎麼進去 | 自動累積,不用交代 | 貼章程/流程/規格這類文件時自動建檔;也可以明講「寫到知識庫」 |
| 存成什麼 | 一條一條的事實 | 一頁一頁的 Markdown 文件 |
| 分類方式 | 系統自動歸類主題 | 目錄(資料夾)+你給的頁面路徑 |
| 舊資訊怎麼辦 | 同一件事有新版本會自動接替,保留歷史;舊的那條來源更可信時,新說法改送審核 | 覆寫整頁;自動建檔的頁面會在頁尾留一行版本紀錄(見 2.4),手動寫入的頁面沒有 |
| 什麼時候被想起 | 三類自動帶入,其餘要它主動查 | L0/L1 每次自動帶入,L2/L3 要它主動搜尋 |
| 誰能看到 | 只有這位 AI 員工自己 | 個人知識庫只有自己;共享知識庫全公司可讀 |
| 適合放什麼 | 對話中冒出來的零散事實、偏好、決策 | 退貨規則、報價流程、產品規格這類要長期查閱的內容 |
挑選原則很簡單:要能查、要能改、要給別人看的,寫知識庫;其他讓它自己記就好。
二、知識庫怎麼用
Section titled “二、知識庫怎麼用”2.1 建立頁面:在對話裡直接講
Section titled “2.1 建立頁面:在對話裡直接講”不需要進儀表板編輯,也不需要記語法。在任何接通的頻道(LINE/Telegram/Discord/Slack/網頁對話)對 AI 員工說:
幫我把退貨規則記到知識庫:七天內未拆封可退,運費由買方負擔。今天查到的三篇論文重點整理成一頁放知識庫,標題叫「RAG 檢索方法比較」。它會建立一頁 Markdown,自動更新索引 _index.md,並在 _log.md 留一筆操作紀錄。
沒說「知識庫」會怎樣? 看內容。你貼的如果是章程、標準作業程序、規格書、政策辦法這類長期參考資料,它會自己判斷並建檔(見 2.4);一般對話、提問、當下的交代則只會以記憶的形式存在。判斷偏保守:它寧可漏建一頁讓你補一句,也不會把閒聊寫成文件。明講「記到知識庫」永遠有效,這條路沒有變。
2.2 分類:目錄由它自動選,你也可以指定
Section titled “2.2 分類:目錄由它自動選,你也可以指定”每個知識庫預設有四個目錄,AI 員工寫入時依內容自己挑:
| 目錄 | 放什麼 | 例子 |
|---|---|---|
entities/ |
人、公司、產品、客戶 | entities/wang-ming.md |
concepts/ |
領域概念、流程、原則 | concepts/return-policy.md |
sources/ |
原始資料的摘要 | sources/2026-07-30-rag-papers.md |
synthesis/ |
跨主題的分析、比較、趨勢 | synthesis/vendor-comparison.md |
想指定就直接說:「放在 concepts/ 底下,檔名叫 return-policy」。沒指定時它按上表歸類,檔名用 kebab-case。
2.3 層級:決定這頁「多常被想起」
Section titled “2.3 層級:決定這頁「多常被想起」”每一頁的 YAML frontmatter 有一個 layer 欄位,這是知識庫最關鍵的設定:
| 層級 | 值 | 行為 |
|---|---|---|
| L0 身分 | identity |
每次對話都自動帶入 |
| L1 核心 | core |
每次對話都自動帶入 |
| L2 情境 | context |
不自動帶入,搜尋才會用到 |
| L3 深層 | deep |
不自動帶入,搜尋才會用到(預設值) |
沒寫 layer 的頁面一律當 L3。所以一頁「寫進去了但它好像沒在用」的知識,多半就是停在 L3。要它每次都記得,在對話裡說「把這頁設成核心層」或「layer 設 core」。
同一頁還有 trust(0.0–1.0 信任分數),搜尋排序會依信任分數加權,人工審核過的內容排前面。
2.4 自動建檔:不用開口的那條路
Section titled “2.4 自動建檔:不用開口的那條路”貼一份文件進來、AI 回一句「好的我記下來了」,這種情況以前什麼都不會留下。現在它會先判斷這段文字是不是長期參考資料,是的話自動整理成一頁。
判斷依據(都符合才會建檔,門檻刻意設高):文件性名詞(章程、辦法、規範、SOP、規格書、手冊…)、條號或編號結構、足夠的長度、標題行。反過來,第一人稱偏好(「我喜歡…」)、時效性交代(「明天提醒我…」)、連續提問都會扣分,不會被當成文件。
自動建檔的頁面放在哪:你自己這位 AI 員工的知識庫,auto/ 底下依類型分五個資料夾:章程 auto/charter/、流程 auto/sop/、規格 auto/spec/、政策 auto/policy/、其他 auto/reference/。你手動整理的目錄(entities/、concepts/、sources/、synthesis/)自動建檔永遠不會碰。
自動頁跟你確認過的頁不一樣:
- 頁面開頭有一段提示,說明這頁是自動整理、未經人工確認。
- 內容逐字保留原文,不會被改寫(章程、合約這類文字失真的代價太高)。
- 不會自動帶入對話。自動頁停在 L2 情境層,AI 要主動搜尋才看得到。所以就算它判斷錯了,也不會污染每一次回答。
- 搜尋排序權重比人工頁低很多。
同一份文件貼第二次會更新同一頁,不會長出第二頁,頁尾的「版本紀錄」會多一行。
在哪裡管理:儀表板「記憶與知識 → 策展台 → 自動建檔」。每一頁可以:
| 動作 | 效果 |
|---|---|
| 檢視 | 看整頁內容與版本紀錄 |
| 確認為正式知識 | 這頁升級成你核可的內容,開始每次自動帶入對話 |
| 分享到共享知識庫 | 複製一份到共享區,其他 AI 員工也讀得到 |
| 移除 | 這頁從知識庫消失,收進封存區可還原 |
想整個關掉自動建檔:在該 AI 員工的知識庫目錄放一個 .scope.toml,宣告 [namespaces.auto] mode = "operator_only",之後就只有你手動寫得進去。
2.5 個人知識庫與共享知識庫
Section titled “2.5 個人知識庫與共享知識庫”- 個人知識庫:
~/.duduclaw/agents/<員工>/wiki/,只有這位 AI 員工讀得到。 - 共享知識庫:
~/.duduclaw/shared/wiki/,全公司的 AI 員工都讀得到。公司規章、共用 SOP、產品規格放這裡。
要寫到共享區就明說:「這條放共享知識庫,讓大家都看得到。」
個人版只有一個知識庫,儀表板上不會出現「個人/共享」的分頁切換。
三、什麼時候會取用知識庫
Section titled “三、什麼時候會取用知識庫”這是最容易誤會的一段。取用分兩種路徑:
自動帶入(L0 + L1):每次對話開始前,系統會把身分層和核心層的頁面依當前問題的相關度排序,在 6 KB 預算內塞進系統提示。同一個對話 session 內,選中的頁面會固定 15 分鐘不換,這樣才吃得到 prompt 快取。你什麼都不用做。
主動搜尋(L2 + L3):其餘頁面要 AI 員工自己判斷「這題該查知識庫」,呼叫搜尋工具找出來。搜尋是全文檢索,依信任分數與來源類型加權排序。
所以要不要主動提醒? 一般不用。L0/L1 的內容它每次都看得到;L2/L3 的內容,只要問題裡有關鍵字,它通常會自己去查。
有兩種情況值得補一句:
- 它答錯或答得含糊,而你確定知識庫裡有正確答案 → 說「查一下知識庫再回答」。
- 問題用詞和頁面用詞差很遠(例如頁面寫「退貨政策」,你問「東西不想要了怎麼辦」)→ 直接提頁面名稱最快。
四、記憶怎麼用
Section titled “四、記憶怎麼用”4.1 它會自動記什麼
Section titled “4.1 它會自動記什麼”| 來源 | 記什麼 | 儀表板分類 |
|---|---|---|
| 對話蒸餾 | 實質對話中的事實、決定、偏好 | 依內容歸到工作/客戶/偏好等 |
| 關鍵事實 | 跨對話重複出現的重點 | 觀察洞察分頁 |
| 學習訊號 | 預期與實際落差(它答得好不好) | 學習訊號 |
| 使用足跡 | 你的應用程式使用時長與活躍時段(需開啟) | 使用足跡 |
| 錯誤歸納 | 同類錯誤累積後歸納出的規則 | 規則與決策 |
不會記的:打招呼、「好」「收到」這類簡短確認、沒有實質內容的閒聊。系統有一層零成本的分類器先擋掉。
重複的也不會再記一次(v1.53 起):語意層的新寫入會先跟既有記憶比對相似度,內容幾乎一樣的會被擋下並記錄一筆遙測,避免同一件事累積成幾十條近似記憶稀釋檢索品質。既有記憶的正常更新(改口取代舊說法、再次確認)不受影響;你在儀表板手動整理的記憶也不經過這道閘。想關掉可在 config.toml 設 [memory] novelty_gate = false(預設開啟)。
4.2 什麼時候會被想起
Section titled “4.2 什麼時候會被想起”三段內容每次對話自動帶入系統提示:
- 關於你的關鍵事實(私人對話才帶,群組共用的 session 會擋掉,避免把個人資訊帶進公開場合)
- 過去犯過的錯(未解決的同類錯誤)
- 學到的規則(從錯誤歸納出來、通過驗證期的規則,最多三條。v1.53 起,只有附帶實際執行證據的錯誤紀錄才會參與歸納——AI 員工「自己說自己錯了」但查無對應工具紀錄的,不會被拿來產生規則)
其餘記憶要 AI 員工自己判斷需要並執行搜尋。檢索排序同時看相關度、重要性與「多久沒被想起」,常被回想的記憶會活得更久。
4.3 記憶會自己更新
Section titled “4.3 記憶會自己更新”同一個主題有新說法時,舊的那條會被標記為「已被取代」,新的接上去。展開任何一條記憶可以看到完整的取代鏈,也可以查「某個時間點當時的答案是什麼」。所以改口不需要先刪舊的,直接講新的就行。
例外(v1.67.1 起):聊天中的說法無法取代來源更可信的事實,例如你在儀表板核准過的內容,或用 migrate from 匯入的內容。新說法會先擱著,儀表板「收件匣」出現一筆審核項目,並排顯示目前內容與新說法。核准就用新說法取代舊的;拒絕就捨棄新說法。這類項目只能在儀表板決定,期限 24 小時。細節見記憶智慧。
4.4 刪除記憶
Section titled “4.4 刪除記憶”在記憶清單上把滑鼠移到任何一條,右邊會出現垃圾桶圖示,點兩下(第二下是確認)就刪掉。刪掉的記憶立刻從搜尋、瀏覽和對話帶入中消失。
底層是軟刪除:資料會移到封存表,管理者仍可從資料庫救回,超過保留期才真正清除。
4.5 忘記對話、排程執行或匯入檔案
Section titled “4.5 忘記對話、排程執行或匯入檔案”有人要求你讓 AI 員工忘掉他說過的話,或是某次排程執行、某次匯入把不該留的內容放進了記憶,就用這個流程。逐條刪除(4.4)只能刪掉你看得到的那幾條。這個流程會刪掉由同一個來源產生的所有記憶,包含從它衍生出來的,並阻止同一個來源再被學進去。下面的指令都在你自己的終端機執行,不能在員工的工作階段裡執行。
開始前:指令只認得來源紀錄功能裝上之後寫入的記憶。更早的記憶沒有來源紀錄,計畫會顯示它們的數量(沒有完整來源紀錄的記憶),但不會刪。這個數量也包含派工時 bus 訊息只帶了一半上游對話身分的記憶:它們仍記著這次派工是來源,但忘記上游那段對話時碰不到它們。
- 列出來源。
duduclaw memory forget-source list --agent sales-rep輸出每一段對話一行(一系列排程執行、一個匯入檔也各算一行):對話代號、方括號裡的來源種類(聊天訊息、員工自行存入=員工在一輪對話中自己存的、排程/派工執行、外部 MCP 用戶端、匯入、足跡)、帶著這個來源的記憶筆數,以及最近一筆的寫入時間。同一筆記憶在一行裡只算一次,就算它在這段對話裡有好幾個來源。要看某一段對話裡的各則訊息或各次執行:
duduclaw memory forget-source list --agent sales-rep --session <session>這時每一行是一則訊息或一次執行,行尾的 → --message <值> 就是要交給 --message 的值。員工在某一輪對話中自己存的記憶,會併在觸發那一輪的使用者訊息底下(含員工在這一輪自行存入的記憶),因為忘記那則訊息時會一起忘記;記錄裡對不到觸發訊息的回合,才會單獨列成一行 turn:。
--agent 是員工 id;MCP 用戶端使用的記憶命名空間則寫 external/<client> 或 internal/<client>。
- 建立計畫。 依你要忘記的東西挑一種:
| 要忘記什麼 | 指令 |
|---|---|
| 指定幾則訊息 | duduclaw memory forget-source plan --agent sales-rep --session <session> --message 812,815 |
| 整段對話(到現在為止) | duduclaw memory forget-source plan --agent sales-rep --session <session> |
| 一次排程或派工執行 | duduclaw memory forget-source plan --agent sales-rep --session <session> --message run:<key> |
| 一個匯入檔案 | duduclaw memory forget-source plan --agent sales-rep --session import:/path/to/file |
--message 填 list --session 箭頭後面的值:訊息序號(寫 812 或 m:812 都可以,指的是同一則),或 run:<key> 這類代號;turn:、call:、item:、day: 開頭的代號也照樣填。忘記一則使用者訊息時,同一輪的員工回覆也會一併忘記,因為回覆常常複述使用者的話;員工在那一輪自己存的東西也一樣,那一輪算同一個來源,之後只帶回合代號的寫入同樣會被擋。忘記整段對話時,涵蓋其中每一輪。--show-snippets 會在畫面上印出每筆記憶的前 60 個字(不會存起來)。--max-rows 與 --ttl-minutes 調整筆數上限(預設 50,000 筆)與計畫的有效時間(預設 30 分鐘,最長 1,440 分鐘)。
plan 不會刪任何東西。它記下計畫、送出核准請求,並印出計畫。請看這幾段(指令輸出是中文,下面引用的片語就是它的原文):
將刪除 N 筆記憶、N 筆關鍵事實、N 份封存副本、N 個自動建檔頁面:會刪什麼。每個目標那一行會顯示記憶編號、種類與層級,以及是怎麼被找到的:直接(這筆記憶本身就來自該來源)或衍生(它是從來自該來源的東西整理出來的)。同一輪的員工回覆也一併忘記與個回合也一併設為不再學到:同一輪的回覆,以及員工在那一輪自己存的東西,都屬於同一個來源。show與apply的預覽也會印出同樣的行。壓縮摘要:一段對話只有一份壓縮摘要,沒辦法只拿掉其中一則訊息或一次執行的部分,所以每份計畫都會清掉整段對話的摘要(排程執行就是整段cron:<員工>對話)。輸出會說明這件事。連帶影響:同時支撐某筆待刪記憶的其他來源。這些記憶會整筆刪除,所以另一個來源說過的話也會一起消失。只是被那個來源再次提到的記憶會保留(保留,僅移除佐證紀錄)。需要人工檢視:員工自己寫的 wiki 頁,記錄的來源命中。它們不會被刪,請你打開來決定。對話紀錄:員工之後不再看到的訊息數。原文仍留在對話紀錄裡。其他命名空間也記錄了同一段對話:給記錄了同一段對話的其他員工的現成plan指令。每一個都要各自建立計畫並核准。員工替這一輪接手工作時存的記憶,照這個指令也刪得到,就算第一份計畫已經套用過。套用時會設下 N 筆防止再學到的紀錄:套用會寫下幾筆封鎖紀錄。忘記一段很長的對話時,員工每一輪有存東西就各一筆,數字可能上千。不在範圍內:這個指令碰不到的東西。每次都要讀(見本節最後的清單)。
- 在儀表板核准。 管理員打開儀表板的待辦清單,核准計畫輸出裡指名的那筆請求。卡片只顯示數量與來源標籤,不顯示記憶內容,並註明這筆請求來自本機指令列。核准綁定這一份計畫,通道上的按鈕不能核准。
要在不套用的情況下查看進度:
duduclaw memory forget-source apply --plan <plan-id>不加 --confirm 時,這會再印一次計畫,外加一行 核准狀態:,說明核准是等待中、已通過還是已失效。
- 套用。
duduclaw memory forget-source apply --plan <plan-id> --confirm成功時會印出刪除了幾筆記憶、幾筆關鍵事實、幾份封存副本,接著是後續步驟的結果。後續步驟在記憶資料庫之外進行:刪除自動建檔的 wiki 頁、撤回審核卡、對員工隱藏被忘記的訊息,以及清除該對話的壓縮摘要。
- 後續步驟沒做完時。 結果是
DEGRADED(結束碼 3),代表記憶已刪除、封鎖紀錄已設好,但有些後續步驟失敗。執行:
duduclaw memory forget-source resume --plan <plan-id>運作中的 gateway 也會在開機時與之後每 10 分鐘重試未完成的步驟。沒有剩下要補跑的步驟時,resume 會直接說(沒有需要補跑的後續步驟)。
計畫過期或資料變了。 套用被拒絕,訊息是 計畫已過期,或說明計畫之後資料有變,就代表沒有刪除任何東西。因為過時而被拒時,訊息會把同時成立的原因都列出來:同一個命名空間又做過一次刪除、記憶有新增/消失/改變,以及計畫裡其他有變的部分(例如審核卡或對話紀錄)。不會改變套用內容的寫入,例如背景封存舊記憶、其他員工也記下同一段對話,不會讓計畫過時;套用結果會並列兩個參考數字(沒有完整來源紀錄的記憶 與其他命名空間的引用數)在計畫時與套用時的值。先暫停該員工,重新執行 plan,再取得新的核准。核准與計畫一起到期,所以過期的計畫一定要重新建立。
大計畫。 計畫超過 5,000 個目標時,apply 會鎖住記憶庫數秒,計畫輸出也會這樣提醒。套用前先暫停該員工。
這個流程不做的事。
- 它刪除由該來源衍生的記憶,並阻止系統再從同一個來源學習。它不會刪除對話原文(員工只是不再看到)、已送出的訊息、備份,或其他員工收到的內容。
- 內容仍可能經由這個指令碰不到的地方回到員工面前:每一輪都會放進提示的工具呼叫紀錄與錯誤筆記、任務看板與
/goal文字、工作狀態、Agent Mail、目標狀態與判官回饋、交接副本、員工之間轉交的回覆、其他種類的審核卡、使用者家目錄下 Claude CLI 自己的對話紀錄、每次回覆後寫下的強化學習軌跡檔(rl_trajectories.jsonl與rl_trajectories/目錄,裡面是整段對話原文,而且沒有能對應到要刪哪則訊息的編號)、共用 wiki 副本,以及員工自己寫的 wiki 頁。這些頁面不會被刪:功能裝上之後寫的頁面會列出來讓你檢視,更早的頁面沒有記錄來源,所以根本不會列出。透過 Gemini CLI runtime 存進去的記憶沒有綁到對話,碰不到;Grok 員工的記憶是否綁到對話,還沒有驗證。 - 一輪對話要能對到觸發它的使用者訊息,前提是員工在那一輪至少存過一筆記憶(只是重述既有記憶的寫入也算)。員工那一輪什麼都沒存,紀錄裡就沒有這個對應,忘記那則訊息時,之後只帶那一輪回合代號的寫入不會被擋;忘記整段對話時仍然涵蓋。
- 通道回覆先交給本機模型處理(
inference_mode = local)時,員工在那一步透過工具存的記憶沒有綁到對話,忘記對話時碰不到。 - 員工之後在新的對話裡重新得知同樣的內容,算新資訊,不會被擋。
- 用忘記之前的備份還原,被刪的記憶會回來,封鎖紀錄也會消失。用過這個功能之後,不要降回沒有這個功能的版本。
- 在
config.toml設[memory] forget_source = false會停止建立新計畫與套用。儀表板核准沒有開關,不會因此關閉。
五、該用哪個?
Section titled “五、該用哪個?”| 你想做的事 | 做法 |
|---|---|
| 讓它記住我喜歡簡短回覆 | 直接講,會自動進記憶 |
| 建立退貨政策讓它每次都照著回 | 寫知識庫,並設 layer: core |
| 整理今天查到的論文重點 | 寫知識庫,放 sources/ |
| 全公司 AI 員工都要遵守的規章 | 寫共享知識庫 |
| 修正它記錯的事 | 直接講新的,舊的會自動被取代;舊的來源更可信時,到儀表板收件匣核准審核項目 |
| 移除一條錯誤記憶 | 記憶頁滑鼠移過去點垃圾桶 |
| 讓它忘記整份知識 | 到知識庫刪除那一頁 |
| 有人要它忘記一段對話、一次排程執行或一個匯入檔案 | 依來源忘記,見 4.5 |
| 貼一份公司章程讓它以後查得到 | 直接貼,會自動建檔;在策展台確認為正式知識後每次都會帶入 |
| 移除一頁自動建檔的內容 | 策展台 → 自動建檔 → 移除 |
六、常見問題
Section titled “六、常見問題”Q:知識庫跟 wiki 是不同東西嗎? 同一個東西。介面上叫「知識庫」,底層檔案結構與 MCP 工具名稱沿用 wiki。
Q:要跟 AI 員工說「寫到知識庫」嗎? 貼章程、SOP、規格書這類文件時不用,它會自己建檔(見 2.4)。其他情況要說。判斷不確定時它偏向不建檔,所以想確保留下頁面,明講一句最快。
Q:知識庫可以分類嗎?還是它會自動分類? 兩者都成立。四個預設目錄由它依內容自動選,你也可以指定路徑。層級(L0–L3)預設是 L3,要調就明講。
Q:什麼狀況下會取用知識庫?要主動提醒嗎? L0/L1 每次自動帶入,L2/L3 靠它主動搜尋。一般不用提醒;答錯或用詞落差大時,說一句「查一下知識庫」最有效。
Q:記憶跟知識庫的內容重複了怎麼辦? 知識庫優先。系統帶入時會比對,已經出現在知識庫頁面裡的事實不會再從記憶重複帶一次。
Q:記憶會無限成長嗎? 不會。長期沒被回想、重要性低的記憶會逐步封存;被頻繁引用的會留下來。
templates/wiki/_schema.md— 知識庫頁面格式與 frontmatter 欄位完整定義docs/spec/soul-md-spec.md— SOUL.md 人格檔規格docs/guides/evals.md— 行為回歸測試(驗證記憶與知識庫是否真的影響了回答)docs/architecture/overview.md— 記憶引擎與檢索架構