前言¶
在 DeepSeek Harness 的长会话中,历史消息会不断累积。模型在处理新请求时,会重新发送大量已完成的调试日志和废弃尝试,导致上下文窗口快速填满、推理成本上升,甚至让模型在旧信息中分心。
dsh-taskfold 解决这个问题。它通过显式地将工作流包裹在命名的任务中,并在任务完成后将整个跨度折叠为简短的标题摘要,从而保持对话的可读性和低成本。原始内容被完整保存,随时可被检索。
插件定位¶
- 名称:
dsh-taskfold - 类别: 记忆
- 维护者: yindf
- 许可证: MIT
核心功能¶
该插件提供以下能力:
- 命名任务包裹: 将一段工作流包裹在
task_begin和task_end之间,明确界定工作范围。 - 折叠摘要: 任务结束后,将整个对话历史折叠为一个带标题的短摘要,保持会话整洁。
- 按需检索: 通过
fold_recall命令可以随时读取折叠前的原始内容,实现“先折叠,后查看”。 - 持久化存储: 每次折叠都会将原始消息保存到文件中,不会丢失任何信息。
- 与内置压缩互补: 它与 DSH 的内置压缩机制可以共存,配合使用能进一步降低上下文压力。
安装与启用¶
插件通过命令行安装,适用于 desktop 和 web profile。
- 安装插件:
执行以下命令,将插件添加到指定的 profile(默认为desktop):
dsh plugin --profile desktop add dsh-taskfold
若需指定版本以避免安装不可用的版本(如 0.37.7 或 0.38.0),可使用:
dsh plugin --profile desktop add dsh-taskfold@<version>
- 重启进程:
插件组件仅在启动时评估,因此安装后必须重启 dsh 才能生效。
# 安装后重启
restart dsh
使用方式¶
插件安装并重启后,智能体在编写代码时会自动或手动地使用以下命令结构来管理上下文:
task_begin("fix the login bug")
// ... 执行修复工作 ...
task_end("fix the login bug")
当任务完成时,该区间会被折叠为一个短标题摘要,保留关键决策和结果。若需要查看原始内容,可调用:
fold_recall({ fold: N })
注意事项¶
- 版本兼容性: 请勿安装 0.37.7 或 0.38.0 版本,这些版本已被标记为不可卸载且已弃用。
- 文件保存: 插件不会丢弃任何数据,所有折叠的原始消息都会被保存到文件中。
- 启动时机: 插件的组合配置仅在 dsh 启动时加载,因此每次修改配置或安装新插件后都需要重启。
结语¶
dsh-taskfold 通过显式的任务管理和折叠机制,帮助开发者控制长会话的上下文成本。它将“教训”从“冗长记录”中分离出来,让会话保持精简,同时保留了随时回溯原始细节的能力。