dsh-selfnote:自述式跨會話記憶,而非聊天記錄堆疊

前言

在 DeepSeek Harness(DSH)裏做長期協作時,常見做法是依賴會話原文或外部向量庫:上下文變長、檢索噪聲多,模型也容易把「說過的話」和「該長期遵守的約定」混在一起。社區插件 dsh-selfnote(維護者 xyzOvO)把記憶拆成幾層:模型用第一人稱寫給自己看的自述、經你確認的事實與習慣、以及按需檢索的歷史對話原文。自述與事實分開存、分開注入,每回合最多約 800 字進入系統提示。下面介紹它是什麼、怎麼裝、怎麼用設置頁把關。

這是什麼

一句話:把「記憶」從「檢索一堆聊天記錄」變成「幾句它自己寫的自述 + 幾條你點頭過的事實」。

層 誰寫 存在哪 會不會忘
自述 模型(工具 self_note) ~/.dsh/selfnote/notes.md 不刪,寫滿進歸檔
事實 你採納後生效(memory_stage → 設置頁) ~/.dsh/memory/facts.jsonl 冷下去只降排序,不刪
畫像 由已採納事實派生 內存,不落盤 每回合重算
原文 DSH 會話機制 ~/.dsh/sessions/* 隨會話增長

約定:自述裏第一人稱「我」指 agent;記憶條目、事實的主語是用戶。插件分類爲「記憶」,當前包版本見倉庫 package.json(資料中爲 0.13.2),許可證 MIT,運行環境 Node.js >= 20.13.0,依賴 DSH 的 Cordis 插件體系(@deepseek-ai/cordis)。

社區目錄頁:skillhub.cn/plugins/xyzOvO/dsh-selfnote。DSH 生態是「一切皆插件」;該目錄爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

核心功能

三個工具

工具 作用 關鍵約束
self_note 寫一條第一人稱自述 一句話到三句話;有硬觸發與可選自定義時機
memory_recall 按關鍵詞查歷史對話原文 只收正文,剔除 reasoning / 工具輸出 / 注入內容
memory_stage 把查到的一句連出處放進候選區 無出處直接拒絕

何時應寫自述(工具說明中的默認判據,命中任一條就該寫):用戶說「記住這個」一類話;用戶連續兩次糾正同一件事;一段合作收尾(任務交付、方向定了);或模型發現「這次不對、下次換做法」。設置頁可另加一條 80 字以內的自定義時機,填後通過注入生效(改工具註冊描述需重啓 DSH,故自定義走注入)。設置頁還顯示 notes.md 的上次寫入時間。自述明文在本機且每回合進上下文,密碼、密鑰、驗證碼等憑據不應寫入;用戶姓名、習慣等更適合經 memory_stage 進事實庫。

自動採集與人工閘門

默認開啓的採集只發現長期約定類表述(如「以後…」「不要…」「我更喜歡…」),產出一律是候選,不會自動變成已採納事實。只收用戶親手輸入的 user/message;委派會話(origin === 'subagent' 或 delegationDepth > 0)整場跳過。候選 → 已採納、已採納 → 退役都必須人在設置頁點擊;模型沒有這兩個開關。

注入與遺忘

每回合系統提示中會拼一段記憶(總預算約 800 字),分段包括自述、畫像、環境、結論、習慣等;「注入」頁可查看 composeInjection() 拼出的原文及各段字數,被預算擠掉的條目會列出(整條跳過,不截半句)。熱度隨使用與時間衰減,半衰期默認 30 天(設置頁可調 1–365);只有真的進入注入纔算使用,檢索到但未進上下文的不記。冷下去隻影響排序,不會自動刪除事實。

設置頁(五頁)

裝好後在「知識庫」下多一節「人格(自述)」:概覽(注入開關、抬頭、存儲上限、索引與七個記憶相關文件)、自述(列表可就地改刪,刪的進歸檔)、記憶(候選 / 已採納 / 習慣)、畫像、注入(本回合實際貼進提示詞的內容與注入歸屬表)。有待審候選時默認打開「記憶」頁。

索引與檢索方面:歷史對話索引在過期時會標明狀態;落後少量會話時可就地補索引再查;會話文件支持增量 zstd 幀解析以降低長會話查詢成本。細節以 README 爲準。

安裝與啓用

插件以當前 DSH 進程權限讀寫 ~/.dsh/ 下文件,安裝前應自行查看 GitHub 源碼 與 MIT 許可證。

官方 README 給出的裝法分兩步:先取得插件目錄的絕對路徑(例如從 GitHub 下載源碼包並解壓),再通過 DSH 的插件管理安裝 bundle:

plugin_manager { action: "install_bundle", target: "<該目錄的絕對路徑>" }

裝完重啓 DSH 後應出現:上述三個工具、設置頁「人格(自述)」、以及每回合系統提示中的記憶段。也可以直接對 agent 說:「幫我裝一個 DSH 插件,目錄是 <絕對路徑>」。

典型用法

1、讓系統發現一條長期約定(尚未生效)

在普通聊天中說:

以後回答先給結論,細節等我問。

插件可能將其識別爲長期約定並放入候選區,但不會自動生效。

2、在設置頁審覈

打開 設置 → 人格(自述)→「記憶」,在候選卡上查看來源與會話出處,點擊「採納」後下一回合進入系統提示;點「退役」則僅保留在庫中備案。

3、讓模型寫一條自述

例如:

你寫一條自述,說說你做這類插件時的習慣。

模型調用 self_note 寫入 notes.md,之後各會話都會攜帶(在注入預算內)。

診斷自動採集是否在工作時,可使用帶 x-selfnote 頭的 GET /api/selfnote/capture(令牌見 ~/.dsh/selfnote/auth-token),返回事件統計與候選數量等,詳見 README。

適用場景與注意

適合:希望 agent 有穩定的「自我敘述」、又要把用戶側事實與習慣經人工確認後再注入的長期協作;需要看清每回合到底貼了哪些記憶、哪些條目被預算擠掉。

注意:記憶文件在本機明文;插件邏輯與數據路徑以倉庫文檔爲準。版本與測試規模以倉庫 badge / package.json 爲準(資料中 README 徽章曾標 0.11.1,與 package.json 的 0.13.2 並存時,以你本地安裝包爲準)。不要假設與官方產品捆綁;星標與社區熱度以目錄頁爲準(線索中爲 1 star)。

結尾

dsh-selfnote 把跨會話記憶拆成自述、可審覈事實與可檢索原文,並用注入預算和熱度控制「占上下文的位置」,而不是無限堆聊天記錄。進一步瞭解設計與「遺忘」思路見倉庫 docs/想法.md。

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

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

小夜