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

跨会话记忆 Towzai/dsh-memory

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

让智能体跨会话记住你的偏好与历史结论

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · search
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/11/02·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 57 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/11/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查⚠ 装前注意

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

展开查看检查明细 ↓

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

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

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

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

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

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
  • 读取本地文件
    lib/index.js:122
    const raw = readFileSync(this.filePath, "utf8");
  • 发起网络请求
    lib/index.js:314
    const res = await fetch(`${this.baseUrl}/api/embed`, {
  • 读取本地文件
    lib/index.js:333
    const match = readFileSync2(file, "utf8").match(pattern);
  • 读取密钥环境变量
    lib/index.js:347
    this.apiKey = options.apiKey ?? process.env.NOUS_API_KEY ?? (options.apiKeyFile ? readApiKeyFile(options.apiKeyFile, options.apiKeyPrefix ?? "sk-") :
  • 发起网络请求
    lib/index.js:355
    const res = await fetch(`${this.baseUrl}/embeddings`, {
  • 发起网络请求
    src/search.ts:110
    const res = await fetch(`${this.baseUrl}/api/embed`, {
  • 读取本地文件
    src/search.ts:157
    const match = readFileSync(file, 'utf8').match(pattern)
  • 读取密钥环境变量
    src/search.ts:184
    this.apiKey = options.apiKey ?? process.env.NOUS_API_KEY ?? (options.apiKeyFile ? readApiKeyFile(options.apiKeyFile, options.apiKeyPrefix ?? 'sk-') :
  • 发起网络请求
    src/search.ts:193
    const res = await fetch(`${this.baseUrl}/embeddings`, {
  • 读取本地文件
    src/storage.ts:167
    const raw = readFileSync(this.filePath, 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

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

功能亮点

  • 跨会话记住偏好
  • 记住历史结论
  • embedding搜索

README

由 DeepSeek 最新模型翻译生成
dsh-memory 🧠 为 DeepSeek Harness(dsh)开发的跨会话记忆插件。 基于 YAML 存储的 remember / recall / view / list / forget / pin 工具,支持 embedding 语义检索、标题优先注入与两级(session/auto)自动注入——智能体“天生带着”记忆,无需记得调用工具。 🎯 注入策略:精准、克制、缓存友好 | 设计原则 | 说明 | | 首轮注入,后续复用 | 固定记忆只在会话第一步注入一次,之后随对话历史自然携带——不再每轮重复渲染 | | 标题优先,按需展开 | 注入的是精简标题(带 id),全文细节通过 view 工具按需展开——prompt 紧凑 | | 动态记忆独立于固定集 | auto 级别记忆按话题检索,不污染固定记忆的注入集,避免重复 | | 不破坏前缀缓存 | 记忆注入后进入历史消息,后续轮次的 system prompt + 历史前缀不变——LLM 的 KV cache 命中率不受影响 | | 来源隔离标注 | 注入记忆带前缀 Retrieved memories from the memory store (not conversation history),模型不会误认为对话历史 | 📊 与其他方案对比
展开完整文档(README 剩余 1 节)
dsh-memory 🧠

为 DeepSeek Harness(dsh)开发的跨会话记忆插件。

基于 YAML 存储的 remember / recall / view / list / forget / pin 工具,支持 embedding 语义检索、标题优先注入与两级(session/auto)自动注入——智能体“天生带着”记忆,无需记得调用工具。

🎯 注入策略:精准、克制、缓存友好

| 设计原则 | 说明 |
| 首轮注入,后续复用 | 固定记忆只在会话第一步注入一次,之后随对话历史自然携带——不再每轮重复渲染 |
| 标题优先,按需展开 | 注入的是精简标题(带 id),全文细节通过 view 工具按需展开——prompt 紧凑 |
| 动态记忆独立于固定集 | auto 级别记忆按话题检索,不污染固定记忆的注入集,避免重复 |
| 不破坏前缀缓存 | 记忆注入后进入历史消息,后续轮次的 system prompt + 历史前缀不变——LLM 的 KV cache 命中率不受影响 |
| 来源隔离标注 | 注入记忆带前缀 Retrieved memories from the memory store (not conversation history),模型不会误认为对话历史 |

📊 与其他方案对比

| 方案 | 每轮注入 | 缓存影响 | Token 消耗 |
| 每轮全量注入 | ❌ 每轮重复 | ❌ 破坏缓存 | 高 |
| 本插件 | ✅ 首轮一次 | ✅ 零影响 | 低 |

✨ 特性

| 特性 | 说明 |
| 六个工具 | remember(写)/ recall(语义检索)/ view(按 id 展开全文)/ list(标题列表)/ forget(软删除)/ pin(强制注入) |
| 标题优先注入 | 记忆以总结标题(带 id)注入而非全文——prompt 精简;细节用 view 工具按需展开 |
| 两级注入 | injectLevel: session 的记忆会话级常驻(首轮注入一次);auto 记忆按话题动态检索 |
| 首轮一次注入 | 固定记忆只在会话第一步注入一次,之后随历史携带——不再每轮重复渲染(省 token、前缀缓存友好) |
| Embedding 检索 | HybridSearch(关键词 2-gram + 本地 ollama embedding,RRF 融合)——能命中关键词检索漏掉的口语化表达 |
| 匹配调优 | 泛词降权(文件/测试/文档…)、关键词至少 2 词命中、检索门控跳过测试性话语(“别管/只是测试”) |
| 来源标注 | 注入记忆带前缀 “Retrieved memories from the memory store (not conversation history)”,模型不会误认为是对话历史 |
| 数据安全 | 串行写入队列(无丢失更新)、损坏文件隔离备份、原子写入、mtime 缓存失效 |

📦 安装

方式一:从 GitHub 安装(源码,需 prepare 构建)
dsh plugin --profile add github:towzai/dsh-memory

方式二:本地路径安装
dsh plugin --profile add ./dsh-memory

方式三:npm 包(如已发布)
dsh plugin --profile add @towzai/dsh-memory

首次 git 安装若被 pnpm 拒绝运行 prepare,按提示把包键加入该 profile 的 pnpm-workspace.yaml:

allowBuilds:
'@towzai/dsh-memory': true

依赖:本地 ollama 实例 + embedding 模型(默认 qwen3-embedding:0.6b,可用环境变量 DSH_MEMORY_EMBED_MODEL 覆盖)。没有 ollama 时自动降级为纯关键词检索。

⚙️ 配置

- id: dsh-memory
config:
file: /path/to/memory.yaml # 记忆文件位置 injectLimit: 8 # 会话级注入条数上限 embedProvider: ollama # ollama(本地,默认)| nous(OpenAI 兼容云端) embedApiKeyFile: '' # 从文件里读第一个 sk-… 当密钥(密钥不进配置/仓库) embedApiKey: '' # 或直接给密钥(优先级最高) embedBaseUrl: '' # 云端 base URL(默认 https://inference-api.nousresearch.com/v1) embedModel: '' # 云端模型(默认 qwen/qwen3-embedding-8b,4096 维) minSimilarity: 0.65 # 语义召回相似度门槛

⚠️ 换嵌入模型或后端会让已存向量失效。维度不匹配会被检测并打 warn(不会静默返回空),需重新 embed 或把模型换回去。

🛠️ 工具

| 工具 | 作用 |
| remember | 保存记忆(content / title / category / tags / importance / forceInject / injectLevel / source) |
| recall | 混合检索(关键词 + embedding)top-N |
| view | 按 id 展开一条记忆的完整内容(标题优先注入的细节入口) |
| list | 标题列表(支持分类/标签/重要性过滤,full 看全文) |
| forget | 软删除(标记 retired,保留历史) |
| pin | 切换 forceInject——行为铁则,始终常驻 |
🗂️ 存储

单个 YAML 文件(默认 memory.yaml)。每条记忆:

- id: MEM-20260814-001
title: "总结标题(缺省自动推导)" # 注入时显示标题 content: "..." category: preference | project | lesson | fact
tags: [tag1, tag2]
importance: high | normal | low
created: 2026-08-14
updated: 2026-08-14
source: user | agent | conversation
retired: false
forceInject: false # 行为铁则:始终常驻 injectLevel: session | auto # 会话级常驻 vs 按需检索
vector: [...] # 1024 维 embedding,写入时自动计算

⚠️ 记忆文件是你的私有数据——请加入 .gitignore,不要提交到仓库。

🔧 架构

src/
├── index.ts # 插件入口:工具 + 会话首轮注入 + pre-step 监听 ├── storage.ts # Storage 接口 + YamlStorage(写队列、mtime 缓存、损坏隔离) ├── search.ts # KeywordSearch / EmbeddingSearch / HybridSearch(RRF)/ OllamaEmbedder ├── inject.ts # selectForInjection / renderSection(标题优先)/ deriveTitle / entryTitle ├── dynamic.ts # DynamicInjector(按会话去重 + 检索门控 + 固定集排除) └── types.ts # 数据模型(预留 vector/scope/weight 字段)

架构说明:docs/architecture.md · 更新日志:CHANGELOG.md。

🗺️ 规划中

计划中的后续功能(尚未实现):

| 功能 | 说明 |
| 反馈评分(weight) | 从隐性信号(使用频率、被忽略、agent 反馈)中学习,按"有用程度"给记忆排序,替代静态的 importance |
| 多作用域隔离(scope) | 按项目/工作区隔离记忆命名空间,互不串味 |
| 自动学习 | 自动从会话中提炼新记忆(需人工确认),而不是只靠显式调用 remember |
| 更多存储后端 | 基于现有 Storage 接口扩展 SQLite / JSON |
| Web 界面 | 在 dsh WebUI 中浏览、编辑、管理记忆(目前只有 agent 侧的 view 工具) |
| 测试套件 | 扩充存储、检索、注入逻辑的自动化测试覆盖 |

⚠️ 注意事项

- 更换 embedding 模型会使已存向量失效(维度不匹配会被检测并告警)
- 插件针对 dsh v0.1.0-rc.5 开发,peerDependencies 版本范围可能需要随 dsh 升级调整
- 依赖本地 ollama——无 ollama 时自动降级为纯关键词检索

🔗 相关引用

本插件属于 DeepSeek Harness(dsh)插件生态。

- 官方仓库:deepseek-ai/deepseek-harness
- 插件开发文档:docs/user/develop——插件生命周期、配置与发布指南
- 生态话题:dsh-plugin

📄 许可证

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

让智能体跨会话记住你的偏好与历史结论

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