前言¶
在 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 一致)¶
- 记忆引擎里「经验库」Provider 在
memory-providers.json中的dataDir; - 插件
cordis.patch.yml中的dataDir; - 默认
$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