dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH(DeepSeek Harness)专用的跨会话持久记忆插件:让 agent 记住你的偏好、项目约束与已定决策,并在后续会话自动想起。
记忆落盘在你本地的 memory.json,人类可读、原子写入、重启不丢。
核心定位:极简、纯本地、无向量、无数据库。
兼容性:仅适配
DSH 0.1.2-rc.1(cordis ^4.0.2)。0.x阶段 API 仍可能 breaking,以package.json的 peerDependencies 为准。
| 功能 | 说明 |
|---|---|
| 5 个记忆工具 | memory_save 保存 / memory_search 检索 / memory_forget 删除 / memory_restore 恢复 / memory_suggest 提议(Dock 确认后才真存)——模型对话中直接可调 |
| 按需召回注入 | 每次模型请求前,从用户提问抽 query → BM25F 评分 → 相关记忆追加进对话(只注入相关的,非广播式) |
| 自然对话保存 | 直接说「帮我记住 XX」等自然表达,agent 调 memory_save 落库(不再依赖固定「记住:」句式) |
| AI 建议记住 | 每轮提示词让 AI 自主提炼值得记的偏好/约束/决策,调 memory_suggest 进 Dock 原点附着卡片,点确认才真存(项目/全局自动判断,若无则不提) |
memory.json):无向量库、无需 API Key,BM25F + 标题/标签加权 + 强度/新鲜度strength+1 而非堆重复记录* 跨项目共享——项目记忆不串台对话里直接说就行,网页上也能直接拖:
帮我记住这个项目用 pnpm workspaces,构建命令是 pnpm run build ← agent 调 memory_save 落库
你还记得这个项目用什么包管理器吗 ← 新会话也能直接答
搜一下关于部署的记忆 ← agent 调 memory_search
把那条关于 xx 的记忆删掉 ← agent 先搜出 id 再删
网页上选中一段话 → 拖到右下角原点上松手 ← 拖选即记,不用打开面板
直接对 agent 说「帮我记住……」,它会调 memory_save 落库并回一句确认;把网页文字拖到原点也能直接保存。AGENTS.md 管项目级常驻约束(手写、git 跟踪),本插件管个人级、按需召回的记忆——无关问题零注入,相关才带 1-3 条,不抢 AGENTS.md 的预算。
删除模式(设置卡片里选,默认墓碑机制):
| 模式 | 行为 |
|---|---|
| 墓碑机制(默认) | 标记删除,检索/注入立即不可见;数据仍留在文件里,可在设置卡片点「彻底删除墓碑」一次性物理清除 |
| 彻底删除 | 立即物理删除,不可恢复 |
设置卡片(4 项,保存即生效):
memory_search 不受此限)吉祥物 Echo 回音象的落点 —— 右下角一颗可拖动的原点,所有记忆操作都在这里完成,不用进设置页。
为什么顺手: 别的记忆插件要么得进设置页改,要么得让 agent 帮忙存;原点把“存”和“查”都做成手边动作——看到就拖,想查就点。
和同类插件的区别: ① 纯本地 BM25,无向量库、无需 API Key 也能用,1 万条 4ms 级检索;② 按工作区隔离 + 全局共享,项目记忆不串台;③ 墓碑可恢复,误删可找回;④ 原点是全局悬浮入口,不占对话区,不跟输入框抢焦点。
以 web profile 为例,其他 profile 把
web换成对应名字。已安装 DSH 0.1.2-rc.1 即可,不需要本地 Node / pnpm。
把下面的提示词发给 DSH 的 agent(新建会话粘贴即可),它会自行判断你的 DSH 安装方式并执行与核验:
请帮我安装 dsh-echo-memory 插件(DeepSeek Harness 跨会话记忆插件)到 web profile:
1. 先判断 DSH 安装方式再执行安装(把 web 换成你的 profile 名):
- 若 `dsh --version` 可用(npm 全局安装):执行 `dsh plugin --profile web add github:JxaMe/dsh-echo-memory`
- 若在 deepseek-harness 源码检出目录:执行 `pnpm dsh plugin --profile web add github:JxaMe/dsh-echo-memory`
- 否则(无全局 dsh):执行 `npx @deepseek-ai/dsh plugin --profile web add github:JxaMe/dsh-echo-memory`
2. 若因构建许可失败,按报错提示把 allowBuilds 条目加入本 profile 的 pnpm-workspace.yaml 后重试同一条命令;
3. 确认 node_modules/dsh-echo-memory/lib/ 存在(index.js 与 client.js,构建产物);
4. 确认本 profile 的 package.json 里 dsh.profile.bundles 数组已含 "dsh-echo-memory";
5. 重启 DSH 服务使其生效(按你环境的服务管理方式重启,会中断当前会话),然后确认服务日志出现 [dsh-echo-memory] loaded (memory domain open; tools: memory_save, memory_search, memory_forget, memory_restore, memory_suggest);
完成后向我报告每步结果,有任何一步失败就停下来说明原因。
验证是否装好:日志出现 [dsh-echo-memory] loaded;设置页出现「记忆(dsh-echo-memory)」卡片;新会话让 agent 用 memory_search 试搜任意词。
$DSH_HOME/storages/memory.json(默认 ~/.dsh/storages/memory.json,首次保存时创建),可直接打开查看。memory.json.corrupt-<时间戳> 并用空库启动——数据不丢(备份可手动修复)、插件不瘫痪;打开记忆面板会看到一次恢复提示。1 万条记忆(4.55 MB 真实 json 库)实测:启动加载 65 ms、每轮注入候选 1.7 ms、检索 4.3 ms、保存 45 ms——万级全路径无感,个人使用远到不了这个量级,不引入数据库。
设置卡片覆盖日常使用;以下 4 个键只能通过 ~/.dsh/profiles/web/cordis.patch.yml 的 memory 条目调整(改后需重启):
injectOrder:提示词上下文排序序号(默认 10)contentMaxChars:单条记忆正文长度上限(默认 500)tagsMax:单条记忆标签数上限(默认 8)defaultWorkspace:没有工作区时的归属(默认 * 全局)⚠️ patch 的
config是整键替换:覆盖时需重述要保留的键,只写想改的键会清掉其余键。
# 1. 移除依赖
dsh plugin --profile web remove dsh-echo-memory
# 2. 从 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 数组删除 "dsh-echo-memory"
# 3. 重启 DSH 服务生效
记忆数据 memory.json 不会被自动删除,想清空就手动删掉该文件;settings.yaml 里残留的 memory: 段无害,可手动删除。
persona complete 会屏蔽 systemPrompt.context 注入,因此 memory_suggest 提示词不会注入;手动保存、拖选保存仍然可用。0.1.2-rc.1:其他版本未验证,升级 DSH 前建议先验证。memory.json 是唯一数据源。ctx.memory 服务 API 稳定。memory.json v2→v3 迁移:
embedding / embeddingAt 字段source=auto 统一归一到 agentmemory.json。pnpm run typecheck # 严格类型检查
pnpm run typecheck:strict # 额外检查未使用变量/参数
pnpm run lint # ESLint
pnpm run check:boundary # 核心定位边界检查(极简/纯本地/无向量/无数据库)
pnpm test # 单元/集成测试
pnpm run build # 双半侧构建
CI 会在每次 push / PR 自动运行以上全部检查。