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

引用式会话记忆 Jesse-njx/dsh-memory

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

提炼会话事实并附原始日志引用,可随时回溯核查

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · chat
暂无时间戳·判据 →
装得上吗[实装验证]—
静态安装检查有提示项,装前建议看一眼 README
数据截至 2026/09/25·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 67 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

安装兼容性检查⚠ 装前注意

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

展开查看检查明细 ↓

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/24 04:26:05

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

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

可执行外部命令读写/删除本地文件
查看扫描证据(共 25 处,展示前 15 条)
  • 读取本地文件
    src/cli.ts:111
    if (!existsSync(filePath)) {
  • 执行外部命令来自配置/变量
    src/cli.ts:116
    const result = spawnSync(editor, [filePath], { stdio: 'inherit' });
  • 写入本地文件
    src/store.ts:196
    mkdirSync(this.userDir(), { recursive: true });
  • 写入本地文件
    src/store.ts:197
    mkdirSync(this.projectDir(project), { recursive: true });
  • 读取本地文件
    src/store.ts:201
    if (!existsSync(dir)) return [];
  • 读取本地文件
    src/store.ts:203
    for (const entry of readdirSync(dir)) {
  • 读取本地文件
    src/store.ts:208
    text = readFileSync(path, 'utf8');
  • 读取本地文件
    src/store.ts:242
    if (existsSync(this.root)) {
  • 读取本地文件
    src/store.ts:243
    for (const entry of readdirSync(this.root)) {
  • 读取本地文件
    src/store.ts:246
    if (!statSync(dir, { throwIfNoEntry: false })?.isDirectory()) continue;
  • 写入本地文件
    src/store.ts:306
    mkdirSync(dir, { recursive: true });
  • 写入本地文件
    src/store.ts:309
    writeFileSync(tmpPath, encodeDoc(doc), 'utf8');
  • 写入本地文件
    src/store.ts:310
    renameSync(tmpPath, finalPath);
  • 删除本地文件
    src/store.ts:318
    rmSync(this.filePath(located.dir, name));
  • 写入本地文件
    src/store.ts:328
    mkdirSync(dir, { recursive: true });
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-commands@deepseek-ai/dsh-jobs@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 提炼会话事实
  • 附原始日志引用
  • 支持回溯核查

带引用的记忆,建在 DSH 无损会话日志之上——提炼成可人工核查的事实,每条都能引回确切的源事件;配 memory_read/memory_expand 工具、召回索引和 dsh-memory 命令行。

README

由 DeepSeek 最新模型翻译生成
dsh-memory 基于 DSH 无损会话日志的引用式记忆。 提炼出的事实始终可以回溯到确切的原始上下文。 dsh-memory 是一个 DeepSeek Harness 插件包。当会话结束时,一个后台提炼过程会将持久性事实——用户偏好、项目决策、环境怪癖、纠正——提取到 ~/.dsh/memory/ 下的小型 markdown 文件中。每条记忆都带有一个引用 (sessionId, [start..end]),指向它来源的确切日志事件。下一个会话会获得这些记忆的紧凑索引,外加两个工具:memory_read(完整记忆)和 memory_expand(被引用的原始日志摘录)。 核心思想:摘要是指向基准真相的索引,而绝不是真相本身。 检索时呈现一行提炼出的事实(成本低);当 agent 需要更多信息时,memory_expand 返回确切的原始日志事件(精确,而非重建)。DSH 能低成本地做到这一点,因为它本就坐落在一个完整、仅追加的转录存储之上——不构建记忆存储,只构建记忆索引。 为什么是这个形态 主流记忆系统(Mem0、Letta/MemGPT、Zep)都有一个共同弱点:提取是有损且不可追溯的。一旦摘要器把某个事实弄乱,原始内容就丢失或无法找到,而 agent 会自信地回忆起被弄乱的版本。DSH 的差异化优势在于仅追加的会话日志:模型见过的一切都已被持久存储。
展开完整文档(README 剩余 1 节)
dsh-memory

基于 DSH 无损会话日志的引用式记忆。 提炼出的事实始终可以回溯到确切的原始上下文。

dsh-memory 是一个 DeepSeek Harness 插件包。当会话结束时,一个后台提炼过程会将持久性事实——用户偏好、项目决策、环境怪癖、纠正——提取到 ~/.dsh/memory/ 下的小型 markdown 文件中。每条记忆都带有一个引用 (sessionId, [start..end]),指向它来源的确切日志事件。下一个会话会获得这些记忆的紧凑索引,外加两个工具:memory_read(完整记忆)和 memory_expand(被引用的原始日志摘录)。

核心思想:摘要是指向基准真相的索引,而绝不是真相本身。 检索时呈现一行提炼出的事实(成本低);当 agent 需要更多信息时,memory_expand 返回确切的原始日志事件(精确,而非重建)。DSH 能低成本地做到这一点,因为它本就坐落在一个完整、仅追加的转录存储之上——不构建记忆存储,只构建记忆索引。

为什么是这个形态

主流记忆系统(Mem0、Letta/MemGPT、Zep)都有一个共同弱点:提取是有损且不可追溯的。一旦摘要器把某个事实弄乱,原始内容就丢失或无法找到,而 agent 会自信地回忆起被弄乱的版本。DSH 的差异化优势在于仅追加的会话日志:模型见过的一切都已被持久存储。因此 dsh-memory 提炼为文件(人类可审计、可 git diff、可用 rm 删除),并在每条事实上保留一个指向日志的引用。

工作原理

1. 提炼(会话后,通过 ctx.jobs 异步)——当会话离开存储时,一个后台作业将该会话的实时事件(有界转录、受 token 上限约束)送入一次廉价模型处理,并要求以 JSON 形式给出持久性事实。事实成为记忆文件;现有记忆会被就地更新(追加引用、rev 递增)或被矛盾(被指名的记忆被重写,保留其名称)。每次处理都记录在 /_distill.log(JSONL)中。
2. 召回(每次提示组装时)——一个系统提示区段为当前项目(加上共享的用户记忆)渲染一个紧凑、受 token 上限约束的 name — description 行索引。正文只需一次 memory_read 调用即可获取;被引用的来源只需一次 memory_expand 调用即可获取。
3. 维护——提炼过程更新并矛盾现有记忆;dsh-memory CLI 可列出、显示、编辑(在 $EDITOR 中)和删除;/memory 斜杠命令可在会话内列出它们。

v0.1 中没有向量数据库、没有知识图谱、没有自动注入完整记忆正文。

安装

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

提炼过程经由 ctx.llm 路由——默认复用会话自身的 provider/model,因此 polyglot 风格的 provider 链或你的常规模型也能为它服务。可用 distill.provider / distill.model 覆盖。

配置

所有字段均可选(profile patch 或 cordis.patch.yml):

plugins:
dsh-memory:
enabled: true
home: ~/.dsh/memory # 记忆根目录覆盖(默认:$DSH_HOME/memory 或 ~/.dsh/memory) maxIndexTokens: 800 # 注入的召回索引的硬性 token 上限 maxExpandBytes: 8192 # 单次 memory_expand 摘录的输出字节上限 recall: enabled: true cacheMs: 5000 # 索引缓存 TTL distill: enabled: true provider: deepseek-official # 默认:会话自身的路由 model: deepseek-v4-flash maxTokens: 2048 temperature: 0.1 maxTranscriptTokens: 16000 # 转录上限;超出时丢弃最旧的事件

记忆文件

每条记忆对应一个小型 markdown 文件,是带有 JSON 头部注释的合法 markdown:

The user prefers TypeScript for new projects and tests.

- ~/.dsh/memory//.md — 项目记忆 + 反馈记忆,以会话 cwd 的 basename 为键。
- ~/.dsh/memory/_user/.md — user 类型(跨项目)记忆。
- type:user(跨项目偏好)、project(关于本项目的客观事实)、feedback(用户做出的纠正)。

同名的项目记忆会遮蔽用户记忆。

工具

- memory_read(name) — 完整的记忆文件:名称、类型、描述、正文、引用。
- memory_expand(name, [citation_index]) — 该记忆所提炼自的原始会话日志摘录(无损升级)。使用 ctx.sessionPersistence;引用范围是精确的。

CLI

独立的 dsh-memory 二进制文件,纯 Node(无 harness 包):

dsh-memory list [--project P] [--json] # 列出记忆(用户 + 项目) dsh-memory show [--project P] # 显示一条记忆及其引用 dsh-memory edit [--project P] # 在 $EDITOR 中打开记忆文件 dsh-memory delete [--project P] # 删除一条记忆文件 dsh-memory distill-log [--project P] # 最近的提炼审计条目

--home 覆盖记忆根目录。在会话内,/memory(或 /memory )具有相同作用。

明确的非目标(v0.1)

向量数据库、知识图谱、超出 user 类型的跨项目全局记忆、记忆共享/同步、完整记忆正文的自动注入。每一项都会成倍放大这个插件所质疑的那件事本身的故障面。如果索引增长到超出模型可扫描的范围,那时再考虑嵌入搜索(v0.3,且仅在具备证据的情况下)。

诚实的实验框架这是一个带有明确终止标准的实验,而非一个承诺的产品。在插件被用于插件开发会话进行两周的“吃狗粮”测试之后:成功 = 有具体实例表明,被召回的 memory 节省了一次重新解释或防止了一次重复错误,并且零实例表明,过期的 memory 误导了某个会话且未被引用捕获。如果它未达到这一标准,该仓库将被归档,并附上一份事后剖析 README——关于 agent memory 的一份有记录的负面结果是有价值的开源产出;一个僵尸 memory 插件则不是。

开发

pnpm install
pnpm typecheck # tsc --noEmit
pnpm test # node --test (54 tests: store round-trips, index caps,
transcript bounds, distill parsing/application, CLI)
pnpm build # tsc → lib/
pnpm pack # publishable tarball

测试套件覆盖了规范中的测试目标:黄金蒸馏夹具(录制的会话日志 → 预期的 memory 文件,通过 parseDistillOutput + applyFacts),一次引用往返(distill 消费一个会话,memory_expand 返回的正是那些事件),以及索引上限截断行为。

许可证

MIT
预览分享卡片长什么样 ↓Jesse-njx/dsh-memory
分享 · DeepSeek Harness Hub
Jesse-njx/dsh-memory

提炼会话事实并附原始日志引用,可随时回溯核查

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部