dsh-plugin-companion-memory:情感陪伴場景下的選擇性記憶

前言

在 DeepSeek Harness(DSH)裏給陪伴型智能體加記憶,常見兩難是:忘得太多會丟掉用戶認真說過、希望被記住的細節;把每次閒聊都塞進下一輪,上下文遲早裝不下。壓縮、檢索、分層能緩解容量問題,但對情感陪伴還要再問一層:存下來的,是不是這個人真正在意的?

通用記憶插件往往按內容類型、關鍵詞或固定規則取捨。下面介紹社區插件 dsh-plugin-companion-memory(維護者 123zxs345),它把問題從「怎樣少忘一點」推進到「怎樣提煉重要信息」:主動維護用戶畫像,用三層結構存原始經歷與提煉後的意義,相關才入選候選,並複用原生會話前綴與已有總結,減輕重複整理的開銷。

這是什麼

dsh-plugin-companion-memory 是面向 DeepSeek Harness 的選擇性記憶插件,分類爲「記憶」。項目描述爲:主動用戶畫像、三層漸進披露、會話緩存與總結複用(Selective companion memory for DeepSeek Harness)。

插件不把用戶定型:畫像幫助理解「你看重什麼、希望怎樣被對待」,用戶當下的表達優先;重要性由後臺模型結合畫像與情境判斷,而不是按情緒分數或固定遺忘天數硬篩。

核心機制

README 用一張表概括設計,要點如下。

機制 作用
主動維護用戶畫像 新經歷補充或修正理解;完整畫像始終參與後臺取捨,不依賴本輪檢索碰運氣。
原始記憶 → 提煉記憶 → 簡短總結 保留原話與來源;提煉意義和適用情境;短總結作爲檢索入口。
相關才入選 只比較簡短總結的語義相似度,達標才進入候選,最多 24 條,可以是 0 條。
漸進披露 模型自行決定先看提煉內容,還是進一步覈對原始來源。
緩存與總結複用 複用剛完成的原生會話前綴、已有總結與階段結果,減少重複整理。

聊天時,插件向宿主模型提供 recall_memory 與 read_memory:先看到摘要,需要時再展開意義或原話。後臺模型決定記憶的保留、提煉、合併與修正;執行層檢查來源、容量、依賴與事務一致性。記憶落在本地 SQLite;啓用 Hindsight 時,短總結也會送到你配置的檢索服務。插件不額外保存宿主 API 密鑰,也不自動下載嵌入模型。

默認在安靜約 15 秒後嘗試整理;持續聊天時,從首個完整待整理交互起最多等待 60 秒,生成回覆期間會等待其結束。普通閒聊可以不形成長期記憶。未配置檢索服務時,本地 SQLite 與後臺畫像維護仍保留,經歷候選爲空,不用無關內容補位。

安裝與啓用

已驗證環境:Node.js 24+、DeepSeek Harness 0.2.1-rc.2、Cordis 4.0.5。先在宿主中配置好模型與憑據,插件複用宿主,不需要再填寫模型 API Key。

在常用的 web profile 中安裝發佈包(當前資料中的版本爲 v0.3.2):

dsh plugin --profile web add https://github.com/123zxs345/dsh-plugin-companion-memory/releases/download/v0.3.2/dsh-plugin-companion-memory-0.3.2.tgz

也可以從固定版本的 Git 倉庫安裝:

dsh plugin --profile web add "git+https://github.com/123zxs345/dsh-plugin-companion-memory.git#v0.3.2"

安裝後重啓 dsh web。組合包會在當前 profile 下加載 companion-memory,數據保存在該 profile 的 companion-memory/ 目錄。倉庫內包含可安裝的編譯結果,使用者無需先構建源碼。

使用 DSH「自定義插件索引」時,可在「發現 → 添加索引源」填入:

https://raw.githubusercontent.com/123zxs345/dsh-plugin-companion-memory/main/market/index.json

語義召回依賴宿主已有的 Hindsight chunks 服務。在當前 profile 的 cordis.patch.yml 中配置地址(資料原文示例;補丁會替換整個 config,請保留數據目錄及已有自定義項):

- id: companion-memory
  config:
    dataDir: !!js "ctx.get('profileContext').dir + '/companion-memory'"
    companionId: default
    idleReviewSeconds: 15
    reviewMaxDelaySeconds: 60
    candidateBudget: 24
    minimumSimilarity: 0.55
    contextTokens: 800
    hindsightUrl: http://127.0.0.1:8888

將 hindsightUrl 換成你的實際服務地址。默認面向單一主人的 profile;多用戶部署應使用隔離作用域、獨立 companionId 和數據目錄。

典型用法示意

README 中的虛構示例(說明提煉與「當前表達優先」):

用戶:以後我說累了,先聽我吐槽兩句,別急着給建議。

模型可將其提煉爲:疲憊時希望先被傾聽,並保留適用情境與原話依據。另一天用戶說「今天我想聽聽你的辦法」時,按當天需要回應,也可修正已有理解。

卸載插件(數據目錄默認保留,是否刪除由你決定):

dsh plugin --profile web remove dsh-plugin-companion-memory

卸載後需重啓宿主。

程序化接入(可選)

在創建或恢復宿主 Agent 之前加載插件(摘自 README):

import { resolve } from 'node:path';
import CompanionMemory from 'dsh-plugin-companion-memory';

await root.plugin(CompanionMemory, {
  dataDir: resolve('.dsh-companion-memory'),
  companionId: 'my-companion',
  hindsightUrl: 'http://127.0.0.1:8888',
  candidateBudget: 24,
  minimumSimilarity: 0.55,
});

root 爲已有 Cordis Context,需提供 agents、systemPrompt、tools、llm 等服務。插件不替換宿主人設。可通過 root.companionMemory.reviewNow('preview') 預覽整理計劃,applyPreview() 應用,userProfile() 讀取畫像。設置 idleReviewSeconds: 0 可關閉自動調度,保留手動整理。更完整的架構說明見倉庫 docs/architecture.md。

適用場景與注意

適合誰: 在 DSH 上做長期情感陪伴、希望關係能「接着上一次相處」、又需要控制上下文體積的開發者。插件理念是理解這個人、提煉在意的事,用 evolving user profile 與分層召回保持連續性,而不是堆滿無關歷史。

生態說明: DSH 主張「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係,不要當作官方應用商店。

安裝前請知悉: 插件以當前 DSH 進程權限運行,會讀寫 profile 下數據目錄並調用你配置的模型與 Hindsight 服務。安裝前應自行查看 GitHub 源碼 與 MIT 許可證。刪除插件記憶不等於刪除宿主原始聊天或微信、QQ 等平臺記錄。緩存是否實際命中由模型提供商決定,插件不承諾固定命中率。

結尾

經過上面的步驟,你可以在 web profile 里加載 dsh-plugin-companion-memory,用畫像與三層選擇性記憶讓陪伴對話更連貫,同時把無關閒聊擋在候選之外。介紹視頻見 B 站 BV1G1436xEp4;索引與詳情見 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜