前言¶
在 DeepSeek Harness (DSH) 的长会话中,默认的 LLM 总结后端会导致窗口耗尽、注意力稀释,并且有损总结会永久丢失精确的错误字符串、命令输出和代码签名。dsh-codex-context 是一个针对这一问题的解决方案,它将默认的后端替换为一个基于 token 预算的滑动窗口,同时保留持久化工作笔记和冷历史搜索能力。
核心功能¶
dsh-codex-context 提供以下能力:
- 分词预算滑动窗口:当活动窗口超过配置的
targetActiveTokens时,引擎向后回溯并遮挡旧节点,直到尾部符合预算。切割会尽量对齐到安全边界。 - 零孤儿边界:利用 Codex 的
normalize不变量,确保工具调用与其结果不被分离。 - 模型无关检查点:在常规窗口操作中写入模板检查点而非调用 LLM,节省成本。
- 紧急降落伞:当压力超过阈值(默认 0.85)时,通过 LLM 生成结构化摘要;若失败则降级为模板检查点。
- 工具:
update_notes:更新持久化工作笔记,固定在模型请求顶部,不受窗口滑动影响。search_history:在完整会话日志上进行正则/关键词搜索,支持冷历史检索。
安装与启用¶
该插件是一个 dsh bundle,通过 cordis.patch.yml 禁用默认的 compaction-basic 行,并挂载 codex-context 行。
本地安装:
dsh plugin --profile demo add /path/to/dsh-codex-context
dsh --profile demo --dump-config # 检查 base compaction-basic 行是否被禁用,codex-context 行是否已挂载
dsh --profile demo
Git 安装(推荐):
dsh plugin --profile demo add github:dvaJi/dsh-codex-context#<sha>
需在 pnpm-workspace.yaml 中添加 allowBuilds: dsh-codex-context: true。
打包安装:
pnpm pack
dsh plugin --profile demo add ./dsh-codex-context-0.1.2.tgz
仅添加工具层:
若需保留原有总结后端并仅添加笔记和搜索工具:
- insert:
- id: codex-context-tools
name: dsh-codex-context/tools
注意事项¶
- 工具名称冲突:不要在同一个上下文中挂载完整的 bundle 条目和
codex-context-tools,两者的工具名称会冲突。 - 查询限制:
search_history拒绝空或仅包含空白字符的查询;拒绝包含嵌套无界量词(如(a+)+)的正则模式,以防止灾难性回溯。 - 权限与来源:插件以当前 DSH 进程权限运行。安装前应检查源码与许可证(MIT)。
- 持久化机制:笔记持久化不需要自定义会话事件类型,它依赖于现有的
user/message源快照和折叠逻辑。
总结¶
dsh-codex-context 通过引入 Codex 风格的无损检索架构,解决了 DSH 在长会话中信息丢失和窗口管理困难的问题。它提供了可靠的冷历史搜索和固定工作笔记,适合需要处理大量上下文和保留精确历史记录的开发场景。
资源:
* GitHub 仓库:https://github.com/dvaJi/dsh-codex-context
* 生态目录:https://www.skillhub.cn/plugins/dvaJi/dsh-codex-context