Replies: 2 comments
|
已定位根因:subagent 显式指定的模型不生效:workflow 里 |
0 replies
|
如果现在需要“子代理明确指定 flash,不能被父 Agent 的 pro 静默覆盖”,可以直接换一条已经跑通的入口:用 pi2dsh 挂载 Pi 社区的 dsh plugin --profile web add pi2dsh@0.11.0
dsh plugin --profile web add @tintinweb/pi-subagents调用时把 provider/model 钉在同一个参数里: 也可以写在 |
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.
TL;DR
在 workflow 里用
agent(prompt, { model: "deepseek-v4-flash" })显式指定 flash,实际 LLM 调用仍是deepseek-v4-pro。session 日志里全部调用都是 pro、0 次 flash。但指定一个不存在的 model 却会启动失败——说明 model 字段被传递、被校验了,只是最终被覆盖回 pro。疑似断点在packages/core/agent/src/model-selection.ts的installModelSelection():selection.current没有随AgentOptions.model更新,仍指向父 agent(或其默认)的 pro。环境
0.1.0-rc.6,profileweb(bundles:dsh-base+dsh-web-app)deepseek-official,模型目录(见packages/llm/llm-deepseek/src/index.ts):deepseek-v4-flash/deepseek-v4-prodeepseek-v4-pro(~/.dsh/settings.yaml的agent-default-model)复现
在任意 DSH 会话执行一个 workflow,指定 flash:
然后查 session 日志:
对照实验(证明 model 字段确实被传递和校验):
两个实验互相矛盾,说明断点不在传递链,而在最终的 model 选择环节。
详细分析
传递链代码层面是完整的(不是这里断的):
最终 model 选择(
packages/core/agent/src/model-selection.ts):installModelSelection()监听agent/request事件,把selection.current的 provider/model 覆盖到每一次 LLM 调用。而selection.current由入口点设置,与AgentOptions.model是两条路径:packages/bundle/headless/src/index.ts:117):selection = defaultModel.currentSelection()(恒为 pro),再把它塞进agentOptions和selected.current。packages/host/apiproxy/src/api-proxy.ts:1178):selection.current是 getter(picked → logged → defaultModel)。推断:subagent child 创建时,
resolveChildAgentOptions把requested.model=flash写进了AgentOptions.model,但installModelSelection的selection.current没被这个值同步,仍指向 pro,于是agent/request把 flash 覆盖回了 pro。附加发现
CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash这个环境变量不被 DSH 读取(是 Claude Code 的变量),排查时容易误导。dsh-subagent-dsh-sdk(默认model: deepseek-v4-flash的 out-of-process backend,见packages/subagent/subagent-dsh-sdk/src/index.ts:77)存在但未注册——当前 profile 的 node_modules 里没有它,host composition 也没挂它。这本来是一个"默认就走 flash"的现成 backend。期望
subagent 应能通过 workflow 的
agent(prompt, { model })/provider覆盖切到deepseek-v4-flash(或任意已注册模型),而不是被父 agent 模型覆盖。版本信息
DSH:
0.1.0-rc.6(运行时 checkout,@deepseek-ai/dsh链接目录名确认)关键 bundle 版本(
~/.dsh/profiles/node_modules/@deepseek-ai/实测):dsh-basedsh-web-appdsh-tool-workflowdsh-subagentdsh-subagent-fork-in-processdsh-subagent-spawn-in-processdsh-llmdsh-llm-deepseekdsh-workflowdsh-agentdsh-agent-loop环境:
v26.0.015.7.8(Build24G824)deepseek-official,模型目录deepseek-v4-flash/deepseek-v4-proAll reactions