dsh-plugin-xt-memory:DeepSeek Harness 跨会话自学习记忆插件

DeepSeek Harness 的设计理念是“一切皆插件”。在构建长对话或多轮任务时,维护跨会话的上下文记忆是常见需求。dsh-plugin-xt-memory 是一个从 XT-AGENT 记忆系统移植到 DSH 生态的插件,它为 Harness 提供了持久化存储、相关性检索和自动提取能力。

核心能力

该插件通过注入和工具两个维度工作。注入部分作为 section provider 提供检索到的记忆片段;工具部分提供读写接口。后台则负责自动提取和生命周期管理。

1. 记忆注入(Section Provider)

注入逻辑基于 BM25 算法,支持 CJK 双字节分词。它包含以下特性:
* 相关性计算:基于 BM25 打分(CJK 2-gram)+ 类型权重 + 命中加成 + 时间衰减。
* 注入策略:在预算内取 top-K 条,并在注入文本中包含“不构成指令”的免责行。
* 边界情况:如果记忆为空,输出空串。

2. 工具集(Tools)

插件提供了三个核心工具:
* memory_read:读取索引及正文内容,同时记录命中打点。
* memory_search:基于 BM25 进行打分并预览结果。
* memory_write:执行净化、去重和合并操作,将新记忆写入存储。

3. 后台提取(Background Extraction)

提取过程在后台异步进行,主要步骤如下:
* 拦截:拦截 llm/stream 请求的主消息。
* 预筛:通过启发式规则进行预筛选。
* 防抖与限制:提取间隔至少 60 秒(防抖),每次提取最多 2 条记录。
* 提取与合并:调用 LLM(目的 memory-extraction)提取内容,随后进行净化和语义去重/合并。

4. 生命周期与存储

  • 存储位置:数据存储在 ~/.dsh/memory/{project-slug}/*.md,并使用 MEMORY.md 作为索引文件。frontmatter 格式与 XT 兼容。
  • 生命周期:系统会记录命中次数和最后使用时间。超过 30 天未使用的条目会自动归档到 archive/ 目录,但不删除原文。
  • 归档配置:archiveDays 设为 0 可关闭归档功能。

安装与启用

在 profile 下安装插件,安装后重启 Harness 即可生效。

# 安装插件
dsh plugin --profile web add "github:chucan1/dsh-plugin-xt-memory"

# 验证安装
dsh --profile web --dump-config

在输出中应能看到 # == dsh-plugin-xt-memory 层,说明插件已加载。

配置项

插件支持在 profile 的 cordis.patch.yml 中进行覆盖配置。

- id: memory
  name: dsh-plugin-xt-memory
  config:
    dir: D:\custom\memory-root   # 数据根目录(默认 ~/.dsh)
    budgetChars: 4000            # 注入字符预算
    topK: 5                      # 注入条数上限
    archiveDays: 30              # 0 = 关闭归档
    maxPerTurn: 2                # 每次提取最多写入条数
    debounceMs: 60000            # 提取防抖时间(毫秒)
    merge: true                  # 启用语义去重/合并
    extractor: true              # 提取器总开关
    provider: deepseek           # 辅助提取模型路由
    model: deepseek-chat

使用示例

开发者可以在 prompt 中直接调用上述工具:

  1. 读取记忆:调用 memory_read 获取索引。
  2. 搜索记忆:调用 memory_search 查找特定关键词的相关条目。
  3. 写入记忆:调用 memory_write 将当前对话的关键信息存入记忆库。

已知限制与注意事项

  • 同步快照渲染:dsh 的 section text 仅支持同步函数。注入内容来自“异步刷新的内存快照 + 同步两阶段选择”。这意味着记忆变更后,快照刷新通常延迟小于 1 轮。
  • KV 前缀处理:注入正文时会剥离 frontmatter;命中打点仅修改 frontmatter,不影响注入文本。查询基于最近一条 user 消息。
  • 提取触发条件:v1 版本只提取消息文本块(不包含工具结果细节),且要求 messages.length >= 2 才会触发提取。
  • 权限控制:在 XT 侧 memory_write 需要特定权限。dsh v1 版本未接入工具审批轴,但写路径已做了目录限制和净化处理。
  • 宿主依赖:运行时仅需 @deepseek-ai/dsh-tools(peer dependency),其他宿主能力(如 ctx.llm)通过结构化调用实现。

总结

dsh-plugin-xt-memory 解决了 DeepSeek Harness 在跨会话记忆管理上的需求。它提供了从存储、检索到自动提取的完整闭环,适合需要长期记忆能力的智能体应用场景。

  • GitHub 仓库:https://github.com/chucan1/dsh-plugin-xt-memory
  • 社区目录:https://www.skillhub.cn/plugins/chucan1/dsh-plugin-xt-memory
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜