前言¶
DeepSeek Harness (DSH) 采用插件化架构,允许开发者扩展其核心能力。在处理复杂任务时,主对话容易因为频繁读取文件、执行命令或搜索网页而被过程数据淹没,导致上下文膨胀或注意力分散。dsh-multitask 插件旨在解决这一问题,它引入一种“减震器”模式,将主对话转变为协调者,将具体的执行工作下放给子代理。
核心功能¶
该插件通过严格的上下文隔离,区分了主对话(协调者)和子代理(执行者)的职责。
1. 协调者(主对话)职责¶
主对话在启动后仅保留受限的工具集:
* 只读检查:read、grep、glob、file_info
* 任务委派:subagent、subagent_fork、subagent_ptc、subagent_minimal
* 代理控制:send_message、interrupt_agent、list_agents
* 结果检索:job_list、job_output、job_kill
* 工作流编排:workflow
* 交互与自我管理:ask_user_question、todo_write、create_goal 等
协调者的核心工作是理解需求、生成任务简报、验证结果并汇总报告。它无法直接写入文件或运行命令,从而避免上下文被过程数据污染。
2. 子代理(执行者)职责¶
子代理拥有完整的工具集,负责处理所有流程数据,包括文件内容、命令输出、构建日志、搜索结果等。它们只返回最终结论,不将中间数据返回给主对话。
3. 四种子代理类型¶
协调者根据任务需求,可以选择四种不同的子代理:
| 类型 | 工具面 | 适用场景 |
|---|---|---|
subagent |
完整工具 | 通用默认类型,用于写代码、跑测试、编辑文件 |
subagent_fork |
完整工具 + 对话历史 | 需要基于现有对话上下文进行审查或继续 |
subagent_ptc |
PTC 压缩(仅 run_code) |
程序化批量处理(如过滤、聚合大数据),防止中间值进入上下文 |
subagent_minimal |
只读工具 | 调查、快速问答、事实核查 |
安装与启用¶
从发布包安装¶
安装时必须指定 --profile 选项,该选项对应 DSH 的配置文件名称(如 desktop 或 web)。
dsh plugin --profile <profile> add dsh-multitask
安装完成后,DSH 会自动将插件加入配置的 dsh.profile.bundles 列表,并在启动时加载。
从源码安装¶
若需直接运行源码进行调试:
- 在
cordis.patch.yml中添加以下配置,使用绝对路径:
- insert:
- id: multitask
name: 'file:///absolute/path/to/dsh-multitask/lib/index.js?v=6'
- 路径中的空格和
%需进行 URL 编码(如 PowerShell 中可使用New-Object System.Uri生成)。 - 注意:
?v=N是缓存键,仅在file://模式下有效。
注意:从源码安装时,若使用桌面应用,需完全退出应用后再操作,否则会因文件锁定导致安装失败。
典型用法¶
- 创建会话:在创建新会话时,在模式选择器中选中 “Multitask 减震器模式”。
- 提交需求:直接提出你的需求。
- 任务分发:协调者会将需求拆解为独立的任务简报。
- 并行执行:简报会并行分发给子代理执行,协调者继续监控或处理其他逻辑,直到所有子代理完成。
配置说明¶
安装后,DSH 的设置页面会出现相应的配置项。
Multitask 页面¶
- 模型选择:
multitask.subagentModels[]- 为四种子代理类型指定默认模型,可选择“统一使用协调者模型”或“分别指定”。 - 并行限制:
subagent.maxActiveSubagents- 限制同时运行的最大子代理数量。
General 页面¶
- 递归深度:
subagent.maxDepth- 设置子代理递归调用的最大深度(全局生效)。 - 并行限制:
subagent.maxActiveSubagents- 与 Multitask 页面共用同一配置项。
注意事项¶
- 模式选择时机:该模式必须在会话开始前选择。一旦会话开始,工具集和提示词即冻结,无法中途切换。
- 层级限制:委托是单向的一层深度(协调者 → 子代理),子代理无法进一步委托其他子代理。
- 工具白名单:协调者的工具集基于白名单,任何未列出的工具(如
write、edit、pwsh、web_search)默认不可见。
总结¶
dsh-multitask 通过将规划与执行分离,利用子代理处理噪音数据,为主对话保留了高价值信息。这对于需要同时处理多个文件、构建项目或进行复杂搜索的开发场景尤为实用。该插件零依赖,不修改 DSH 源码,可安全集成到现有的插件生态中。