dsh-parallel-tools-prompt:用依赖感知提示减少工具调用往返

前言

在 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 提醒:

  1. contextReminder(默认 true)
    通过 agent/pre-step 在下一步骤追加一条 CONTEXT 消息,source.kind 为 parallel-tools-scheduling,写入会话历史并渲染为 CONTEXT 块,机制与宿主 time-context 相同。覆盖所有 Agent(含子智能体)、所有 preset 以及无 preset 的会话;presetIds 不限制此通道。每个 Agent 最多交付一次,已有或继承的提醒不会重复注入。提醒进入历史,卸载不会删除历史中的内容。

  2. 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 进程权限下运行,与任何第三方插件相同,需自行评估信任边界。

典型用法与验收

  1. 按上文完成 npm ci / build 与 dsh plugin ... add .,在配置中设置 enabled: true 及所需通道开关。
  2. 在 Web 端打开 Plugins → 本插件,按需切换 contextReminder 与 systemPromptSection。
  3. 验收 CONTEXT 通道:会话中出现 source.kind 为 parallel-tools-scheduling 的消息。
  4. 验收系统提示词通道(若启用):新会话的 system/message 中出现 Tool-call scheduling: 相关片段。
  5. 评估任务时区分「已就绪但未合批」「尚未发现其他工作」「存在真实依赖」三类情况,避免仅凭单轮单调用或同轮多调用比例断言收益。

适用场景与注意

适合谁:已在 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 . 为准,并用上述验收方式确认注入路径。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜