[Bug] Subagent 工具未暴露 model/provider 参数,子代理强制继承父代理模型导致无法按需切换模型 #4193
Unanswered
xiaozishenghuo
asked this question in
Q&A
Replies: 3 comments
0 replies
|
你的定位是对的: 但你要的结果(同一会话里贵模型主 agent + 便宜模型子代理,派发时指定)今天可以拿到,用另一条子代理运行时: dsh plugin --profile <你的 profile> add pi2dsh
dsh plugin --profile <你的 profile> add @tintinweb/pi-subagents
# 装完重启 dsh
需要说清楚的边界:这不修复 DSH 原生的 验证记录:examples/subagents · 验收报告(真 DSH loop 上跑的,含派发、后台、mid-run steer、resume、跨重启复开)。 4377 万 token 那一笔,实在是贵了。 |
0 replies
|
已修。subagent 工具现已支持按调用选择子代理模型、提供商与推理强度:
获取修复: 更新到最新版 (npm latest=0.1.5-rc.1) 或拉取 master。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
问题描述
subagent 和 subagent_fork 工具在调用时只接受 description、prompt 和 run_in_background 三个参数,不提供 model 或 provider 参数供模型或用户在运行时指定子代理使用的模型。
当预设配置(agent.cordis.yml)中未显式设置 agentOptions 时,resolveChildAgentOptions 函数会静默地将父代理的 provider、model 和 maxTokens 复制给子代理(见 @deepseek-ai/dsh-subagent/child-agent.js 第 51-62 行)。这意味着用户无法在不修改配置文件的情况下,让子代理使用与父代理不同的模型。
复现步骤
在 settings.yaml 中将默认模型配置为一个较贵的模型(例如 mimo-v2.5-pro)
同时在 llm-pi-ai.providers 中配置一个免费或低成本模型(例如 ox-alpha-free)
创建一个会话,调用 subagent 工具委托一个任务
观察子代理实际使用的模型——始终为父代理的 mimo-v2.5-pro,无法通过任何工具调用参数切换为 ox-alpha-free
期望行为
subagent 工具应暴露可选的 model 和 provider 参数,允许模型在调用时指定子代理使用的模型。例如:
json
复制
{
"description": "小说优化",
"prompt": "请使用 ox-alpha-free 模型优化以下文本...",
"model": "ox-alpha-free",
"provider": "opencode-go-glm-2"
}
当这些参数未提供时,继承父代理模型是合理的默认行为;但应当允许覆盖。
实际行为
subagent 工具的参数定义中没有 model 或 provider 字段
agentOptions 仅存在于工具的配置层(预设文件),不在运行时调用参数中
子代理无条件继承父代理的模型,没有任何提示或警告
用户在不知情的情况下,所有子代理任务的 token 消耗都计入父代理模型
影响
成本问题:用户以为子代理在使用免费/低成本模型,实际所有 token 消耗都走父代理的高价模型。在本次案例中,一天内因小说优化任务消耗了 43,777,176 token,全部计入 mimo-v2.5-pro,而用户预期使用的是免费的 ox-alpha-free
工作流灵活性受限:无法在同一会话中混合使用不同模型(例如用便宜模型做批量处理、用贵模型做精细推理)
缺乏透明度:子代理继承模型的行为是静默的,工具描述中没有任何提示告知用户"子代理将使用与当前会话相同的模型"
与 workflow 工具不一致:workflow 工具的 phases 支持 per-phase 的 provider/model 覆盖,但 subagent 工具不支持,设计不统一
All reactions