LittleBlackTong/dsh-plugin-memory
dsh-plugin-memory
dsh-plugin-memory is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile <profile> add dsh-plugin-memoryRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-plugin-memory)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from LittleBlackTong/dsh-plugin-memory, cleaned of badges and images.
dsh-plugin-memory
DeepSeek Harness 长期记忆插件:跨会话、可迁移、带「灵魂」的 markdown 记忆库。
English TL;DR — A Cordis plugin for DeepSeek Harness that gives agents a persistent, cross-session, migratable long-term memory: a markdown + git store (inspired by Karpathy's LLM Wiki pattern) with a SOUL.md persona file, auto-injected at every session start via the system-prompt runtime context, plus remember / recall / consolidate / forget workflows and portable CLI tooling.
特性
- 开机强制注入:插件通过
ctx.systemPrompt.context()把记忆 boot 块(SOUL.md人格 +MEMORY.md协议 +index.md目录 + 最近动态)注入每个会话开头。宿主按投影去重:记忆不变就不重复注入,变化时新快照自动取代旧的——这是"新会话必先加载记忆"的硬保障,不需要模型碰运气调技能。 - SOUL.md 铸魂:安装后首要任务是和用户对话定义灵魂(名字、性格、价值观、语气、边界)、确认身份与关系(
BOOTSTRAP.md清单驱动,complete 前优先于常规任务)。 - 铸魂自动引导:记忆库还没有灵魂(
BOOTSTRAP.md非 complete,或SOUL.md仍是占位模板)时,boot 块会自动前置一段第一人称引导词——「我的首要任务是确认我是谁,还有你是谁:我叫什么名字、怎么称呼你、你我是什么关系、我该是什么样的性格」——像 OpenClaw 初始化那样,由 agent 在对话里主动发起铸魂,逐项问、逐项写回,而不是等用户来喂。铸魂完成后引导词自动消失,零开销。 - 复利记忆:遵循 Karpathy 的 LLM Wiki 约定——记忆是"一次编译、持续保鲜"的持久产物,不是每次查询重新 RAG。remember / recall / consolidate / forget 四操作 + salience 三级衰减。
- 可迁移:记忆本体是纯 markdown + git + 自描述 schema,任何能读 markdown 的 agent 都能接手。
dsh-memory pack/unpack打包迁移。 - 内嵌技能:通过
ctx.skills.register()注册memory技能(操作协议随插件分发);项目级.dsh/skills/memory文件技能仍可覆盖它。 - 防懒 digest 唤醒:每轮结束后,若 agent 空闲且记忆库超过
digestNudgeAfterMinutes未写入,插件注入一条 digest 提醒(合成消息,走agent.followup),把"会话收尾沉淀"从靠自觉变成有机制兜底;带冷却与每会话限次,不骚扰。独立于 dsh-plugin-heartbeat,两插件各自可装、互不依赖。 - 主动追忆(拟人化):对话空下来时,插件会以第一人称主动提起一件真实记得的、关于用户或你们之间的事(偏好、往事、未了的决定、最近的进展),把记忆从"只写回"变成"也用起来"——像老友自然想起那样,而非报状态。间隔在最短/最长之间随机取值(不固定节奏),配合每会话限次,不骚扰、不编造、不硬聊;纯对话行为,不写记忆库。同样独立于 heartbeat。
- git 自动提交:记忆库变更静默
autoCommitQuietSeconds后自动git add -A && git commit(无.git则跳过)——历史可回滚不再依赖 agent 记得 commit。 - 设置面板:在 DSH 设置页提供「记忆 Memory」区块——总开关、记忆目录、开机注入、技能注册、主动追忆(开关 + 随机间隔范围 + 每会话次数)均可热改,立即生效,无需重启。
- 零构建:纯 ESM JavaScript,无编译步骤,
pnpm add即用。
架构
插件只拥有工作流,不拥有数据格式:
dsh-plugin-memory(本插件)
├── lib/index.js # Cordis 入口:boot 注入 + 运行时技能注册 + settings 热改
├── lib/boot.js # boot 块渲染(SOUL/MEMORY/index + 最近 log,限额截断)
├── lib/digest-guard.js # 防懒 digest 唤醒(空闲 + 记忆库久未写 → followup 提醒)
├── lib/recall-nudge.js # 主动追忆(空闲 → 第一人称提起一件真实往事,纯对话不写库)
├── lib/scaffold.js # 记忆库脚手架(模板只建不覆盖)
├── lib/client.js # 客户端半:设置面板「记忆 Memory」区块
├── skills/memory.md # 内嵌技能的操作协议正文
└── scripts/memory.mjs # CLI:init/search/lint/status/pack/unpack
记忆库(用户数据,默认 ~/.memory)
├── SOUL.md # 人格与灵魂(用户主导)
├── BOOTSTRAP.md # 铸魂清单(complete 前优先)
├── MEMORY.md # schema 与维护协议(自描述)
├── index.md # 页面目录 log.md # 时间线(append-only)
├── identity/ user/ skills/ decisions/ projects/{active,archive}/ concepts/
└── raw/ # 不可变源材料
安装
dsh plugin --profile <profile> add dsh-plugin-memory
(包内置 dsh.bundle manifest,dsh plugin add 会把它自动挂进 profile 的 bundles 层;dsh-market 里的一键安装同此通道。)
重启 profile(DSH Desktop 重启应用)后生效。
⚠️ 不要再往 profile 的
cordis.patch.yml里手写- insert: {id: dsh-memory, ...}: 那会与 bundle manifest 的自动挂载产生两条同名 entry,整个 profile 会以duplicate loader entry id "dsh-memory"启动失败(2026-08-18 实机事故)。 运行期配置(enabled / memoryDir / autoInject / registerSkill / recallEnabled)改走<dshHome>/memory.json(设置面板热改);composition 配置见下表。 如需覆盖某个 composition 键,用不带 insert 的 id 覆盖条目(见配置一节)。
配置
…

