前言¶
DeepSeek Harness(DSH)會在對話佔用上下文達到閾值時壓縮舊對話,被壓縮的原文會被丟棄,無法再查回。如果只是想保留關鍵片段,可以手動摘抄,但完整會話的上下文一旦被壓縮就再也找不回來。
記憶迴廊插件在 DSH 壓縮之前,先把會話按輪次歸檔到當前工作區的 memory-palace/ 目錄,按類別分成多個文件,供後續會話按需檢索。它不會改寫或截斷原文,只負責把一輪輪對話落盤,成爲工作區本地的一份長期記憶。
核心功能¶
把會話原文按「一輪對話」爲單位,分類歸檔到當前工作區的 memory-palace/ 目錄。目的是在 DSH 自動壓縮之前,先把較早的完整原文落到磁盤,壓縮後還能查回原話。
歸檔前會檢查兩個條件:
- 壓力門:上下文佔用 ≥ triggerPressure(默認 60%)× 窗口
- 批量門:可歸檔輪數 ≥ minBatchTurns(默認 10),或者可歸檔文本量 ≥ 無需歸檔量 × batchByteFraction(默認 50%)
只有兩個條件都滿足時,插件纔會注入歸檔提示。
歸檔時,模型逐輪決定每輪屬於哪個類別,用 segments 提交:[{category, fromTurn, toTurn}, …]。同一類別可以拆成多段,最後合併成一個文件;每個 turn 只能歸一類,區間不許重疊。
歸檔後,插件會按年月組織文件,每個類別在當月的目錄下生成一個文件(超 maxFileBytes 才分卷)。同一類別的所有輪次進同目錄下的一個文件,不同類別 = 不同文件。
安裝與啓用¶
在 DSH 插件目錄下執行:
dsh plugin add github:dafantong01/dsh-memory-palace
安裝後,在會話頁的「記憶迴廊」頁籤裏打開開關。頁籤會顯示當前會話的歸檔狀態和配置項,包括開關、記憶命名、觸發閾值、檢查頻率、單文件上限等。
配置項¶
插件在全局和會話級都支持配置,會話配置優先級高於全局默認。
| 項 | 默認 | 說明 |
|---|---|---|
enabled |
true | 全局總閘 |
triggerPressure |
0.6 | 壓力門:歷史估算 ÷ 窗口 |
retainFraction |
0.12 | 無需歸檔比例,佔窗口比例(0.02–0.5,建議 < 16%) |
batchByteFraction |
0.5 | 批量門兜底:可歸檔量達到無需歸檔量的該比例即放行 |
minBatchTurns |
10 | 批量門:可歸檔輪數 |
checkEveryTurns |
5 | 每幾輪檢查一次 |
maxFileBytes |
5000000 | 單文件上限(十進制 MB,5,000,000 = 5.0 MB),超出按輪分卷 |
selfNameSlug |
assistant | 文件名前綴(與「記憶命名」無關) |
rootDirName |
memory-palace | 根目錄名 |
includeReasoning |
true | 歸檔是否收錄思考原文 |
compactAfterArchive |
false | 歸檔後是否觸發壓縮(默認關) |
enableSteer |
true | 是否注入歸檔提醒 |
injectNotice |
true | 是否注入提示 |
recallStrength |
low | 回憶強度:off / low / medium / high / forced |
searchTurnLimit |
12 | palace_search 按輪聚合時默認返回多少輪(1–30 整數) |
工具¶
插件提供了幾個工具,用於歸檔、查看和檢索記憶。
palace_archive¶
歸檔輪次。未命名會話會拒絕。用 segments 逐段給類別:[{category, fromTurn, toTurn}, …];並用 summaries=[{category, text}, …] 給每個類別寫一段只概述該類別本次輪次的話(逐段追加到當月 _summary.md)。單類別時可用 summary 代替。可傳 selfName 作文件名前綴。
palace_turns¶
列出輪次清單:turn 號 + 發言者 + 開頭 70 字,用於歸檔前確認每輪內容。turn 是日誌事件序號(含系統指令/插件 steer/純工具輪),不要用「第幾條消息」換算。
palace_summary¶
讀月度摘要。不指定 month 時列出最近幾個月(摘要末尾預覽 + 歸檔文件數);month=YYYY-MM 返回該月摘要全文;category 只看該月某類段落;append + fromTurn/toTurn 可給還沒歸檔的近況補寫一段摘要。
palace_search¶
檢索歸檔。默認只查本會話;namespace 查別的會話、all:true 掃全部命名空間(結果標來源)、category 只查某類。keyword 支持空格分隔的多關鍵詞(AND,引號包短語)。默認按輪聚合(每輪一條代表命中 + 該輪命中數),limitTurns 控制輪數(默認取 searchTurnLimit=12);groupByTurn=false 回原始命中行(舊 limit 語義)。片段約 220 字符,總輸出上限 8K,文件讀失敗會跳過並註明。只搜歸檔正文,不搜 _summary.md(摘要裏的概述性說法要用 palace_summary 讀);但原文 0 命中時會自動回查摘要並標註「摘要不是輪次」,可用 includeSummary:true 強制追加。
palace_read¶
讀歸檔。fromTurn/toTurn 返完整原文;path 可省略(按輪次自動找文件),也接受 search 的「文件夾/…」路徑;可傳 namespace。末尾附一行回鏈(提取 turn 引用/文件名/工具名,自動提取僅供參考)。
palace_config¶
查看/修改本會話配置(get 會同時返回 effective / 工作區默認 / 本會話配置)。
檢索四步法¶
爲節省 token,插件提供了四步檢索法:
- 不知道在哪個月:
palace_summary(limit=6)→ 每月摘要末尾預覽;找到大致年月 - 指定月份:
palace_summary(month="2026-10")→ 該月全部摘要段落(哪次歸檔、講了什麼) - 搜索關鍵詞:
palace_search(keyword="事故教訓", limit=3)→ 約 1 千字符:命中位置 + 輪次 + 行號 + 文件路徑 - 讀取原文:
palace_read(fromTurn=48, toTurn=48)→ 該輪完整原文(思考、工具調用、返回都在)
單次讀取默認上限 60,000 字符(約一本書的三分之一),硬上限也是 6 萬。單輪超過 6 萬字符時,返回前 6 萬並提示 用 offset=N 繼續,可分段讀完整個大輪。
回憶強度¶
回憶強度有五檔:
off關:只歸檔,不讀記憶;不注入任何回憶/摘要提示low低:默認行爲,優先讀摘要,模型覺得必要時纔讀原文;不遞歸medium中:走正常路線:年月 → 摘要 → 檢索 → 原文;不遞歸high高:在中基礎上允許模型主動遞歸檢索,受recallBudgetRounds/Keywords預算約束(預算只是建議,插件不強制執行)forced強制:高 + 每條用戶消息後都發一條檢索指令;沒有歸檔時插件返回「歸檔記憶爲空」,模型必須如實回答,不得編造;檢索後簡短說明回憶到了什麼
啓動時不注入歸檔摘要,只在壓縮後注入一次「去讀哪份摘要」的指引(硬觸發)。
目錄結構¶
歸檔後的文件按會話隔離,存儲在 <當前工作區>/memory-palace/ 目錄下:
<當前工作區>/
memory-palace/
.namespaces.json # 會話ID → 文件夾名 的映射
config.json # 新會話的默認值
<文件夾>/ # 記憶名:英文(大小寫均可)+數字/空格/下劃線/連字符
config.json # 本會話自己的開關/參數/記憶名
.state.json # 本會話水位、已歸檔區間
index.jsonl # 本會話的歸檔索引
<YYYY-MM>/ # 月份容器
_summary.md # 該月摘要:只追加,每段對應一次歸檔裏的一個類別
<category>/
<前綴>-<category>-<YYYYMMDD-HHmmss>.md
文件夾名 = 頁籤裏填的「記憶命名」,英文(大小寫均可)、數字、空格、下劃線、連字符,≤32 位;首尾不能有空格,中文與路徑分隔符會被拒絕。沒命名時用會話ID,且不產生任何記憶文件。
適用場景¶
適合需要在 DSH 中長期保存會話上下文、按類別檢索的智能體開發場景。插件以當前 DSH 進程權限運行,安裝前應檢查源碼與許可證。
短結尾¶
記憶迴廊把會話原文按輪次和類別歸檔到本地,在 DSH 壓縮前保存完整上下文,支持按月份摘要、關鍵詞檢索、原文讀取。如果你需要在 DSH 中長期保存和檢索對話歷史,這個插件可以作爲工作區本地記憶的補充方案。
目錄頁:https://www.skillhub.cn/plugins/dafantong01/dsh-memory-palace
GitHub:https://github.com/dafantong01/dsh-memory-palace