前言¶
DeepSeek Harness (DSH) 的核心设计是轻量与插件化。在处理 Agent 记忆时,现有方案大多选择“每轮自动注入”,导致记忆内容在每轮对话中重复发送,造成不必要的 Token 浪费。dsh-memory-lite 针对这一痛点,将记忆处理为分层 Markdown,仅在查询时返回命中片段。
这个插件通过“零常驻”和“零依赖”设计,将一次查询的记忆读取量控制在约 700 字符左右,相比全量读取节省约 92%。它既是 DSH 插件,也提供独立 CLI。
核心设计:三条不变量¶
- 零常驻:记忆不进系统提示。插件版唯一的常驻是一个工具 schema(约 50-100 token),记忆内容仅在查询时生成。
- 零依赖:仅使用 Node.js 内置模块,不引入数据库、服务端或后台进程。
- 可溯源:每条记忆都附带
source标记,通过verify命令可核对回原始会话。
安装与启用¶
通过以下命令将插件安装到指定 Profile:
dsh plugin --profile web add github:MiHjy12138/dsh-memory-lite
安装完成后需要重启后端(DSH 装配规则:新增 bundle 不会热加载)。
使用方式¶
本项目提供两种用法,两者共享 src/lib.mjs 实现。
方式 A:作为 DSH 插件¶
安装后,Agent 的工具表中会出现 mem_query。Agent 可直接调用该工具检索记忆。记忆库默认位于工作区的 memory/ 目录下。
方式 B:作为 CLI 工具¶
不依赖 DSH 环境,直接使用 Node 运行。适用于手动检索或非 DSH 场景。
工作流与命令¶
使用插件前,需要完成数据的采集、提炼与构建。
- 采集素材
扫描会话日志,生成.staging目录下的素材文件。
node src/mem.mjs collect
- 构建记忆库
将素材提炼为SUMMARY.md、INDEX.md和topics/*.md。
node src/build.mjs
- 查询记忆
根据关键词检索,只返回命中片段。
node src/mem.mjs query "powershell bom" --n 5
- 溯源核对
验证提取的记忆是否准确对应原始素材。
node src/verify.mjs examples/extracts-example.json --staging examples/staging
功能特点¶
- 分层 Markdown:包含顶层
SUMMARY.md(一句话提炼)、索引INDEX.md和按主题分区的topics/*.md。 - Token 优化:实测查询一次记忆从 11,819 字符降至 738 字符,节省约 92%。
- 零依赖:纯 Node.js 实现,跨平台。
- 摘要税低:常驻摘要仅占全文的 0.9%。
适用场景¶
适合对 Token 成本敏感、需要人工或 Agent 精确控制检索内容的场景。不适合需要语义召回、知识图谱或跨机器同步的场景。
总结¶
dsh-memory-lite 通过分层存储和按需检索,解决了 Agent 记忆检索时的 Token 浪费问题。它不提供自动注入,而是通过显式的 mem_query 工具或 CLI 命令来管理记忆,确保每次交互只传递必要的信息。