前言¶
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 中才能生效。
- 安装插件
dsh plugin add dsh-thread
- 配置 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"
]
}
}
}
-
依赖与版本
插件会自动解析@thread-memory/core依赖。运行前请确保 DSH 版本为 0.1.5-rc.1,且 SDK peers 被锁定在^0.1.5-rc.1。 -
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