dsh-thread: DeepSeek Harness 的会话记忆插件

前言

DeepSeek Harness (DSH) 采用「一切皆插件」的理念。在开发基于大模型的编码智能体时,会话记忆的持久化与上下文传递是核心难点。dsh-thread 插件旨在为 DSH 提供深度的会话记忆解决方案,它通过无损捕获事件流、结构化注入状态以及本地化存储,解决智能体在长时间运行中上下文丢失或记忆碎片化的问题。

是什么

zhaoyuntao-wl/dsh-plugin-thread 是 Thread 生态与 DeepSeek Harness 的深度集成插件。它利用 DSH 原生的通道实现端到端的会话记忆管理。插件通过嵌入式 SQLite 数据库存储事件流,提供确定性检索(基于 BM25)和结构化的状态注入,帮助编码智能体在多轮交互中保持上下文连贯性。

核心功能

该插件主要提供以下能力:

  • 无损捕获:订阅 session/event,将完整的事件流追加到嵌入式 SQLite 数据库中,确保数据不丢失且可幂等。
  • 结构化交付与三重触发:通过首轮锚点(项目身份、行为契约、状态卡片)、压缩后的重锚点以及每轮边界的状态增量,将记忆注入模型上下文。这种设计遵循确定性日志原则,避免每轮都产生大量噪声。
  • 原生查询工具:注册 query_session_memory 工具,支持文件系统风格的导航命令(ls、cd、cat、grep)进行检索。默认使用 BM25 算法进行确定性检索,不依赖嵌入模型。
  • 行为契约技能:注册 thread 技能并注入锚点,确保模型知道它拥有记忆能力。
  • 显式决策与偏好通道:通过 /thread-reg dec 记录决策(支持 --supersedes 进行链式演化),通过 /thread-reg fdb 记录偏好或教训(自动识别“don’t”等否定句式)。
  • 收尾沉积与收件箱:利用收尾词将进行中的目标沉积为待办事项。/thread-cfm 命令提供统一的待办与候选列表视图,支持 do(完成/提升)和 cnl(取消)操作。
  • 资源清理:通过 /thread-rev 命令撤销注册,删除决策、偏好或资产记录,同时处理目标状态机的自愈。
  • 会话隔离:支持 /thread-iso 和 /thread-uniso 切换会话上下文,并通过 /thread-pub 发布隔离期间产生的记忆行。
  • 可选主动压缩:设置 THREAD_AUTO_COMPACT=1 后,插件会在令牌压力阈值触发时静默执行压缩并重锚点。

安装与启用

在 DSH 项目中,插件必须被引用在配置文件的 bundles 中才能生效。

  1. 安装插件
    dsh plugin add dsh-thread
  1. 配置 Profile
    在 ~/.dsh/profiles/<your-profile>/package.json 中添加 dsh-thread 到 bundles:
    {
      "name": "dsh-profile-my",
      "private": true,
      "dsh": {
        "profile": {
          "bundles": [
            "@deepseek-ai/dsh-base",
            "@deepseek-ai/dsh-headless",
            "dsh-thread"
          ]
        }
      }
    }
  1. 依赖与版本
    插件会自动解析 @thread-memory/core 依赖。运行前请确保 DSH 版本为 0.1.5-rc.1,且 SDK peers 被锁定在 ^0.1.5-rc.1。

  2. pnpm 10 兼容性
    如果在 pnpm 10 环境下插件启动失败并报错 “Could not locate the bindings file”,需要在 Profile 目录下重新构建 better-sqlite3:

    cd ~/.dsh/profiles/<your-profile>
    pnpm rebuild better-sqlite3

配置项

插件支持通过环境变量或配置调整行为:

配置项 默认值 说明
budgetLines 200 状态卡片的行数预算
feedbackRows 50 工具守卫所参考的反馈行数
busyRetries / busyRetryDelayMs 20 / 100 SQLite 忙碌重试策略
compactPressureTokens 0 主动压缩的令牌阈值(设为 0 表示关闭,需配合 THREAD_AUTO_COMPACT=1 使用)

命令与用法

插件注册了以 /thread- 开头的命令,支持命令补全和直接执行。

注册资源

# 查看列表
/thread-reg <ast\|dec\|fdb\|gol>

# 注册资产
/thread-reg ast <text>
# 注册决策(支持 --supersedes <id> 进行演化)
/thread-reg dec <text>
# 注册偏好/教训
/thread-reg fdb <text>
# 注册目标
/thread-reg gol <text>

撤销与清理

# 撤销注册(删除结构化行)
/thread-rev <ast\|dec\|fdb\|gol> <ids\|all>

# 撤销目标(放弃目标并自愈 Todo)
/thread-rev gol <ids\|all>

会话管理

# 进入隔离会话
/thread-iso

# 退出隔离会话
/thread-uniso

# 发布隔离期间产生的行
/thread-pub <ast\|dec\|fdb\|gol> <ids\|all>

状态确认

# 查看待办与候选列表
/thread-cfm
# do: 完成或提升候选
# cnl: 取消
# cnl all: 清空所有

技术细节与注意事项

  • 本地优先与无守护进程:插件完全在进程内运行,使用嵌入式 SQLite 存储,无需后台服务或云依赖。离线会话行为与在线一致。
  • 检索机制:默认不依赖嵌入模型,使用 BM25 算法结合 jieba 分词进行检索,并支持引用回溯。
  • 诚实边界:
    • 候选项不会自动生成,自然语言提取偏好/决策功能默认关闭,依赖显式命令。
    • 目标完成检测较为保守(≥4 非ASCII 或 ≥8 纯 ASCII 重叠),短英文目标可能被漏判,建议使用 /thread-rev gol 显式放弃。
    • 决策不会自动过期,需使用 --supersedes 标记过时决策。
  • 开发探针:包内包含 batch0-probe 模块,用于开发时的契约测试。仅在设置 THREAD_B0_PROBE=1 时生效,生产环境默认为惰性状态。

总结

dsh-thread 为 DeepSeek Harness 提供了一套完整的会话记忆方案。它通过确定性日志、结构化注入和本地化存储,帮助编码智能体在复杂的交互场景中保持记忆的准确性与连贯性。插件遵循 MIT 许可证,由社区维护。

  • 目录页: https://www.skillhub.cn/plugins/zhaoyuntao-wl/dsh-plugin-thread
  • 源码: https://github.com/zhaoyuntao-wl/dsh-plugin-thread
羽毛球分组比赛记分
小程序二维码

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

小夜