🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

记忆册 Yansera/dsh-living-memoir

DeepSeek Harness
Yansera25 天前有提交已提供中文文档扫描:含敏感能力

把跨会话记忆整理成分类简短的 md 活文档

31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Yansera/dsh-living-memoir
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@yansera/dsh-living-memoir(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20.18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 15:49:18

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 21 处,展示前 14 条)
  • 读取本地文件
    src/index.js:74
    if (!existsSync(path)) return [];
  • 读取本地文件
    src/index.js:75
    return readFileSync(path, "utf8")
  • 读取本地文件
    src/index.js:89
    if (!existsSync(memoryDir)) return [];
  • 读取本地文件
    src/index.js:98
    return readdirSync(memoryDir)
  • 读取本地文件
    src/index.js:102
    const raw = readFileSync(join(memoryDir, name), "utf8");
  • 读取本地文件
    src/index.js:175
    const PACKAGE = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
  • 写入本地文件
    src/index.js:408
    if (!existsSync(memoryDir)) mkdirSync(memoryDir, { recursive: true });
  • 写入本地文件
    src/index.js:416
    writeFileSync(tmp, content, "utf8");
  • 写入本地文件
    src/index.js:417
    renameSync(tmp, path);
  • 删除本地文件
    src/index.js:615
    if (!keepSet.has(existing.id)) rmSync(fileOf(existing.id), { force: true });
  • 写入本地文件
    src/index.js:723
    if (!existsSync(dir)) mkdirSync(dir, { recursive: true });
  • 写入本地文件
    src/index.js:726
    writeFileSync(tmp, `${JSON.stringify(next, null, 2)}\n`, "utf8");
  • 写入本地文件
    src/index.js:727
    renameSync(tmp, path);
  • 发起网络请求
    src/client.js:321
    return fetch(path, Object.assign({ headers: { "content-type": "application/json" } }, options)).then(function (res) {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-llm@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 跨会话长期记忆
  • 分类Markdown文档
  • 每轮原地重写

DSH 插件——长期记忆写成一份简短、分好类的 Markdown 活文档,每轮原地重写。

README

由 DeepSeek 最新模型翻译生成
记忆册 · Memoir English · Français · Deutsch · 日本語 · 简体中文 DeepSeek Harness 的跨会话记忆插件。记忆存成一组 Markdown 文件,每轮对话结束后整个重写一遍,而不是往后追加。 界面与记忆库 📦 安装 dsh plugin --profile desktop add @yansera/dsh-living-memoir desktop 换成你的 profile 名。dsh 是 DeepSeek Harness 自带的 CLI,桌面版在 <安装目录>\resources\runtime\cli\bin\dsh.cmd。 从源码装: dsh plugin --profile desktop add 'file:D:\path\to\dsh-living-memoir' 装完要完全退出客户端再打开。DSH 只在安装插件那一刻加载代码,关窗口不算退出。 🚀 用起来是什么样 侧边栏会出现「记忆册」,点开占满主区域:左边是分类,右边是条目。左上角「← 返回对话」回到会话。 之后不用配置。模型在你说出持久偏好、定下决策、纠正它的时候会自己写;你也可以点「记一条」,或者直接编辑 $DSH_HOME/memoir/ 下的 md 文件,改完刷新页面就能看到。
展开完整文档(README 剩余 1 节)
记忆册 · Memoir

English · Français · Deutsch · 日本語 · 简体中文

DeepSeek Harness 的跨会话记忆插件。记忆存成一组 Markdown 文件,每轮对话结束后整个重写一遍,而不是往后追加。

界面与记忆库

📦 安装

dsh plugin --profile desktop add @yansera/dsh-living-memoir

desktop 换成你的 profile 名。dsh 是 DeepSeek Harness 自带的 CLI,桌面版在 <安装目录>\resources\runtime\cli\bin\dsh.cmd。

从源码装:

dsh plugin --profile desktop add 'file:D:\path\to\dsh-living-memoir'

装完要完全退出客户端再打开。DSH 只在安装插件那一刻加载代码,关窗口不算退出。

🚀 用起来是什么样

侧边栏会出现「记忆册」,点开占满主区域:左边是分类,右边是条目。左上角「← 返回对话」回到会话。

之后不用配置。模型在你说出持久偏好、定下决策、纠正它的时候会自己写;你也可以点「记一条」,或者直接编辑 $DSH_HOME/memoir/ 下的 md 文件,改完刷新页面就能看到。

想让它停下来,页面右上角设置里关掉「记忆写入」。关掉之后不读也不写。

🧱 三层结构

在做的事

记忆册

- 把跨会话记忆整理成分类简短的 md 活文档

修仙:进化网络

- 用基因突变与自然选择长出承载语义的拓扑

第一层是分类,一个分类一个 md 文件。第二层是小节,通常一个项目一个。第三层是条目,一条一句话,到此为止。

分类按主题划分,不按信息类型。找东西的时候人想的是「这是哪个项目」,不是「这算决策还是算进展」。同一个项目的一切都收在它自己的小节里。

分类的数量和结构由模型按内容决定,没有固定清单。装好时会铺五个起头分类,用不着就删。某一类条目太多,或者里面其实是两件不搭的事,模型会把它拆开。

✍️ 三种写入方式

模型工具:模型判断什么值得记,调用 memoir_note 写进去,memoir_recall 和 memoir_forget 用来查和删。

页面手写:点「记一条」,或者直接编辑 md 文件。

自动改写:每轮对话结束、安静 20 秒后,后台把整本读一遍,交出改写后的完整版本。

前两种是追加,第三种是重写。重写才是这套东西的核心,它保证文档不会只涨不消。

🔄 自动改写

模型的输入是「记忆册现在的全部内容」加上「这段新对话」,要交出的是改写后的完整版本。合并、删减、改写、新增都在这一步发生。

几条防呆:

- 按会话存游标,只消费上次之后的新事件,同一段不会被反复改写
- 失败不推进游标,下次轮次结束会重试同一段
- 新内容少于 400 字符就跳过,但游标照常推进
- 多个会话同时收尾时请求排队,不会一拥而上
- 解析不出分类就什么都不写;条目总数骤减一半以上(原本不少于 6 条时)直接拒绝这次改写

每条记忆带两个标记。conf 是置信度:用户亲口说的是 high,从对话里提炼的是 med,模型自己推断的是 low;要腾地方时先丢 low。pin 表示钉住,标了它的条目改写时必须原样保留,一篇里最多三五条。

⚙️ 设置

页面右上角的齿轮。改动存在记忆库目录的 .settings.json 里,跟记忆数据放一起,换 profile 不丢。

写入总开关关掉之后,记忆不再注入提示词、三个工具拒绝执行、页面和 HTTP 写入返回 403、自动改写停止。

改写用的模型从宿主已注册的列表里选。插件调用 ctx.llm.listProviders() 和 ctx.llm.listModels(provider) 把可选项列成下拉,不用自己填 provider 名和模型 id。DSH 里关联好的模型,不管是自带的、本地的还是第三方 API,都会出现在那里。下拉下面也留了手填的位置。

思考程度默认关闭。改写是整理不是解题,实测思考型模型会把输出预算烧在推理上,正文一个字都吐不出来。

界面语言和记忆语言是两个开关。前者换按钮和标签,后者决定存进 md 的字用哪种语言,包括分类名和小节名。两个都默认英文。

🔧 配置

部署级配置走 cordis.patch.yml:

- id: memoir
name: '@yansera/dsh-living-memoir'
config:
memoryDir: '' # 留空 = $DSH_HOME/memoir injectIndex: true # 是否把记忆目录注入系统提示词 maxInjectEntries: 12 # 最多注入几条 autoDistill: true # 每轮结束自动改写 distillDebounceMs: 20000 # 改写前的安静等待(毫秒) distillMinChars: 400 # 少于这么多字符就跳过 distillMaxItems: 60 # 整本条目上限 distillMaxTokens: 8000 # 输出预算下限,会按记忆规模自动往上抬yaml distillReasoningEffort: off # 改写不需要推理 memoryLanguage: '' # 记忆内容语言;留空 = 不限制 pageEntryLimit: 12 # 单类超过这么多条触发强制整理 bookEntryLimit: 40 # 整本超过这么多条触发强制整理

改完要重启,跟代码改动一样。

📂 文件长什么样

一个分类一个 md 文件,纯文本,可以用任何编辑器打开,也可以进版本控制。没有数据库,没有缓存,没有私有格式。

条目的元数据写在 HTML 注释里,不影响阅读:

- 用户要求所有下载前先问,并说清多少 GB

手工加一行 - 内容 就等于加一条记忆。解析器只认三种行:# 分类、## 小节、- 条目,其余全部忽略。

❓ 常见问题

和别的记忆方案冲突吗。 不冲突。记忆册只管长期宏观那一层:用户是谁、助手是谁、在做什么、定过什么大方向决策。短期与过程性的内容,比如技术细节、踩坑记录、进度流水,不归它管,也不会写进来。数据存在自己的目录里。

会越记越多吗。 不会。它是被改写的,长度由内容决定而不是由历史决定。分类超过 12 条或整本超过 40 条会触发强制整理。

记忆被改错了怎么办。 每个分类的 md 文件都可以直接改,改完刷新页面就生效。模型下次改写会尊重你改过的分类名。重要条目可以标 pin 钉住。

会外发数据吗。 不会。插件不主动发起任何网络请求,改写用的是宿主自己的 llm 能力。

能把记忆带走吗。 能。整个记忆库就是一个目录,拷走就行。

🛠 开发 sh
npm test # 全部 259 项离线自测
npm run test:store # 存储层:解析、去重、移动、搜索、注入文本
npm run test:plugin # host 端:注册面、工具执行、系统提示、HTTP 路由
npm run test:client # 页面半:用 React 替身渲染真 bundle
npm run test:distill # 自动改写:输出解析、防抖、游标、失败重试

测试全部离线,不依赖 DSH 宿主,也不碰任何真实 profile。

改完源码之后(Windows): powershell & .\scripts\sync.ps1

pnpm 用 file: 装本地包时是硬链接,编辑源码会断开链接,安装位置的副本不再更新,所以必须同步再重启。

目录结构:

src/ 实现本体(index = host 半,distill = 自动改写,client = 页面半) test/ 离线自测 docs/ 设计与格式说明 scripts/ 同步脚本、对着运行中客户端的冒烟测试

细节见 CONTRIBUTING.md 和 docs/:设计说明、存储格式、配置。

📄 许可

MIT © Yansera
预览分享卡片长什么样 ↓Yansera/dsh-living-memoir
分享 · DeepSeek Harness Hub
Yansera/dsh-living-memoir

把跨会话记忆整理成分类简短的 md 活文档

这是你的仓库?认领条目

回到顶部