メインコンテンツへスキップ
C

dsh-self-memory

cyanxi69-jpg/dsh-self-memory

DSH自记忆插件:结构化记录问题、方案与模型调用,支持加权检索、前提感知排序与外部导入。

インストール

dsh plugin --profile web add github:cyanxi69-jpg/dsh-self-memory

README

dsh-self-memory — DSH 自记忆插件

一句话概览:给 DSH 智能体装上跨会话的「经验记忆」——遇到问题先查历史记录,尝试成功/失败都有回写,并把方法、脚本文件与模型调用全过程沉淀下来,新会话不再重复踩坑。

license node

快速开始(3 步上手)

1. 安装

dsh plugin --profile web add <本目录>

免重启热挂载:对 AI 说 dev_install_package {"dir": "<本目录>"}

2. 验证已生效

对 AI 说:selfmem_status → 应返回 schema=2 records=… solutions=…。 (代码更新后需 dev_reload_package dsh-self-memory,或重启 dsh 由 bundles 重新装配。)

3. 第一次使用

对 AI 说:selfmem_search {"query":"如何识图"} → 返回最匹配的记录列表(问题 + 多个方案,含 hits / 适用前提 / 冲突标注)。

日常闭环:新会话遇到问题 → 先 selfmem_search 查记录 → 有方案就执行,成功 selfmem_hit 标记、失败 selfmem_fail 记根因 → 没有方案就自行解决 → 最后 selfmem_record 把方法写回。

核心能力

#解决的 5 个问题方案
1多关键词关联度keywords{canonicalKey: 权重},检索按权重加权打分
2隐去细节增强泛化记录时自动生成 abstractProblem(版本/路径/哈希/数字→占位符),检索同时匹配原始+泛化文本
3大量案例快速检索lib/indexer.js 倒排索引(canonical key→记录 id),记录 >100 时先取候选集再打分
4前提不同结果矛盾记录级 preconditions + 方案级 appliesTo/conflictsWith/statusselfmem_searchcontext 前提,按前提匹配排序并标注「不适用/矛盾/已废弃」
5关键词规范统一lib/norm.js 同义词表(插件/plugin/模组→plugin),存与查走同一套规范化

工具一览

工具作用
selfmem_search检索既有方案(支持 context 前提过滤/排序)
selfmem_list列出全部记录摘要
selfmem_record记录/追加方案(同问题多方案、前提、矛盾、关键词权重)
selfmem_hit / selfmem_fail方案成功 / 失败回写
selfmem_import外部导入(文件 / 内联 JSON / 文本)
selfmem_status状态与规模统计

使用示例

记录一个带前提的方案

selfmem_record {"problem":"断网时如何安装插件","solution":"解压本地包 → dsh plugin add <目录> → pnpm install → dev_install_package 热挂载","keywords":{"plugin":1,"network":0.6},"appliesTo":{"network":"no"}}

前提感知检索(不同前提返回不同方案并标注)

selfmem_search {"query":"如何识图","context":{"model_vision":"no"}}
→ sol-offline-script(适用);sol-switch-model 标注 [不适用当前前提]

外部导入

selfmem_import {"source":"examples/import-demo.json"}

标记成功 / 失败

selfmem_hit  {"query":"断网时如何安装插件","solutionId":"s-…"}
selfmem_fail {"query":"…","solutionId":"s-…","rootCause":"…"}

记录结构

{
  "schema": 2,
  "problem": "原始问题(含细节)",
  "abstractProblem": "泛化问题(细节隐去,自动生成)",
  "problemType": "…",
  "keywords": { "plugin": 1, "network": 0.6 },
  "tags": ["…"],
  "preconditions": { "network": "no" },
  "solutions": [
    { "id": "s-…", "method": "…", "scripts": [], "modelCalls": [],
      "appliesTo": { "network": "no" }, "conflictsWith": ["s-…"],
      "status": "active|superseded|conflicting",
      "hits": 0, "failedAttempts": 0, "rootCauses": [] }
  ]
}

项目结构(零依赖,纯 JS)

dsh-self-memory/
├── entry.js            # 公共出口
├── index.js            # 核心实现 + 工具注册(含 schema 合法性守卫)
├── lib/
│   ├── store.js        # JSON 持久化(v1 自动迁移 v2)
│   ├── search.js       # 打分:加权关键词 + 泛化 + bigram + 前提匹配
│   ├── indexer.js      # 倒排索引(快速候选集)
│   ├── norm.js         # 关键词规范化 + 同义词 + 问题泛化
│   └── seed.js         # 初始知识
├── tests/              # 单元测试(node:test,零依赖)
├── examples/           # 使用示例(如 import-demo.json)
├── cordis.patch.yml    # bundle 装配补丁
├── LICENSE             # MIT
└── package.json        # dsh.bundle.patch -> cordis.patch.yml

存储位置

~/.dsh/self-memory/records.json{schema:2, records:[...]},v1 自动迁移)。 零运行时依赖,只用 Node 内建模块。

测试

node --test   # 10 个单元测试:norm / search / store / schema(含防 400 事故的 schema 合法性测试)

许可证

MIT — 见 LICENSE

関連プラグイン