記憶迴廊:在 DSH 中按分類歸檔會話原文

前言

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 可給還沒歸檔的近況補寫一段摘要。

檢索歸檔。默認只查本會話;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,插件提供了四步檢索法:

  1. 不知道在哪個月:palace_summary(limit=6) → 每月摘要末尾預覽;找到大致年月
  2. 指定月份:palace_summary(month="2026-10") → 該月全部摘要段落(哪次歸檔、講了什麼)
  3. 搜索關鍵詞:palace_search(keyword="事故教訓", limit=3) → 約 1 千字符:命中位置 + 輪次 + 行號 + 文件路徑
  4. 讀取原文: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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜