dsh-exp-lib-provider: Providing dsh-mnemon with experience library memory space and JitRL retrieval tools

前言

在 DSH 里做长期任务时,模型往往只能依赖当轮上下文或通用记忆插件的「记一句、搜一句」。做法与结果若分散在对话里,接同类任务时很难按「哪种做法更占优」来排序。社区维护者 yhPrime 的 dsh-exp-lib-provider 把「经验库」做成 dsh-mnemon 的一个记忆空间 Provider(typeId:exp-lib),并用 JSON 文件持久化;写入只走 exp_record,读取走 exp_recall 或与记忆插件同一套检索语义。有成败对照时按 JitRL 优势(Â = Q̂ − V̂)排序;没有对照时在返回里说明「Â 不具区分度」,改按证据强度排序,不假装有区分度。下面介绍它提供什么、如何安装启用,以及工具与面板的典型用法。

这是什么

项 说明
包名 / 目录 dsh-exp-lib-provider / SkillHub 目录页
源码 GitHub:yhPrime/dsh-exp-lib-provider
维护者 yhPrime
分类 记忆
当前版本(资料) 0.3.0
许可证 MIT

形态是本地 Provider(locality: local,workspaceBinding: optional-override),同时作为普通 DSH 插件注册 exp_record、exp_recall、exp_type 三个工具,与 Provider 共用 <dataDir>/exp-lib.json 一份数据。

核心能力

记忆空间 Provider

Provider 侧能力包括 search / browse / graph / entities / forget;remember: false(通用写入被禁用,须改用 exp_record)。writeMode: exact、deletionMode: soft(软删墓碑,保留 30 天后启动时清理)。

可选配置字段 dataDir:默认 $DSH_HOME/exp-lib/provider-data,支持 ~ 开头;一般跟随记忆引擎面板里的设置,不必在 cordis 里重复写。

数据文件结构:{ version, types[], experiences[] }。

三个工具

  • exp_record(intent, action, outcome?, type?, note?):写入唯一入口。重复做法就地更新;同意图换做法时在双方均为正回报才取代旧条,否则保留对照样本。
  • exp_recall(intent, limit?):召回层 v2 检索后排序;顶层 mode 为 advantage 或 evidence,并附带路由信息(0.3.0 起默认分簇路由)。
  • exp_type:类型 list / create / rename / merge / assign / delete;业务类型按需创建,有四道限制(规范化、近似合并、泛化名归「未分类」、数量与频率上限)。

排序与召回

  • 邻居里存在成败对照且 advantage 极差 ≥ 0.05 → advantage 模式:rank_score = Â × confidence。
  • 样本回报几乎相同 → evidence 模式,按相似度 × 支持度 × 证据质量,并在说明中写明 Â 不具区分度。
  • 召回层 v2 使用查询覆盖、对称 Jaccard、artifact 覆盖等组合相似度;artifact 按语义组归一(如 pptx、幻灯片归 ppt)。
  • 分簇路由(0.3.0):exp_recall 默认先做确定性簇路由(本地纯函数,不调 LLM);配置 routing: 'on' | 'shadow' | 'off'(默认 on)。

面板

记忆 Provider 列表可开关「经验库」并配置 dataDir;记忆空间内可检索(含 JitRL 优势排序)、浏览内容、实体、图谱(含「取代」边)。禁用插件后,每轮追加的有界提示段(order: 160)也会消失;config.hint: false 可单独关闭提示。

安装与启用

前置:DSH 里已安装 dsh-mnemon(记忆插件)。本包既是记忆空间 Provider,也自行注册工具,需要「装插件 + 挂 Provider + 两处开关都打开」。

1. 安装插件包

资料中的安装示例使用 tarball(避免 dsh plugin add <目录> 的 pnpm link 导致宿主依赖解析失败):

dsh plugin --profile <profile> add ./dsh-exp-lib-provider-0.3.0.tgz

改源码后需重新 pack 再 add 才会生效。

2. 在插件管理里启用

dsh plugin add 不会自动写入 dsh.profile.bundles;须在插件管理里启用 dsh-exp-lib-provider,否则三个工具与每轮提示段不会出现。

3. 挂载 Provider(一次性)

备份 profile 的 cordis.patch.yml 后,在已有 - id: mnemon-source-memory-spaces 条目的 providers 列表末尾增加:

      - use: dsh-exp-lib-provider
        instanceId: exp-lib

仅当记忆插件使用自定义存储根且自动找不到 memory-providers.json 时,才在此补 config: { mnemonDataDir: ~/.mnemon }。数据目录通常在面板「记忆引擎 → Provider → 经验库」里设置,工具会自动跟随。

4. 重启 DSH

重启后:记忆插件 → 记忆空间 → 新建,Provider 选「经验库」。插件管理与记忆引擎里「经验库」Provider 的开关都要打开。

典型用法

记录与召回

模型在任务中应通过工具写入意图、做法与结果(成功、失败、被纠正均需记录;同一意图换做法时复用同一 intent,否则库中缺少负样本,排序无法区分):

  • 写入:exp_record,可选 type、note、outcome。
  • 接任务前:exp_recall(intent, limit?),阅读返回中的 mode、route、brief 与候选条目。

类型管理

安装后仅有系统兜底类型「未分类」。业务类型多在 exp_record 时命名并自动创建;也可用 exp_type 的 list、merge、assign 等修正分类。

数据目录优先级(工具与 Provider 一致)

  1. 记忆引擎里「经验库」Provider 在 memory-providers.json 中的 dataDir;
  2. 插件 cordis.patch.yml 中的 dataDir;
  3. 默认 $DSH_HOME/exp-lib/provider-data(无 DSH_HOME 时用 ~/.dsh)。

可选:记忆空间卡片页脚统计

三方 Provider 默认页脚不显示条数;仓库提供 tools/patch-memory-spaces-footer.mjs 对 dsh-mnemon-source-memory-spaces 客户端 bundle 打补丁,有 stats 时显示「N 条经验」等。升级 memory-spaces 后需重跑脚本。

node tools/patch-memory-spaces-footer.mjs --check-only
node tools/patch-memory-spaces-footer.mjs --profile <名>

适用场景与注意

适合谁:已在 DSH 中使用 dsh-mnemon,希望把「做法—结果」沉淀为可检索经验,并在有对照样本时用 JitRL 优势排序、在无对照时不伪造区分度的开发者与 Harness 使用者。

务必注意:

  • 插件以当前 DSH 进程权限运行;安装前应阅读 GitHub 源码 与 MIT 许可证,自行评估数据落盘路径与内容安全。
  • 不要用通用 remember 写入本空间;Provider 已禁用该入口。
  • SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与版本以仓库与目录页实时信息为准(资料抓取时 GitHub 星标为 1)。

维护者提供的只读体检与测试(在开发树中,发布包不一定含 tests):

node tools/audit.mjs <dataDir>

结尾

dsh-exp-lib-provider 把经验库接到 dsh-mnemon 的记忆空间,并用 exp_record / exp_recall / exp_type 约束读写语义与 JitRL 排序口径;0.3.0 起增加本地分簇路由以收窄召回。进一步细节见仓库 README。

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

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

Xiaoye