restregular/dsh-memory:本地优先的长期记忆系统

前言

DeepSeek Harness(DSH)采用「一切皆插件」的架构,每个插件都在当前进程的沙箱中运行,通过 Cordis 通信。在构建多会话智能体或长期运行的项目型 Agent 时,会话切换后上下文丢失、规则无法跨会话生效、临时状态被当作永久事实等问题会反复出现。

restregular/dsh-memory 是一个本地优先的记忆系统,通过 JSONL 落盘、本机向量检索和一套工具链,让 Agent 在新会话开始时就能注入摘要,并在每轮按问题召回相关记忆;规则、流程、状态等以不同 kind 管理并通过硬性规则注入系统提示;面板提供可视化的记录管理、作用域控制与权限审批。

是什么

  • 插件名:restregular/dsh-memory
  • 维护者:RestRegular
  • 分类:记忆
  • 核心价值:本地优先的长期记忆,让每次对话都接得上;JSONL 落盘 + 本地向量检索 + 五个模型工具 + 自动召回 + 硬性规则 + 可视化管理面板
  • 技术路径:JSONL 存储 + 本地向量检索(BGE-M3)+ 五个模型工具 + 自动召回注入 + 管理面板

核心功能

六个工具

  • memory_save:保存一条记忆到指定作用域
  • memory_search:按作用域、类型、标签等条件召回,返回印象(id、作用域、类型、标签、短摘要)
  • memory_list:列出记忆
  • memory_get:按 id 获取记忆全文与元数据
  • memory_forget:删除记忆
  • memory_scopes:只读目录,返回作用域名字、用途、当前可读可写状态,不返回正文

四种作用域

  • 会话:仅当前会话可见
  • 项目:当前工作区可见
  • global:全局可见
  • 自定义名:由 Agent 创建,首次创建必须带 scopeDescription(一句话用途),可选带 scopeRule 写一条初始规则

作用域目录与隔离

  • memory_scopes 列出范围内 / 范围外的作用域,并显示用途与读写状态
  • 普通限制下,范围外的记忆可申请(memory_scopes request),审批后写入本会话授权(默认只读,写权限需单独申请)
  • 绝对限制下,范围外作用域正文永不可读、不可写、不可申请
  • 删除作用域记录不会丢失元数据,元数据存储在 <storeDir>/scope-meta/

会话授权(grants)

  • Agent 申请、用户批准的授权单独存储在 <storeDir>/grants/<session>.json
  • 每个作用域可单独设置只读 / 可写
  • 授权只在本会话(及子 Agent)生效;absolute 下授权不生效,作用域被删除重建后按创建代次自动失效

双通道检索

  • 词法(IDF + 中文 bigram)
  • 向量(本机 llama-server 的 OpenAI 兼容 /v1/embeddings)
  • 向量缺席时自动降级为词法,不报错、不阻塞

自动召回

  • 每轮按用户问题召回
  • 新会话第一步注入项目 / global 摘要
  • 发布、部署、工具失败等行为按标签触发定向召回

印象形态

  • 每轮只给每条记忆的短摘要
  • 模型判断相关但需要细节时再 memory_get 取全文,节省 token

硬性规则

  • kind: rule 记忆会进入系统提示常驻段
  • 行首带 8 位 id,注入的是摘要,需要全文时用 memory_get
  • 旧会话会收到新增 / 编辑提醒;超预算有明确警告,不静默丢弃

记忆权限与审批

  • 输入框旁的「记忆权限」按钮设置本会话可读的作用域 + 限制等级(绝对 / 普通 / 无限制)
  • 普通限制下,命中可见域外的记忆时,会在对应会话的输入框上方显示审批卡,支持逐条勾选 / 全选 / 取消全选 / 拒绝
  • Agent 通过 memory_scopes request 申请到的范围外授权直接体现为作用域行的「勾选 + AI 气泡」

修正版编辑

  • 面板里编辑一条记忆 = 新建一条修正版并通过 supersedes 指向旧记录
  • 旧记录不原地修改,默认不再参与检索 / 摘要 / 召回(历史仍可用 memory_get 和面板查看)

状态记忆

  • kind: state 默认 7 天 TTL
  • 注入带「状态,使用前验证」前缀
  • 过期后默认不进检索 / 摘要 / 召回,但 memory_get 与面板仍可取

流程索引

  • kind: procedure 的目录进系统提示
  • 按当前工作区 + 触发词(工具名 / 关键词)列 id · 触发词 → 标题
  • 需要时再用 memory_get 取全文

可视化管理

  • 记录浏览 / 搜索 / 新建 / 编辑 / 删除(编辑生成修正版)
  • 记录页可主动做语义检索(与 memory_search 同一套排序),并有「是否被修正」筛选
  • 记忆树展示作用域、类型与修正链
  • 设置改完即存;导入导出
  • 一键向量后端:面板里下载 llama.cpp 运行时与内置模型,按 CPU / 内存 / 显卡推荐;换模型自动重建向量
  • 跨进程安全:每个作用域一把写锁,锁内重新读盘再合并;多个 DSH 实例或 MCP server 共用一个 store 不丢数据

界面细节

  • 记录页的语义检索:开启后搜索交给向量 + 词法排序,结果按相关度返回并标出得分;只在向量后端已配置时可用
  • 记忆树:按 作用域 → 类型 → 记录 三层展开;supersedes 为关系而不是层级
  • 设置:召回、摘要、印象、策略、状态、流程索引、规则、自动召回逐项开关,修改立即写入 settings.json
  • 输入框的记忆权限:打开会话时读取会话设置,按钮数字为当前生效的作用域数量,边框样式表示限制等级;浮窗列出可选作用域,支持搜索、全选 / 取消全选、绑定 / 可读 / 可写设置;Agent 授权直接体现为勾选 + AI 气泡;取消勾选只是草稿,点「保存」才真正撤销

典型用法

以下用法均来自 README 文档:

  1. 保存一条记忆到当前会话
    - memory_save:在当前会话保存一条记忆
  2. 搜索记忆
    - memory_search:按作用域、类型、标签等条件召回记忆,返回印象
  3. 获取记忆全文
    - memory_get:按 id 获取记忆全文与元数据
  4. 列出作用域
    - memory_scopes:只读目录,返回作用域名字、用途、当前可读可写状态
  5. 申请范围外访问
    - memory_scopes request:在普通限制下申请范围外的记忆访问,走审批后写入本会话授权

适用场景与注意

  • 适合需要长期记忆、跨会话复用规则与流程、以及希望控制敏感内容落地的场景
  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证
  • 记忆默认只落在本机,检索在本地完成;没有向量服务时自动降级为词法,不产生网络请求
  • 建议在 DSH 实例或 MCP server 共用 store 时注意并发写入(通过作用域锁保证数据不丢失)

短结尾

restregular/dsh-memory 提供了一套本地优先、可审计、可视化的长期记忆方案,配合 DSH 的插件化架构,适合需要跨会话持续对话与规则执行的智能体场景。

  • 目录页:https://www.skillhub.cn/plugins/RestRegular/dsh-memory
  • GitHub:https://github.com/RestRegular/dsh-memory
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜