前言¶
在 DeepSeek Harness(DSH)里跑长会话,常见两个麻烦:一是上下文窗口有限,早期定下的结论被挤出窗口后,模型就「忘了」;二是换一个会话,上次记下的重点带不过去。常见对策是把摘要塞进 system prompt,但那只作用于辅助提示块,真实对话历史原样增长,token 占用照涨。
下面介绍的 dsh-plugin-context-manager 针对的就是这两点:自动记录每轮对话,按优先级把记忆与跨会话置顶笔记注入每次模型请求,并且直接折叠模型可见的真实对话历史来降低 token 占用。
这是什么¶
dsh-plugin-context-manager 是 luxiwusuobuneng 维护的 DeepSeek Harness 自定义插件,README 标题写作 dsh-context-manager(上下文管理插件),采用 MIT 许可证。一句话定位:自动记录每轮对话,按优先级注入记忆与跨会话置顶笔记,并折叠真实对话历史以节省 token;数据全部落盘,持久化、重启安全。
仓库拆成三个包,各管一层:
| 包 | 所在层 | 职责 |
|---|---|---|
dsh-context-manager-service-luxi |
Host | 持久化存储、全局记录、Remote API,以及根平面 agent/pre-step 监听器:执行排队的历史折叠、把记录与自定义文本注入真实消息流 |
dsh-context-manager-agent-luxi |
Agent preset 行 | 仅保留回退注入:injectIntoMessages: false 时把记录注入 system-prompt 快照。记录逻辑已退役(2026-08-17 起由服务端全局接管) |
dsh-context-manager-ui-luxi |
Web 层行 | 浏览器 UI:输入框右下角「上下文」按钮与管理窗口 |
核心功能¶
自动记录与优先级注入¶
每轮对话自动记录成一条记录,按优先级存储:index 0 最重要,注入时按这个顺序取前 N 条。开启 summarize: true 后,每轮交换会异步调用当前默认模型路由,提炼「总结/描述」两行;调用失败自动回退为截断。
记录有上限:超过 maxRecordsPerSession 时,删除 createdAt 最旧的非置顶记录,置顶记录不受上限影响。记录范围是所有 preset 的根会话;子代理和工作流子会话不记录,避免污染与 token 浪费。
置顶笔记与自定义文本进入真实消息流¶
置顶(⭐)记录和「注入设置」里的自定义文本,会作为一条真实消息前置注入每次模型请求,由服务端在 pre-step 修改 messages 实现(injectIntoMessages),而不是只放进辅助提示块。
真实对话查看与手动折叠¶
conversationList 列出模型实际看到的每条消息,含角色、文本、token 估算和总占用,也包括之前折叠留下的摘要节点。
foldRange 在「真实对话」里选中一段消息范围排队,下次对话开始时由服务端在 agent/pre-step 内执行 compaction.compactRegion(),把旧文本真正折叠成一条摘要,降低 token 占用。折叠需在回合内执行,所以是「下一条消息后生效」;foldStatus 可查询排队与执行状态。
浏览器管理窗口¶
安装后在网页输入框右下角出现「上下文」按钮,点开是管理窗口,含记录、真实对话、注入设置等标签页,支持搜索、编辑、跨会话置顶、拖拽排序、导出、清空。
运行时可调与持久化¶
注入条数(maxInjected)、字符预算(maxInjectionChars、maxCharsPerRecord)、记录上限(maxRecordsPerSession)等通过 setSettings 运行时覆盖并持久化,不用改配置重启。记录、注入、排队中的折叠、折叠审计全部落盘,重启后照常工作。
安装与启用¶
先说清楚:这是手动多步安装,不是标准的一键安装。流程是先复制三个包目录,再手动接线 cordis.patch.yml,最后重启 DSH。
第一步,复制包文件。把 dsh-context-manager-service-luxi、dsh-context-manager-agent-luxi、dsh-context-manager-ui-luxi 三个文件夹完整复制到 C:\Users\你的用户名\.dsh\profiles\node_modules\;或者在仓库根目录执行下面的命令,由脚本自动复制:
powershell -NoProfile -ExecutionPolicy Bypass -File .\install.ps1
install.ps1 只负责复制三个包,不修改 cordis.patch.yml,接线要手动完成。如果输出 [FAIL],说明对应包的源目录缺少 package.json,先检查目录摆放。
第二步,接线。编辑 %USERPROFILE%\.dsh\profiles\web\cordis.patch.yml,向 insert 列表追加三行。若文件里已经有 - insert: 开头的内容,把三行并进去,不要重复键:
- insert:
- id: compaction-passive
name: '@deepseek-ai/dsh-compaction-basic'
config:
auto: false
- id: context-manager
name: 'dsh-context-manager-service-luxi'
config:
maxRecordsPerSession: 200
injectIntoMessages: true
maxInjectionChars: 800
maxInjected: 5
maxGlobalInjected: 3
maxCharsPerRecord: 200
summarize: true
maxSummaryChars: 400
maxDescriptionChars: 200
summarizeTimeoutMs: 20000
summarizeMaxInputChars: 6000
summarizeMaxOutputTokens: 300
- id: context-manager-ui
name: 'dsh-context-manager-ui-luxi'
上面是示例默认值:maxInjected 是每次注入取前几条记录,maxRecordsPerSession 是单会话记录上限,summarize 相关项控制 LLM 总结的长度与超时,都可按需调整。
接线有三条约束:
1、compaction-passive 行是浏览器折叠按钮的依赖,缺行只影响折叠功能,不影响记录。
2、UI 行必须挂在 web 组合(loader 条目);挂到 agent preset 行不会被 clientModules 扫描,bundle 会 404。
3、dsh-context-manager-agent-luxi 行是可选的,只在 injectIntoMessages: false 时提供回退注入,不挂不影响功能。
第三步,验证。经过上面的步骤后,完全重启 DSH(Service/Agent 是进程启动时加载,热重载无效),打开网页版对话界面,输入框右下角出现「上下文」按钮、点击能打开管理窗口,即安装成功。
之后的升级:只改包内代码时,重复第一步和第三步即可。Service 改动必须重启 DSH;纯 UI(client.js)改动刷新浏览器页面即可。
典型用法¶
折叠一段真实历史¶
在管理窗口的「真实对话」页选择一段消息范围执行 foldRange,折叠会在下一条消息时于 agent/pre-step 内执行生效。程序化调用走 Remote API,例如:
connection.rpc.call('/api', 'contextManager/foldRange', { args: { sessionId, start, end } });
connection.rpc.call('/api', 'contextManager/foldStatus', { args: { sessionId } });
第一行排队一次折叠请求,第二行查询它的执行状态。
Remote API¶
浏览器通过 connection.rpc.call('/api', 'contextManager/<method>', { args }) 调用 Remote API,方法包括:list、count、record、remove、reorder、update、setGlobal、clear、listGlobal、compact、conversationList、foldRange、foldStatus、setInjectionText、getInjectionText、getSettings、setSettings、clearAll。其中 setSettings 的运行时覆盖会持久化,重启不丢。
适用场景与注意¶
适合谁:
1、长会话跑得久,早期信息被挤出窗口,想让旧文本真正离开上下文,而不只是在旁边加一份摘要。
2、跨会话要带固定约定或笔记,用置顶记录注入所有会话。
3、需要核对模型实际输入:先用 conversationList 看每条消息的角色、文本与 token 占用,再决定折叠和注入。
注意:
1、安装是手动多步流程,install.ps1 不负责接线,cordis.patch.yml 要自己改。
2、折叠按钮依赖根平面的 compaction-passive 行;缺行只影响折叠,不影响记录。
3、dsh-context-manager-agent-luxi 的记录逻辑已退役(2026-08-17 起由服务端全局接管),只保留回退注入。
4、折叠需在回合内执行,效果落在下一条消息之后,不是立即生效。
5、插件以当前 DSH 进程权限运行,安装前建议通读源码,确认 MIT 许可证与代码行为符合你的使用要求。
小结¶
dsh-plugin-context-manager 把记录、注入、折叠、查看收进一个插件,注入与折叠都作用于真实消息流,持久化和运行时可调让日常使用少一次重启。安装步骤比一键安装多几步,但每一步的结果都可验证,适合需要长期维护 DSH 会话上下文的开发者。
- 目录页:https://www.skillhub.cn/plugins/luxiwusuobuneng/dsh-plugin-context-manager
- GitHub:https://github.com/luxiwusuobuneng/dsh-plugin-context-manager
目录页来自独立的社区插件目录,与 DeepSeek、幻方无官方从属关系;在 DSH「一切皆插件」的理念下,这类第三方插件是对生态的补充。