自动提炼会话要点,让新会话记住偏好与经验
33.7/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add yan5236/dsh-memory该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 70 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/26) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包@nanmicoder/dsh-memory(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/24 19:33:19
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 20 处,展示前 14 条)
- 发起网络请求lib/client.js:92
return (await fetch("/dsh-memory/rpc", { - 写入本地文件lib/files.js:32
await mkdir(this.root, { recursive: true }); - 写入本地文件lib/files.js:34
await mkdir(join(this.root, dir), { recursive: true }); - 读取本地文件lib/files.js:49
const text = await readFile(this.rel(relPath), 'utf8'); - 删除本地文件lib/files.js:62
await unlink(target); - 写入本地文件lib/files.js:73
await mkdir(dirname(target), { recursive: true }); - 写入本地文件lib/files.js:75
await writeFile(temp, content, 'utf8'); - 写入本地文件lib/files.js:77
await rename(temp, target); - 写入本地文件lib/files.js:80
await writeFile(temp, '', 'utf8').catch(() => { }); - 读取本地文件lib/files.js:114
names = await readdir(dir, { withFileTypes: true }); - 读取本地文件lib/files.js:129
const info = await stat(abs).catch(() => undefined); - 删除本地文件lib/files.js:202
await unlink(this.rel(`logs/${entry.path}`)).catch(() => { }); - 删除本地文件递归lib/files.js:302
await rm(target, { recursive: true, force: true }).catch((error) => { - 发起网络请求lib/client/index.js:62
const response = await fetch('/dsh-memory/rpc', {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh@deepseek-ai/dsh-llm@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 按会话抽取要点
- 全局归并记忆
- 摘要始终注入
README
由 DeepSeek 最新模型翻译生成English · 简体中文
dsh-memory · DeepSeek Harness 长期记忆插件
把会话历史自动提炼为长期记忆:两阶段管道(逐会话提取 → 全局整合),摘要常驻注入新会话,四个工具按需检索。
为什么需要长期记忆
每次新会话都从零开始,用户要反复重申偏好与约定,助手要重新踩一遍已经踩过的坑。
dsh-memory 在会话结束后自动把值得沉淀的内容提取出来,定期整合成一份高密度导航摘要(常驻注入每次会话)和一份可 grep 的检索手册,让未来的会话:少听重复的偏好说明、少走弯路、复用被验证过的工作流、避开已知的坑。
设计参考了 Codex 记忆系统(两阶段提取/整合、三级制品结构、任务租约、冷却、脱敏),并针对 DSH 重新组合:不需要 SQLite、不需要 git 基线、不需要常驻整合子代理。
功能特性
- 🧠 Phase 1 逐会话提取:会话结束后(防抖,默认 3 分钟)读取会话日志,过滤渲染 → 脱敏 → 交给模型提取结构化记忆(raw_memory + rollout_summary + slug);无价值的会话输出空结果自动跳过(no-op 门槛)。
展开完整文档(README 剩余 1 节)
English · 简体中文
dsh-memory · DeepSeek Harness 长期记忆插件
把会话历史自动提炼为长期记忆:两阶段管道(逐会话提取 → 全局整合),摘要常驻注入新会话,四个工具按需检索。
为什么需要长期记忆
每次新会话都从零开始,用户要反复重申偏好与约定,助手要重新踩一遍已经踩过的坑。
dsh-memory 在会话结束后自动把值得沉淀的内容提取出来,定期整合成一份高密度导航摘要(常驻注入每次会话)和一份可 grep 的检索手册,让未来的会话:少听重复的偏好说明、少走弯路、复用被验证过的工作流、避开已知的坑。
设计参考了 Codex 记忆系统(两阶段提取/整合、三级制品结构、任务租约、冷却、脱敏),并针对 DSH 重新组合:不需要 SQLite、不需要 git 基线、不需要常驻整合子代理。
功能特性
- 🧠 Phase 1 逐会话提取:会话结束后(防抖,默认 3 分钟)读取会话日志,过滤渲染 → 脱敏 → 交给模型提取结构化记忆(raw_memory + rollout_summary + slug);无价值的会话输出空结果自动跳过(no-op 门槛)。
- 🧩 Phase 2 全局整合:按冷却周期(默认 6 小时)把新记忆合并进 MEMORY.md (检索手册)与 memory_summary.md(首行 v1 协议的高密度导航摘要);原始记忆归档轮转,永不重复整合。
- 🛠️ 技能固化:重复出现的可验证流程由整合器固化为 skills//SKILL.md (含 YAML frontmatter 与触发条件),可附带 scripts/ templates/ examples/ 附属文件;过时技能可显式删除。
- 🕰️ 遗忘机制:memory_read / memory_search 的查阅行为会记录使用次数与时间;超过遗忘阈值(默认 30 天)未被查阅的回顾在整合时被标注为「候选遗忘」,由整合器决定是否退役到 rollout_summaries/.retired/(可恢复,不直接删除)。
- 📥 摘要常驻注入:memory_summary.md 内容(有硬上限保护)随 system prompt 注入每次会话,模型无需任何操作就能看到导航索引。
- 🔍 四个记忆工具:memory_list / memory_read / memory_search / memory_add(仅在用户明确要求时写入),模型按需检索细节。
- 🔒 安全纪律:会话内容一律按数据分析(prompt 注入免疫);密钥/令牌/私钥在输入与输出两侧脱敏;记忆路径越界一律拒绝。
- 🔁 可靠调度:每个会话一个租约(KV 持久化),重启不重复处理、不重复整合;失败带退避重试;孤儿租约自动回收。
- 📊 运行记录:每次提取/整合运行(含模型完整产出)持久化到 logs/,设置页可展开查看"AI 到底干了啥",并可打开记忆库管理弹窗浏览任一文件原文。
- 🗂️ 记忆库管理:设置页「打开记忆库」按钮唤出独立弹窗,以 VS Code 风格层级树列出全部文件(文件夹可折叠),支持在线编辑与删除(删除需二次确认),弹窗顶部常驻提醒:记忆文件一般无需人工更改,除非你知道自己在做什么。
- 🎚️ 逐阶段推理等级:Phase 1 提取与 Phase 2 整合可分别设置思考等级(无/低/高/最大,留空跟随模型默认),按需平衡速度与记忆质量;运行记录会标注每次运行实际使用的等级。
- ⚙️ 设置页:设置 → 长期记忆 中查看统计、手动触发提取/整合、查看运行记录、记忆库管理(浏览/编辑/删除)、调整冷却/遗忘阈值/模型路由/推理等级;管道运行中按钮保持禁用(关闭页面再打开也不会误以为已解锁)。
工作原理
会话结束 ──► Phase 1(逐会话)──► rollout_summaries/.md + raw_memories.md │ (冷却到期 / 有新记忆) ▼ Phase 2(全局) │ ┌───────────────────────────┴───────────────────────────┐ ▼ ▼ memory_summary.md(常驻注入每次会话) MEMORY.md(memory_search / memory_read 检索)
安装
[!NOTE]
使用前请确保已安装 DeepSeek Harness。
包名说明:@nanmicoder/dsh-memory 是包标识(@nanmicoder 是 npm 作用域形式, dsh-memory 是包名)。本插件通过 GitHub 分发(不发布 npm),安装方式如下:
dsh plugin --profile web add 'git+https://github.com/yan5236/dsh-memory.git#main'
检查组合配置并启动:
dsh --profile web --dump-config
dsh web
打开 设置 → 长期记忆 查看状态;记忆文件默认写入 $DSH_HOME/memories/。
[!TIP]
若 dump-config 的组合树里没有 - id: dsh-memory 这一行,说明 profile 的 dsh.profile.bundles 数组里没有注册这个包(bundle 补丁层未应用),手动把 "@nanmicoder/dsh-memory" 加进该数组即可。
📋 一键提示词:让 DSH 自己装
不想手动敲命令?把下面这段整段复制,直接粘贴给 DSH,让它完成安装、注册与验证:
请帮我把 DSH 长期记忆插件 dsh-memory 安装到 web profile,GitHub 仓库: https://github.com/yan5236/dsh-memory
要求:
1. 运行 dsh plugin --profile web add 'git+https://github.com/yan5236/dsh-memory.git#main'
2. 检查 $DSH_HOME/profiles/web/package.json:dependencies 里应含 "@nanmicoder/dsh-memory",且 dsh.profile.bundles 数组应包含 "@nanmicoder/dsh-memory"(缺少就补上;bundles 缺失会导致插件补丁层不生效)。
3. 运行 dsh --profile web --dump-config,确认输出中出现 "- id: dsh-memory" 且没有报错。
4. 重启 DSH:先停掉当前 dsh web 进程,再重新运行 dsh web。
5. 验证:设置页出现「长期记忆」;会话工具列表包含 memory_list / memory_read / memory_search / memory_add。
6. 若任一步骤写入 DSH 配置目录($DSH_HOME/profiles)时被权限策略拦截,提示用户切换到 Full access 或批准对应操作,不要绕过或静默失败。
配置
组合 config 提供基础层(cordis.patch.yml 中的 config: {} 使用全部默认值),设置页可覆写常用项并持久化到 DSH 存储:
- id: dsh-memory
config:
memoryRoot: C:/path/to/memories # 默认 $DSH_HOME/memories provider: deepseek-official # 可选:为记忆管道固定模型路由 model: deepseek-v4-flash # 与 provider 成对配置 consolidationCooldownMs: 21600000 # 整合冷却(默认 6 小时) idleDebounceMs: 180000 # 轮末防抖(默认 3 分钟) maxRolloutsPerRun: 3 # 每轮提取的会话数 maxSummaryChars: 8000 # 注入摘要的字符上限
| 配置项 | 默认 | 说明 |
| enabled | true | 总开关 |
| memoryRoot | $DSH_HOME/memories | 记忆根目录 |
| provider / model | 空 | 空则使用部署默认模型 |
| idleDebounceMs | 180000 | 会话轮末后的静默窗口 |
| maxRolloutsPerRun | 3 | 每次运行提取的会话数 |
| extractionConcurrency | 1 | 提取并发(默认串行,对模型提供方更温和) |
| minSessionEvents | 4 | 事件过少的会话直接跳过 |
| maxRolloutAgeDays | 30 | 超龄会话标记跳过 |
| maxTranscriptChars | 60000 | 送入提取模型的会话文本上限 |
| phase1MaxTokens | 4096 | 单次提取输出上限 |
| consolidationCooldownMs | 21600000 | 整合冷却(失败后约 15 分钟自动重试,不受冷却限制) |
| maxRawChars | 120000 | 单次整合的原始记忆输入上限 |
| phase2MaxTokens | 32768 | 单次整合输出上限(全量重写 MEMORY.md 时容易截断,可调至 65536+;上限 131072) |
| maxSummaryChars | 8000 | 注入摘要的字符上限 |
| retryLimit | 3 | 提取失败重试次数 |
| maxUnusedDays | 30 | 遗忘阈值:超过该天数未被查阅的回顾成为候选遗忘(0 = 关闭) |
记忆目录结构
/
├── memory_summary.md # 常驻注入的导航摘要(首行 v1) ├── MEMORY.md # 检索手册:偏好/流程/失败护盾 ├── raw_memories.md # Phase 1 产出,等待整合 ├── raw_memories.archive.md # 已整合原始记忆的历史归档 ├── rollout_summaries/ # 每次会话的回顾(证据层) │ └── .retired/ # 被遗忘机制退役的回顾(可恢复) ├── skills/ # 整合沉淀出的可复用流程(SKILL.md + 附属文件) ├── logs/ # 运行记录(每次提取/整合的完整产出,最多保留 50 份) └── extensions/ad_hoc/notes/ # memory_add 写入的用户要求笔记
开发
pnpm install
pnpm verify
git diff --check
设计文档与威胁模型见 DESIGN.md。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yan5236/dsh-memory
自动提炼会话要点,让新会话记住偏好与经验
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,379已汉化DSH
72
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,228已汉化DSH
71.3
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 695已汉化DSH
69.8
动画花园资源检索yjl9903/AnimeGarden
動漫花園 镜像站 | 动画 BT 资源聚合站 | 动画 BT 资源开放接口
★ 1,391已汉化DSH
69.2
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 510已汉化MCP
67.9
这是你的仓库?认领条目