OpenViking
volcengine
Self-evolving Context Database for AI Agents. Unify Agent Memory, Knowledge RAG and Skills.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Starry0214/dsh-memory
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
DeepSeek Harness(DSH)全局自动记忆插件:会话开始自动注入记忆、提供 memory_search 检索工具、压缩检查点自动落盘。
设计灵感来自 MiMo-Code 的开源持久化记忆功能(MIT 开源),针对 DSH 生态独立实现。 设计核心:插件自持写入(node:fs 直写)+ 提醒制兜底——压缩检查点由插件直接落盘,不依赖模型回合;写入失败时回退为可执行提醒注入会话。
dsh-memory 让 DeepSeek Harness 真正"记住"你——跨会话、跨项目、零配置。每个新会话自动注入你的画像、偏好与最近进展,AI 不再每次都从零开始。
| 亮点 | 一句话价值 |
|---|---|
| 🧠 跨会话记忆 | 会话开始自动注入记忆,经验无缝衔接,告别重复交代背景 |
| 🔍 精准中文检索 | memory_search 分词 OR 匹配 + 相关度排序,中文友好、实时读盘 |
| 🪶 自动落盘 | 压缩检查点插件直写,无需模型回合;写入失败自动回退提醒制 |
| 💰 前缀缓存友好 | 稳定层只读 + 剥离时间戳,最大化缓存命中率,省 token 成本 |
| 🛡️ 记忆不丢失 | 压缩检查点 + 7 天备份 + 30 天轮转三重兜底 |
一行命令安装,重启即用 → 安装
| 能力 | 说明 |
|---|---|
| 会话开始注入记忆 | 稳定层(global.md + index.md)+ 最近会话摘要,自动注入到每个新会话 |
| memory_search 工具 | Unicode 分词 + OR 匹配 + 相关度排序(TF 加权 + 双分数下限),实时读盘(不依赖注入快照) |
| 检索质量升级 | 中英文混合词拆词、tools/ 记忆文件收录、多命中合并 top N、精确文件名返回全文、0 结果引导 |
| 过期复核提醒 | 知识文件头"最后更新"日期 >180 天未更新时注入人工复核提醒 |
| 压缩检查点自动落盘 | 捕获 /compact 摘要事件,插件 node:fs 直接写入 sessions/今日.md(幂等,带 compactionId 标记),失败才回退提醒制 |
| 备份 / 轮转提醒 | 记忆库 7 天备份、会话摘要 30 天轮转,到期待办注入会话 |
| 超限双轨治理 | 软字节阈值(该整理了)+ 硬字符预算(注入截断点)双轨报告 |
| 多会话去重 | 维护提醒同实例只注入第一个顶层会话,避免并发整理同一文件 |
| 前缀缓存友好 | 稳定层剥离时间戳行,只读不写,DeepSeek 前缀缓存命中率高 |
irm https://raw.githubusercontent.com/Starry0214/dsh-memory/main/install.ps1 | iex
curl -fsSL https://raw.githubusercontent.com/Starry0214/dsh-memory/main/install.sh | bash
脚本自动完成:下载插件 → 写入 <profile>/plugins/memory/index.js → 在 cordis.patch.yml 追加 insert 注册(幂等,重复执行安全)→ 提示重启。
可配置项(环境变量):
| 变量 | 默认值 | 说明 |
|---|---|---|
DSH_HOME |
~/.dsh |
DSH 主目录 |
DSH_PROFILE |
web |
目标 profile |
DSH_MEMORY_RAW |
GitHub raw | 插件文件下载源(可指向镜像) |
配置优先走 设置 → 通用设置 → 记忆(存 ~/.dsh/settings.yaml 的 dsh-memory 命名空间,需安装 client 半区);
也可在 cordis.patch.yml 的 config: 里配(作为默认层 base,settings.yaml 用户配置覆盖它)。
| 配置项 | 默认值 | 说明 |
|---|---|---|
staleSessionDays |
5 |
漏网会话检测阈值(天):超过该天数无交互且未在记忆库落档的会话触发提醒 |
staleAction |
remind |
漏网处理动作:remind=仅注入提醒(默认) |
cordis.patch.yml 示例:
- insert:
- id: dsh-memory
name: ./plugins/memory/index.js
config:
staleSessionDays: 7
staleAction: approval
client 半区(设置界面入口)安装:复制 client/ 到 <profile>/plugins/dsh-memory-client/,建 junction
<profile>/profiles/node_modules/dsh-memory-client → 它,并在 cordis.patch.yml 追加
- insert: { id: dsh-memory-client, name: 'dsh-memory-client' }。
安装完成后重启 DSH,启动日志出现以下行即成功:
[dsh-memory] 已注入稳定层 (N 段)
[dsh-memory] 已注入摘要: YYYY-MM-DD.md
[dsh-memory] memory_search 工具已注册(ctx.tools)
memory_search(query)(如 memory_search 查 OA日志、memory_search 查 global);memory_search(query) 查历史记忆,中文检索友好,实时读盘不依赖注入快照;宿主插件由 cordis 原生 import() 加载,运行在真实 Node 环境——ctx.fs 的沙箱限制只约束会话工具层,插件自身可用 node:fs 直接写入。因此:
sessions/今日.md(先读全量再追加,带 compactionId 标记幂等去重);备份(7 天)、sessions 轮转(30 天)、超限整理仍走提醒制——频率极低,审批成本可控;插件自身只读检查,不写这些文件。
DeepSeek 前缀缓存:命中 0.1 元 vs 未命中 1 元/百万 tokens。稳定层文件只在实质变化时更新,禁止为记录而更新时间戳;注入前剥离时间戳行。
| 指标 | global.md | index.md | 摘要 |
|---|---|---|---|
| 软字节阈值(该整理了,仅告警) | 4608B | 4608B | 4096B |
| 硬字符预算(注入 slice 截断点) | 3000 | 2000 | 1500 |
软阈值提醒整理,硬预算保证不丢内容;截断处加显式注记 [注:原文 X 字符已截断],避免模型误以为"记忆就这么多"。
SessionHeader.origin),避免多个主会话并发整理同一文件;compact 是上下文重置点,但记忆注入仍是会话开始快照(session-start 只触发一次)。故 compact 时注入轻提示"记忆可能已更新,用 memory_search 实时读盘"——不做全量重注入(浪费 token 且破坏前缀缓存)。
session/event 处理器内同步 agent.inject 触发的重入异常,所有 inject 推迟到 setTimeout(0)(发布窗口之外)执行,确保压缩检查点摘要不丢失;homedir() + 环境变量推导,无硬编码绝对路径,克隆即用。~/.dsh/memory/
├── global.md # 全局记忆:用户画像、通用偏好、跨项目经验(稳定层)
├── index.md # 记忆索引:主题 → 知识文件路径(稳定层)
├── knowledge/ # 知识库(21 个 MEMORY-*.md,自包含)
├── projects/ # 项目层记忆
├── sessions/ # 会话摘要(动态层),30 天轮转到 archive/
└── tools/ # 自研工具/脚本登记
@deepseek-ai/dsh-settings 的 installSettingsSection,注册 dsh-memory 设置命名空间(schemastery schema);cordis.patch.yml 的 config: 作 base 默认层,settings.yaml 用户配置覆盖,setSource 实时生效;client/ 目录,独立包 dsh-memory-client):声明 dsh.client + exports['./client'],DSH 前端自动加载手写 bundle(window.__ModuleLoader__.load),通过 ctx.slots.inject('settings.general.item') 在 设置 → 通用设置 → 记忆 注册配置行(漏网检测天数输入 + 动作下拉 remind/silent/approval),ctx.settingsScope.bind 读写宿主配置;无 client 半区时功能不受影响;node:fs 直写压缩检查点摘要到 sessions/今日.md(真实 Node 环境,绕过 ctx.fs 沙箱);compactionId 标记,重复触发/插件重启不重复追加;tools/*.md 记忆文件(修复 记忆插件.md/dsh.md 永远搜不到的漏收录 bug)+ 中文文件名支持;MIT License
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: memory。