前言¶
DSH 的理念是「一切皆插件」,模型之外的記憶、工具、通道都靠插件拼。做長期陪伴類機器人(養成型伴侶,比如「大肥魚」)時,常見做法是把聊天記錄塞進數據庫,或者直接套一個向量庫做檢索。前者沒有遺忘,機器人記得越多越僵;後者檢索回來的內容沒有「記不清」這個概念,容易一本正經地編。
下面介紹 dsh-hippocampus,一個面向這類機器人的記憶層,維護者是 kianajunjie。它按人腦海馬體的環節組織記憶,會遺忘、會隨用戶改口失效,也會承認自己記不清。
這是什麼¶
- 插件名稱:dsh-hippocampus
- 倉庫:kianajunjie/dsh-hippocampus
- 維護者:kianajunjie
- 版本:0.3.1
- 許可證:MIT
- 運行要求:Node.js >= 22.5
- 分類:記憶
一句話定位:給長期運行的陪伴機器人提供記憶層,不是數據庫存儲,也不是向量庫套殼。資料裏的定性是「照着海馬體抄的」,拆成事件編碼、鞏固、遺忘、聯想、元記憶五個環節。
核心功能¶
事件記憶:把對話變成「誰、何時、發生了什麼、什麼情緒」。底層分事件、關係、事實、章節、技能/缺口幾類表。
情緒加權遺忘:遺忘不是均勻的。資料裏寫的是「被兇那天的記憶能撐七個月,普通的一天一個半月就沒了」;90 天實測,有情緒權重的舊記憶召回率 27%,去掉情緒權重只有 9%。
確定度:每條記憶帶置信度,分「記得清 / 大概記得 / 只記得有這回事」。它不會把模糊的記憶說得斬釘截鐵。
改口即失效:用戶先說喜歡咖啡、後來說戒了,舊那條自動作廢,不會自相矛盾。
關係層:跟每個人的親密、信任,以及沒解開的疙瘩。久不出現會淡,原諒了才解開。
按人隔離:A 看不到 B 的記憶,羣聊看不到私聊。
平臺無關:QQ、im、網頁、Telegram 都可以接,同一人從幾個門進來,記憶只有一份。底層靠 identities 表把身份統一成一個 subject。
零依賴:用 Node 內置 SQLite,一個本地文件就是全部記憶,不上傳,不需要額外服務。
調用入口是 handleTurn():解析身份 → 組裝 context → 召回,輸出 r.context(塞進系統提示)和 r.recall(召回結果)。每天再跑一次 replay() 做鞏固與遺忘。
安裝與啓用¶
直接用 npm 安裝,適合直接調庫或命令行:
npm i dsh-hippocampus
作爲 DSH 插件啓用(im / 網頁接入):
dsh plugin --profile web add github:kianajunjie/dsh-hippocampus
package.json 裏還聲明瞭 dsh.bundle.patch 字段,指向 ./cordis.patch.yml,需要 dsh plugin 流程時留意這個補丁文件。
典型用法¶
直接調庫
import { createHippocampus } from 'dsh-hippocampus'
const hip = await createHippocampus({ apiKey: process.env.DEEPSEEK_API_KEY })
// 每條消息
const r = await hip.handleTurn({ channel: 'qq', externalId: msg.user_id, text, reply })
// r.context → 塞進系統提示,r.recall → 召回結果
// 每天一次
await hip.replay()
先用 npm i 裝包,再寫這段。構造時傳 apiKey,說明編碼、召回的語義處理依賴模型;檢索與整理本身走本地實現。
HTTP 接口(任何語言都能調)
import { createMemoryServer } from 'dsh-hippocampus/http'
await createMemoryServer({ hip, port: 7717, token: 'secret' })
curl -s localhost:7717/context -H 'authorization: Bearer secret' \
-H 'content-type: application/json' \
-d '{"channel":"telegram","externalId":"42","text":"我腿疼"}'
先起服務,再發 POST /context。鑑權走 Bearer,端口和 token 自己定。
命令行
node cli.mjs demo # 不需要模型,先看效果
node cli.mjs encode --turns turns.json
node cli.mjs replay
node cli.mjs context --subject 主人 "我腿疼"
node cli.mjs list 20 | audit | stats
demo 不碰模型,用來先看效果;encode 需要一份 turns.json 輸入,replay 用來跑鞏固與遺忘。npm test 有 26 項測試。
更多接入方式見 docs/integration.md,提示詞配法見 docs/prompt.md,實測數據見 docs/bench.md。
適用場景與注意¶
適合:長期陪伴機器人、養成型伴侶,同一個人在多個入口(QQ、im、網頁、Telegram)需要共用一份記憶,希望機器人有遺忘、有明確度、能隨用戶改口更新。
不適合:客服 FAQ、通用助理、多租戶 SaaS、知識庫問答。資料明確說這些場景用 RAG 更合適。
注意兩點:
- 插件以當前 dsh 進程的權限運行。安裝前應檢查源碼與許可證(本插件爲 MIT),不要只憑目錄頁簡介就裝。
- 它管的是記憶,不是模型本身。構造時需要提供
DEEPSEEK_API_KEY,token 缺失時編碼、召回跑不起來。
結尾¶
dsh-hippocampus 的價值在「會忘」和「會說記不清」這兩點上:它不追求把每句話都存下來,而是按情緒、按改口、按確定度維護一份隨時間變化的記憶,同時保持本地化、平臺無關。對做陪伴類機器人的人來說,比「聊天記錄表 + 向量檢索」更貼近長期對話的形狀。
目錄頁:https://www.skillhub.cn/plugins/kianajunjie/dsh-hippocampus
GitHub:https://github.com/kianajunjie/dsh-hippocampus