跳过主要内容
Y

xiaoman-memory

yunkong-134/xiaoman-memory

纯文本记忆:一条事一节、六个字段,靠元素联想而不是向量检索,每轮最多交两条旧事;不调模型、不联网,写库留给人——库能直接打开、能 grep、能改、能整份拷走。

安装

dsh plugin --profile web add github:yunkong-134/xiaoman-memory

README

xiaoman-memory

给 DeepSeek Harness 的记忆插件。纯文本,不建向量,不联网,不调模型。

它做四件事:

  • 回想:拿你这句话去事件库里找,最多交两条旧事的标题。判断留在库里,要看细节自己去读那一条。
  • 近况:新会话头一句先给最近几天记了什么,提不提由模型定。
  • 库体检:条数掉了、库文件不见了、库太久没补,先说一句再继续。
  • 长元素:每天从库里挖一次候选词,写进候选文件,不碰元素表。

它不做:不自动写库,不删条目,不给情绪打分,不往对话里塞人设。

装

一行:

dsh plugin --profile web add https://github.com/yunkong-134/xiaoman-memory/releases/download/v0.2.0/xiaoman-memory-0.2.0.tgz

装完重启 DSH。第一次启动会在 ~/.dsh/memory 铺一份空模板。

也可以把包放进 profile 的 node_modules,再把包名写进 profile 的 package.json:

"dsh": { "profile": { "bundles": ["xiaoman-memory"] } }

想换地方:设环境变量 DSH_MEMORY_DIR,指到哪就写哪。

第一次

库里是空的,第一条得你自己写。格式在 记忆库/事件库.md 顶上:标题行带月-日,正文四格〔事〕〔判〕〔源〕〔元〕。

写一条大概是这样:

### 10-28 备份脚本跑到一半就断
〔事〕23:50 那次备份只拷了顶层,剩下的没跑完。
〔判〕2026-10-28 定时任务被宿主收走了,脚本本身没坏。
〔源〕他 23:55 说的;备份.ps1 第 12 行
〔元〕备份、脚本

数据在哪

<记忆目录>/
  元素表.md        元素和别名
  元素-多义表.md   一个词两个意思时怎么判
  元素-别名.json   手加的别名,元素表被重写也不会丢
  config.json      可选
  记忆库/
    事件库.md      一条事一节
    元素-候选.json 每天挖出来的候选词
    元素-补.json   补过哪些、哪天补的
    权重.json      被想起一次的加分
  .state/          体检水位、日志、长元素记号

全部是文本,能 grep,能整份拷走。换机器拷这个文件夹就行。

参数

config.json(可选):

{ "recentDays": 2, "staleHours": 20, "top": 2, "log": true }
  • recentDays:近况回溯几天
  • staleHours:库多久没动就提醒
  • top:每轮最多交几条旧事
  • log:写不写 .state/diag.log

它不做什么,以及为什么

写库是手工的,是这个插件最容易让人失望的地方,也是它没变成黑盒的原因:程序只负责读,不替人决定今天什么值得记。停了就停在原地。

不建向量:一条事就是一节文字,抽错了一条你能指出是哪条,也能直接改。代价是字面对不上就得靠元素、形状和处境去够,够不着就空手。

已知限制

  • 宿主接口是照着 dsh 0.2.1 在这台机器上摸出来的,会话事件结构换了可能取不到最后一句;取不到时它只是不回想,不会报错。
  • 补元素会往命中的旧条目末尾加一行〔补 日期〕,正文一个字不动;同一条同一天只补一次。
  • 长元素只写候选文件,收不收进元素表由人定。
  • 只在 Windows 上跑过。

许可

MIT。

相关插件