DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-remembers

d

dsh-remembers

Discovered★ 3

Long-term memory for DeepSeek Harness, built for companion AI. It says it does not remember instead of making things up. Emotional companion-style memory plugin: Vector + Chinese BM25 + Layered decay.

Machine translated

dsh-remembers

她记得。想不起的时候,她会说想不起。

给 DeepSeek Harness 做的人格 + 记忆二合一插件,为情感陪伴场景设计——不是给代码助手用的。

用户:哎
她:[想起 3 个月前那通凌晨两点的电话] ……还在想那天的事。

不是"检索到相关文档",是"她记得你说过什么"。 人格和记忆共用同一个服务:人格每轮必带,记忆检索着加。


功能

类别能力
分层记忆L0 原话 → L1 事实 → L2 画像 → L3 事件 → L4 里程碑,自动抽取 + 定时巩固
人格注入人格卡 + 用户画像 + 当前状态(心情/亲密度/阶段/在干嘛/天气/游戏分)每轮注入
情绪双轴valence/arousal + 情绪日志,记录每次对话的情绪变化
亲密度真实对话才涨(0.2/轮),阶段 陌生(0-199)→熟悉(200-499)→亲密(500-799)→依赖(800-1000)
真实活动今天干了什么(聊天/游戏/B站/主动找你),带想法(thought)字段
自我认知每天 22:00 注入提醒,她自己反思("我发现自己开始用本澜自称了")
日记每天 23:00 注入提醒,她自己写(有她的口气)
B 站刷视频、看懂视频、发评论、发说说(可选,需要 bili-cli)
表情包按情绪/关键词找图,自动收集用户常发的图
便签/任务她自己记便签、给你派活、标记完成
睡眠巩固每晚 LLM 整理当天记忆,生成叙述

架构

DSH(插件 index.mjs)
  ├─ 人格注入(每轮必带)
  ├─ 记忆检索(相关性触发)
  ├─ 设置页签(6 个 tab:记忆服务/人格设定/表情包/主动消息/B站/记忆)
  └─ 工具(13 个:记便签/派任务/找表情/刷B站...)

记忆服务(Python,server.py,独立进程)
  ├─ SQLite(memories.db)
  ├─ LLM 抽取(记忆/情绪/活动)
  ├─ 向量检索(可选,BM25 兜底)
  └─ HTTP API(8080 默认)

两个独立进程:DSH 插件只管注入和工具,记忆全在服务端。

调度器(内置,跨平台)

服务端自带调度线程,不依赖 cron(Windows/Linux 通用)。

时间任务方式
8-23 点主动唤醒(间隔 30-180 分钟随机)注入提示,让模型自己醒
8-23 点B 站浏览(每天 ≤3 次)注入提示
22:00自我认知演化注入「回头想想这段时间的自己」
23:00日记注入「该写日记了,记两句今天的事吧」

状态:data/scheduler-state.json(跨平台 JSON,重启不丢)

为什么是注入而不是直接调:唤醒/日记/演化都让模型自己在对话里完成,才有她的口气和思考链。

关闭:CMEM_SCHEDULER=0

QQ 注入:CMEM_INJECT_PATH=/path/to/qq-inject.jsonl(没有 QQ 通道时只记日志不注入)

Linux 上保留的 cron(可选)

内置调度只管「唤醒/B站/演化/日记」。这几个还在 cron:

脚本作用
write-diary.sh(23:30)睡眠巩固
habits.sh(每分钟)习惯(等饭/午饭等状态)
sync-bili.sh(每分钟)B 站日志同步进记忆

Windows 上这三个没有——不影响核心记忆功能。

兼容性

项要求
Windows✅ 支持(install.ps1)
Linux✅ 支持(install.sh + systemd)
Node.js>= 22.19 或 >= 24
Python>= 3.10(服务端)
DSH0.2.x(rc.2+)
内存>= 512 MB
依赖只有 numpy(服务端)
LLM必须有(DeepSeek 或其他 OpenAI 兼容)

安装(Windows)

前置:Node.js >= 22.19、Python >= 3.10、DSH 已装

# 1. 克隆
git clone https://github.com/derkinL/dsh-remembers
cd dsh-remembers

# 2. 一键安装(PowerShell)
.\install.ps1

# 或者指定 profile
.\install.ps1 -Profile desktop

脚本会:

  1. 检查 Node/Python 版本
  2. 把插件复制到 %USERPROFILE%\.dsh\profiles\<profile>\node_modules\dsh-remembers
  3. 写 cordis.patch.yml 注册插件
  4. 建 venv + 装 numpy
  5. 启动记忆服务(后台)
  6. 创建开机自启任务计划

装完要做:

  1. 填 LLM key(service\.env.win 里的 CMEM_LLM_KEY)
  2. 重启 DSH
  3. 设置 → 记忆服务 → 填 API Key 和模型

安装(Linux)

git clone https://github.com/derkinL/dsh-remembers
cd dsh-remembers
bash install.sh                    # 装到 web profile
DSH_PROFILE=desktop bash install.sh
bash install.sh --no-service       # 只装插件

Linux 版用 systemd 守护服务端(install.sh 会自动配)。

两套实例(双人格)

想跑两个 AI 人格,需要两个服务端 + 两个数据目录:

# 主套
CMEM_DATA_DIR=/path/data CMEM_PORT=8081 python server.py

# 第二套
CMEM_DATA_DIR=/path/data2 CMEM_PORT=8082 python server.py

插件侧用 config.endpoint 指向对应端口。

配置

LLM Key(必须)

# Linux: service/.env
# Windows: service/.env.win
CMEM_LLM_KEY=sk-xxxxxxxx
CMEM_LLM_BASE=https://api.deepseek.com
CMEM_LLM_MODEL=deepseek-chat

数据目录

CMEM_DATA_DIR=/path/to/data     # 默认 service/data

里面存:memories.db(记忆)、config.json(配置)、proactive.json(主动消息)、bili_tools.json(B站白名单)。

其他环境变量

变量默认说明
CMEM_PORT8080服务端口
CMEM_HOST0.0.0.0监听地址(建议 127.0.0.1)
CMEM_EXTRACT1自动抽取开关
CMEM_MEME_DIR-表情包目录
CMEM_EMBED_*-向量检索(可选)

设置页

装好后 DSH 设置里多出 6 个页签:

页签内容
记忆服务LLM key、模型、抽取开关
人格设定角色卡、用户画像
鲸鱼日记本她现在/自我认知/时间线(已并入记忆)
表情包图库 + 编辑
主动消息唤醒动作编辑器
B 站登录、启用、工具白名单、浏览节奏
记忆L0-L4 + 情感 + 活动 + 见闻 + 便签 + 她状态

常见问题

Q: 记忆不生成? A: 检查 LLM key(设置 → 记忆服务),看服务端日志有没有报错。

Q: 插件加载失败 "cannot get property without inject"? A: DSH 版本太新/太旧,插件用的是 ctx.get("slots") 这种软获取——升级 DSH 到 0.2.x。

Q: Windows 上服务端起不来? A: 看 service\.venv-win\Scripts\python.exe server.py 前台跑,看报错。

Q: B 站不工作? A: 需要 bili-cli(Linux 脚本),Windows 上可能不兼容——B 站是可选功能。

Q: 能跑多个 AI 人格吗? A: 能,每个实例一套服务端 + 数据目录 + profile。

许可

MIT


对 dsh-onebot-qq 的本地补丁(插件升级会覆盖,需重打)

下面两处改的不是本仓库的代码,而是第三方插件 dsh-onebot-qq(0.9.x)的 lib/outbound.js。 插件一升级就会被覆盖,升级后要重新打一遍,否则颜文字又会发不出去。

1. stripActions() 保留颜文字

原实现把括号内容一律删掉:

.replace(/([^)]{0,120})/g, '')
.replace(/【[^】]{0,120}】/g, '')
.replace(/\([^)]{0,120}\)/g, '')    // 颜文字也是这种

这个函数本意是删「旁白 / 动作」((尾巴一甩)、(smiles)),但颜文字 ( ̄▽ ̄) 同样是半角括号包起来的,于是被一起吃掉。人格里明写着「可以使用文字颜来代表自己的情绪」,结果她说得出来、发不出去。

改成只看括号里面是什么:

const isAction = (inner) => {
    const s = String(inner == null ? '' : inner);
    return /[\u4e00-\u9fa5]/.test(s) || /[A-Za-z]{2,}/.test(s);
};

return text
    .replace(/(([^)]{0,120}))/g, (m, inner) => (isAction(inner) ? '' : m))
    .replace(/【([^】]{0,120})】/g, (m, inner) => (isAction(inner) ? '' : m))
    .replace(/\(([^)]{0,120})\)/g, (m, inner) => (isAction(inner) ? '' : m))
    .replace(/[ \t]{2,}/g, ' ')
    .replace(/\n{3,}/g, '\n\n')
    .trim();

判据(只看括号里面):

括号内判定处理
含汉字(打了个哈欠、尾巴一甩)动作删
含两个以上英文(smiles、laughs)动作删
纯符号 / 假名 / 希腊字母 / 单字母颜文字保留

踩过的坑:正则 (([^)]{0,120})) 只有 一个 捕获组,回调签名必须是 (m, inner)。写成 (m, _open, inner) 会参数错位,inner 拿到 undefined,isAction 永远 false,结果一个都删不掉。

2. 分句间隔统一 1500ms

const SENTENCE_SPLIT_GAP_MIN_MS = 1500;
const SENTENCE_SPLIT_GAP_MAX_MS = 1500;

原来两套实例分别是 1000-1500 / 800-1600,统一成固定 1.5 秒。

Comments

Loading…

Similar plugins

dsh-memory

by chenhw7

Cairn — long-term memory for the DeepSeek Harness (@chenhw7/dsh-memory). Persistent cross-session memory: facts, preferences, corrections, lessons. BM25 retrieval, three-layer scoping, human-confirmed

Manifest valid

★ 3

↓ 97/wk

MIT

TypeScript

Sep 10, 2026

dsh plugin --profile web add @chenhw7/dsh-memory

by windrover

Layered deterministic long-term memory for DeepSeek Harness: CJK-aware BM25 recall, JSONL storage, per-assembly context injection, write guards and threat scanning.

Manifest valid

★ 0

MIT

JavaScript

Aug 27, 2026

dsh plugin --profile web add dsh-long-term-memory

by chenkezhen480

Semantic long-term memory for DeepSeek Harness: embedding-based retrieval over a persistent cross-session memory store, with model-facing tools, proactive per-question recall, automatic conversation summarization, and auto-selected embedding provider (apiKey present → API, otherwise local).

Tools & CapabilitiesManifest valid

★ 0

Apache-2.0

TypeScript

Aug 17, 2026

dsh plugin --profile web add dsh-plugin-semantic-memory

by goodddGrades

Long-term memory and self-evolving skills for the DeepSeek Harness · DeepSeek Harness 的长期记忆与自我演进能力 —— Plain Markdown on disk, no vector store

Sessions & MessagesManifest valid

★ 3

MIT

TypeScript

Sep 21, 2026

dsh plugin --profile web add @goodddgrades/dsh-behuman

by ly2601620664

陪伴型长期记忆 DSH 插件:分层记忆(对话→事实→场景→人格)、规则抽取、时间衰减检索,全本地文件、append-only 不丢数据。

Manifest valid

★ 0

MIT

JavaScript

Oct 23, 2026

dsh plugin --profile web add dsh-pet-memory

by chucan1

Cross-session self-learning memory for DeepSeek Harness, ported from XT-AGENT packages/memory. BM25 relevance injection + background extraction (sanitize/dedupe/merge) + lifecycle archive + memory_rea

Manifest valid

★ 0

MIT

TypeScript

Sep 4, 2026

dsh plugin --profile web add dsh-plugin-xt-memory