← 返回列表
✓ 可直接安装
DeepSeek HarnessDSH的本地优先、跨会话项目记忆插件。 它把 Agent…
自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/13 · 已提供中文文档
DeepSeek Harness (DSH) local-first cross-session project memory: zero bundled runtime deps, bounded cache-friendly Hot Memory, BM25 recall/cache, provenance, lifecycle and bilingual Web GUI; no embeddings or external service. / DSH 本地项目记忆插件。
综合分
46
GitHub 分
46
用户评分
—
★ Stars
29
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-memoirnpm 包 dsh-memoir 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/17(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-memoir @ 0.7.1
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/17 11:38:50
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-session@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-general@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-host-webserver@deepseek-ai/dsh-llm用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-memoir npm version npm downloads license 中文 · English · 更新日志 · Releases DeepSeek Harness(DSH)的本地优先、跨会话项目记忆插件。 它把 Agent 已确认的工作结论、经验教训和后续行动持久化,在新会话中注入有界且缓存友好的 Hot Memory,并通过本地 BM25 排序召回长尾历史。 无需 embedding、向量数据库或云端记忆服务;npm 包零捆绑运行时依赖,DSH peer 由宿主提供。 [!IMPORTANT] dsh-memoir@0.7.1 修复重启和内存淘汰后旧会话快照丢失(#10),支持 DSH 0.1.5-rc.1 / rc.2。要求 >=0.1.5-rc.1 /PROJECT_MEMORY.md 可读、可提交的投影 └── Retrieval Index 倒排索引 + BM25 + 查询缓存 │ ├── Hot Memory Selector ──> 有界 system-prompt 注入 └── memoir_read / Web ────> 按需召回长尾历史 完整历史与 Hot Memory 是两层数据: - Full Memory 保留全部记录,用于 GUI、人工审阅、Markdown 投影和排序检索。 - Hot Memory 只选择预算内的 actions、lessons 与 recent state;不会把整个 PROJECT_MEMORY.md 塞进 prompt。 - Session Snapshot 按会话持久化冻结注入文本,重启恢复与内存淘汰后仍复用原文。新写入立即可被工具和 GUI 读取,但自动注入从下一个新会话开始更新;恢复失败会显式报告降级。 快照恢复与清理(0.7.1) - 默认目录:$DSH_HOME/dsh-memoir.json.snapshots/;自定义 storePath 时为 .snapshots/。记录按数据源/设置文件的哈希、语言和会话哈希分开保存;按需读取,不在启动时加载全部文件。 - sessionSnapshotMax 只限制内存 LRU。磁盘记录无自动 TTL,不随缩容、卸载或清理内存删除;备份记忆时请一起备份该目录。需要回收磁盘时先停止相关 DSH 进程并备份,再人工删除确定不再恢复的记录。删除后再次访问会建立新基线。 - 语言切换使用独立快照空间;切回原语言会复用其旧基线。预算修改仅影响新基线;fork/新 session id 不借用父会话快照。 - 升级前已丢失快照的旧会话,首次使用新版只能按当前记忆建立一次新基线;不从历史 system prompt 猜测截取原文。读取损坏、权限或锁失败时保留原文件,回退到进程内冻结;诊断页和日志会提示重启稳定性降级。 - 单条文本上限 256 KiB,记录上限 2 MiB;超限走同样的可诊断降级。POSIX 新目录/记录使用 0700/0600,Windows 权限仍由目录 ACL 管理。记录含记忆文本,应视为用户数据。 - 本修复消除可恢复快照的重复重建,不能保证提供商仍保留 KV cache 或保证命中率。 Agent 工具与记忆生命周期 | 工具 | 用途 | | --- | --- | | memoir_record | 写入 work / lessons / actions / note;写前返回可解释的相似或冲突候选 | | memoir_update | 保留 id 和创建时间,更新正文、分类、重要度、标签与生命周期 | | memoir_read | 在 project(默认)/ global / all 范围内进行 compact 或 full 的本地排序召回 | 每条记忆可设 1–5 重要度,默认 3 代表中性优先级;置顶会获得额外 Hot Memory 权重。默认只召回 active,被归档或替代的历史仍可检查和恢复,不会被自动删除。 相似记忆治理复用 BM25 候选,再融合标题相似度与 Token Jaccard。插件只提示疑似重复或冲突,不自行判断真伪;调用者必须选择: - update:原地更新现有记录; - supersede:保留旧历史并标记已被新记录替代; - force-record:确认两条都应存在。 自动蒸馏 v0.6.2 的诊断页显示最近触发或跳过原因及本次进程计数。已经调用 memoir_record 或 memoir_update 的回合不再提醒;提交提醒不代表写入已完成。Agent 销毁会清理门控状态,最多保留 1024 个最近活动 Agent(淘汰后不再保留其回合水位和冷却)。关闭自动蒸馏后仍可手动记录。 当前支持 DSH 0.1.5-rc.1 与最新 rc.2(发布前核验:npm next 为 rc.2、latest 仍为 rc.1)。BM25 是词项召回,不能保证无共同词项的跨语言语义匹配;提炼质量提示也不能替代事实核验。 自动蒸馏是可观察的 Agent 收尾提醒,不是后台静默抓取聊天内容。默认 1 / 0 / 1 表示:每个有效 worked turn、无额外冷却、至少一次工具调用即可提醒。 autoDistillEvery、autoDistillCooldownMin、autoDistillMinTools 三个条件按 AND 判定并按 Agent 隔离。idle、aborted、subagent 和已调用 memoir_record 的回合不会触发;冷却只在提醒成功后更新。所有频率参数都可在 GUI 中即时修改。 language 独立控制 Agent 可见的工具描述、参数说明、蒸馏提示、工具结果、Hot Memory / PROJECT_MEMORY.md 标题以及校验与治理错误。默认 zh 保持向后兼容,也可在 GUI 中切换为 en;切换后工具 schema 与后续提示即时更新,不要求重启 DSH。 本地召回与缓存 - 中文 2/3-gram + 英文单词 + 代码/路径标识符分词; - BM25 文档侧保留真实词频,标题 2.5× 加权,另有精确短语、分类与时间权重; - 标题与正文独立长度归一化; - project / global / all 共用去重后的全局 Top-K; - epoch 感知、1 小时时间桶的 LRU 查询缓存;limit 与输出详略不进入缓存键,因此不同输出形态共享排序结果; - GUI 和 memoir_read 使用同一个 RetrievalEngine,并暴露 hits、misses、evictions、命中率与最近查询耗时。 固定质量集的 Top-5 命中率为 100%,仓库门禁要求不低于 90%。 Web GUI 安装到 DSH alpha 的 web profile 后,Memoir 通过官方 slot 注册原生「记忆」会话视图和「记忆」Settings 分区;布局、导航与卸载生命周期均由 DSH shell 管理,不再通过 DOM 选择器接管旧侧边栏。 - 项目记忆与所有项目的全局记忆;全局视图按项目默认折叠并显示完整生命周期计数; - 状态、分类和关键词筛选,BM25 分数展示; - 新增、编辑、置顶、归档、恢复和替代; - session/turn 来源复制与尽力跳转; - Hot Memory Inspector:下一会话将继承什么; - Retrieval Diagnostics:索引、查询缓存、最近查询和会话快照; - 常驻 记忆浏览 / 记忆设置 / Hot Memory / 诊断 二级导航,各功能区拥有独立有界滚动位置; - 每批渐进展示 20 条记忆或 20 个项目,长正文默认折叠为六行并可显式展开; - 使用 DSH 原生 composer-overlay 契约,长列表可完整滚动且最后一项不会被对话输入框遮挡; - 页签支持方向键、Home、End,项目折叠具备 aria-expanded 与清晰焦点状态; - GUI 跟随 在中文和英文间即时切换;Agent 侧语言由独立的 language 设置控制。 查看更多 GUI 截图 v0.7.1 在 DSH rc.2 中的快照持久化诊断 v0.7.0 在 DSH 0.1.5-rc.1 中的原生记忆设置 v0.6.2 自动蒸馏生命周期诊断 v0.6.1 常驻功能导航与实时设置 v0.6.1 对话视图滚动到底且避让输入框 DSH alpha.2 原生记忆会话视图 记忆生命周期与相似治理 Settings 设置卡 侧边栏对齐 安装与兼容性 | 渠道 | DSH 基线 | 安装方式 | 状态 | | --- | --- | --- | --- | | npm latest(0.7.1) | >=0.1.5-rc.1 =0.1.2-alpha.2 =0.1.5-rc.1 =24.0.0。0.7.1 继续使用原生 conversation.view / settings.section 与 snapshotEvents()。DSH 0.1.5 的会话日志升级至 V3;其迁移与 Memoir 的 store v4 / settings v3 是独立格式。升级 DSH 前备份 DSH_HOME,迁移后的 DSH 会话不能承诺被旧宿主读取。Memoir 本次不迁移或清空记忆,也不启用新动态提示词行为;既有会话快照语义保持不变。 从源码安装 0.7.x 源码: bash git clone https://github.com/Qinling-Melon-Farmers/dsh-memoir.git cd dsh-memoir pnpm install --frozen-lockfile pnpm run build npm install --global @deepseek-ai/dsh@0.1.5-rc.1 dsh plugin --profile web add "link:/absolute/path/dsh-memoir" 存储、隐私与安全边界 text ~/.dsh/dsh-memoir.json 结构化 JSON v4(单一事实源) ~/.dsh/dsh-memoir.settings.json GUI 运行时设置覆盖 /PROJECT_MEMORY.md 从 JSON 生成的人类可读投影 - 无云端记忆库、embedding API 或向量数据库; - 浏览器提交任意绝对路径不能获得写权限,面板写入只接受可信活动工作区或已存在的项目桶; - 浏览器手工记录不能伪造可信 session/turn 来源; - 跨进程写入使用独占锁并在临界区重新读盘,保守回收死亡进程遗留锁; - Windows 路径键大小写归一化,展示路径保留原样; - PROJECT_MEMORY.md 可能被你提交到 Git,敏感内容是否进入仓库由使用者决定。 建议在升级前按自己的备份策略保存上述 JSON 与项目 Markdown。卸载插件不会主动删除它们。 配置 以下字段都可写在 cordis.patch.yml 的 memoir config 中;除 enabled 外,也可从记忆面板或 Settings 设置卡即时修改并持久化。 | 字段 | 默认值 | 作用 | | --- | ---: | --- | | enabled | true | 工具、路由和 prompt 注入总开关 | | language | zh | Agent 可见的 prompt、工具 schema/结果、投影标题与错误语言;可选 zh / en | | announceToAgent | true | 向 Agent 公告记忆工具与规则 | | autoDistill | true | 启用顶层有效回合收尾提醒 | | autoDistillEvery | 1 | 每 N 个 worked turn 最多提醒一次 | | autoDistillCooldownMin | 0 | 两次成功提醒的最短分钟间隔 | | autoDistillMinTools | 1 | 触发回合所需的最少工具调用数 | | hotMemoryTokens | 900 | Hot Memory 常规目标预算 | | hotMemoryMaxTokens | 1200 | 任何会话都不能超过的硬上限 | | readDefaultLimit | 8 | memoir_read 默认结果数 | | readMaxLimit | 30 | 单次召回实时上限 | | sessionSnapshotMax | 128 | 内存快照 LRU 容量,不删除磁盘快照 | | queryCacheSize | 128 | BM25 查询 LRU 容量 | 缩小缓存容量会立即淘汰最旧项;已冻结会话不会因预算修改而重写,以维持 prompt 前缀稳定。“恢复启动配置”会删除 Web 覆盖并回到 profile 的启动值。 性能与验证 v0.5.6 基准(Node 24.19,900/1200 token;完整数据见 bench/report.md): | 记录数 | 索引构建 | 未缓存查询 | 缓存查询 | 相对完整 Markdown 的注入降幅 | | ---: | ---: | ---: | ---: | ---: | | 1,000 | 10.5 ms | 1.190 ms | 4.07 µs | 97.6% | | 10,000 | 126.9 ms | 11.011 ms | 1.45 µs | 99.8% | | 100,000 | 1.68 s | 126.933 ms | 1.42 µs | 约 100% | 基准值取决于机器和语料;它证明的重点是注入预算保持有界、缓存命中路径与记忆总量解耦。 0.7.1 含 202 项测试:Windows 201 项通过、1 项 POSIX 权限测试跳过;Linux 全部通过。覆盖实际跨进程快照恢复、同会话并发写入、LRU、空基线、fork、语言隔离、损坏与权限失败,以及原有 BM25/Hot Memory/工具回归。已核验 DSH rc.1 和最新 rc.2;没有把测试前缀一致性等同于实际账单节省保证。 常见问题 会自动总结所有聊天吗? 不会静默抓取所有对话。插件在符合条件的回合结束时提醒当前 Agent 归纳,Agent 通过公开工具写入,因此过程可观察、可审查。 为什么新记忆的重要度总是 3? 3 是 1–5 标度的中性默认值,避免未显式评分的内容被当成低价值或最高优先级。可在工具参数或 GUI 中调整,置顶另有独立权重。 为什么当前会话没有立刻重新注入刚写的记忆? 会话内 Hot Memory 快照刻意冻结以保护 prompt-prefix cache。刚写内容可立即被 memoir_read 和 GUI 看见,新会话会自动重建并注入。 它会把完整记忆都塞进上下文吗? 不会。只有受 hotMemoryMaxTokens 约束的 Hot Memory 自动注入;完整历史按需检索。 安装后为什么看不到界面? 确认命令包含 --profile web,然后彻底重启 dsh web,仅刷新浏览器页面不够。 开发与贡献 bash pnpm install --frozen-lockfile pnpm run build pnpm run typecheck pnpm test npm run bench 提交前请阅读 CONTRIBUTING.md。版本变化见 CHANGELOG.md,正式包由 tag 工作流通过 npm OIDC 发布。当前 npm 正式版是 v0.7.1,main 与该版本同步。 Apache-2.0
扫码进群