deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:cyanxi69-jpg/dsh-self-memory
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
一句话概览:给 DSH 智能体装上跨会话的「经验记忆」——遇到问题先查历史记录,尝试成功/失败都有回写,并把方法、脚本文件与模型调用全过程沉淀下来,新会话不再重复踩坑。
dsh plugin --profile web add <本目录>
免重启热挂载:对 AI 说 dev_install_package {"dir": "<本目录>"}。
对 AI 说:selfmem_status → 应返回 schema=2 records=… solutions=…。
(代码更新后需 dev_reload_package dsh-self-memory,或重启 dsh 由 bundles 重新装配。)
对 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/status;selfmem_search 传 context 前提,按前提匹配排序并标注「不适用/矛盾/已废弃」 |
| 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": [] }
]
}
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。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。