前言¶
在 DeepSeek Harness(DSH)里跑 Agent 时,模型往往在每一步只发一个工具调用,随后等待结果再决定下一步。多个彼此独立、输入已知的调用被拆成多轮模型—工具往返,会拉长任务时间,也会增加对话轮次。宿主调度器可以并发执行工具,但模型是否在同一响应里合批发调,取决于提示与遵循度,而不是单靠 runtime。
dsh-parallel-tools-prompt 是维护者 lloydzhou 提供的 host-only 插件:通过稳定的依赖感知提示,引导模型把当前已就绪、互不依赖的必要工具调用放在同一响应里。它不新增模型请求、不增加工具、不更改宿主安全分类或调度器;也不是 DAG 执行器,也不保证费用或延迟下降。下文介绍其定位、注入方式、配置与验收边界。
这是什么¶
插件全名 dsh-parallel-tools-prompt,仓库地址 https://github.com/lloydzhou/dsh-parallel-tools-prompt。当前源码版本为 0.2.1-rc.7,许可证 MIT,面向 DSH >=0.2.1-rc.3,Node.js >=24.9.0。
核心价值一句话:用 CONTEXT 提醒和可选的系统提示词片段,向 Agent 说明「先发现动作、再用内部 DAG 判断依赖、在限制内同轮发出就绪且互不依赖的调用」,从而减少本可避免的模型往返。效果取决于模型遵循度、任务依赖与运行环境;README 明确尚未做付费前向 A/B。
社区目录页:https://www.skillhub.cn/plugins/lloydzhou/dsh-parallel-tools-prompt。SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
两条注入通道¶
插件提供两个独立开关,默认只启用 CONTEXT 提醒:
-
contextReminder(默认true)
通过agent/pre-step在下一步骤追加一条 CONTEXT 消息,source.kind为parallel-tools-scheduling,写入会话历史并渲染为 CONTEXT 块,机制与宿主time-context相同。覆盖所有 Agent(含子智能体)、所有 preset 以及无 preset 的会话;presetIds不限制此通道。每个 Agent 最多交付一次,已有或继承的提醒不会重复注入。提醒进入历史,卸载不会删除历史中的内容。 -
systemPromptSection(默认false)
可选。启用后通过systemPrompt.section()注入固定名称parallel-tools:guidance(order 1050,禁止插值),不按轮注入时间戳或工具列表。仅对符合条件的根 Agent 与presetIds生效,默认目标为standard根 Agent,跳过子智能体及不在列表中的 preset。
两者可同时开启;同时关闭则插件不注入任何内容。插件详情页(Plugins → 本插件)提供设置表单,开关即时写入当前 profile 的 patch;contextReminder 在下一步骤生效,系统提示词开关对修改之后重新组装提示词的会话生效。
调度规则(提示词逻辑,非执行器)¶
两个通道共用 src/prompt.ts 中的稳定规则:
- 节点是有用的工具调用;边是必需前序结果、执行条件、审批与共享状态顺序(含先读后改)。
- 就绪指前置已满足、参数已知。将已知、就绪、互不依赖且在工具与输出限制内的调用同轮发出;仅有一个就绪调用时单调用即正确,不为凑批量发明工作。
- 收集证据与汇总判断分开:独立读取可同轮;
test → failure → fix → retest等真实依赖链应保持串行。 - 合批与执行并发分开:同轮多调用减少模型往返;工具是否真正同时运行由 DSH 调度器与安全限制决定。
DAG 仅是内部心智模型,不要求画图或添加调度专用轮次;正常 plan、todo、审批流程仍须遵守。
Skill 分发¶
仓库内 skills/batch-tool-calls/SKILL.md 可将同一规则复制到支持 skill 的其他 agent 工具目录;不支持 skill 的环境可将正文复制进 AGENTS.md / CLAUDE.md 等常驻指令。是否在 DSH 之外有效尚未验证。
开发与辅助脚本¶
维护者提供的本地验证命令:
npm ci
npm run build
npm run typecheck
npm test
npm pack --dry-run
会话离线分析(需显式指定日志文件):
node scripts/analyze-session.mjs --help
node scripts/analyze-session.mjs /path/to/session.v4.jsonl.zstd
可选 debugEnabled 等调试配置仅在 README 中说明,默认关闭;启用时日志含敏感提示内容,需自行管控。
安装与启用¶
README 记载的安装方式为在确认构建通过后,将本插件目录手动加入目标 profile,而非凭仓库名拼接远程 add 命令:
dsh plugin --profile web add .
Desktop 环境将 --profile web 换为 --profile desktop。直接调用插件时默认 enabled: false;通过 bundle 安装时需显式启用。
cordis.patch.yml 或 profile 覆盖示例(注意:config 整体替换、不与 bundle 深合并,覆盖项须写全):
enabled: true
systemPromptSection: false # 默认;设为 true 启用系统提示词通道
contextReminder: true # 默认;所有 Agent(含子智能体),不限 preset
presetIds: [standard] # 默认;只筛选系统提示词通道的目标根 Agent
若覆盖 profile 时省略 enabled: true,会回落为默认 false,插件静默不注入。presetIds 为精确 ID 列表,只控制系统提示词通道;CONTEXT 提醒仍覆盖 PTC、minimal、creator 等 preset。不要把 PTC 加入 presetIds,以免对专用执行模式施加额外系统指导。
安装前请阅读仓库源码与 MIT 许可证;插件在当前 DSH 进程权限下运行,与任何第三方插件相同,需自行评估信任边界。
典型用法与验收¶
- 按上文完成
npm ci/build与dsh plugin ... add .,在配置中设置enabled: true及所需通道开关。 - 在 Web 端打开 Plugins → 本插件,按需切换
contextReminder与systemPromptSection。 - 验收 CONTEXT 通道:会话中出现
source.kind为parallel-tools-scheduling的消息。 - 验收系统提示词通道(若启用):新会话的
system/message中出现Tool-call scheduling:相关片段。 - 评估任务时区分「已就绪但未合批」「尚未发现其他工作」「存在真实依赖」三类情况,避免仅凭单轮单调用或同轮多调用比例断言收益。
适用场景与注意¶
适合谁:已在 DSH 0.2.1-rc.3 及以上使用标准或子 Agent 工具调用、希望用提示减少独立调用的模型往返,且接受「遵循度不确定、无费用保证」的开发者。
不适合的期望:需要确定性 DAG 执行器、自动费用优化、或每轮强制多调用的场景。README 强调成功注入不等于模型遵循,也不等于 runtime 已并发或任务更快更省。
版本与发布:0.2.1-rc.7 跟随 DSH 0.2.1 版本线,RC 序号独立递增;npm 预发布默认 next tag。源码更新后建议重启宿主加载新模块;插件重载会为仍存活的目标 Agent 补挂 section 并覆盖提醒通道。
参考边界:思路借鉴 bash-agent issue、Anthropic 并行调用指南、LLMCompiler 与 Superpowers 等资料,但本插件仅为 DSH 编写的简短提示文本,不移植外部执行器。生命周期测试只证明接入与清理正确,不证明更快或更省。
结尾¶
dsh-parallel-tools-prompt 在不动宿主调度与安全的前提下,用 CONTEXT 与可选系统提示词传递「就绪且互不依赖则同轮合批」的调度指引,并附带设置 UI 与 skill 可复制规则。若需在本地启用,以 README 中的构建与 dsh plugin --profile <name> add . 为准,并用上述验收方式确认注入路径。