背景
当前 subagent 的启动参数里 --llm_no 默认是 0。因此当主窗口已经切换到其他模型(例如通过 /llms 选择了 mixin / GPT / DeepSeek 等)时,如果启动 subagent 时没有显式传 --llm_no,subagent 会回到第 0 个模型,而不是沿用当前窗口正在使用的模型。
这在多模型配置下容易产生两个问题:
- 主窗口和 subagent 的能力/成本/上下文策略不一致,行为不符合用户直觉。
- 当用户选择了 mixin/fallback 路由时,subagent 默认回到单一模型,导致 fallback 策略没有继承。
期望行为
subagent 默认模型应当和当前窗口/父 session 保持一致。
也就是说:
- 当前窗口使用 Claude,则 subagent 默认也使用 Claude。
- 当前窗口使用 GPT/OAI,则 subagent 默认也使用 GPT/OAI。
- 当前窗口使用 mixin/fallback 路由,则 subagent 默认也使用该 mixin/fallback 路由。
- 如果用户显式传入
--llm_no N,则仍然优先使用用户指定的模型。
可能实现
一种兼容性较好的实现方式:
- 把
--llm_no 的 argparse 默认值从 0 改为 None,用于区分“用户未指定”和“用户指定 0”。
- 父 agent 启动 subagent 时,把当前
llm_no 通过参数或环境变量传给子进程,例如:
- 直接追加
--llm_no {parent.llm_no};或
- 设置类似
GA_PARENT_LLM_NO={parent.llm_no} 的环境变量。
- 子进程解析时优先级:
- 显式
--llm_no N > 继承父 session 的 llm_no > fallback 到 0。
这样既能保持现有 CLI 的可覆盖性,也能让默认行为更符合“subagent 是当前会话派生出来的助手”这一用户直觉。
价值
- 减少多模型配置下的意外行为。
- 让 subagent 和主会话在模型能力、费用、fallback 策略上保持一致。
- 对现有显式
--llm_no 用法兼容。
背景
当前 subagent 的启动参数里
--llm_no默认是0。因此当主窗口已经切换到其他模型(例如通过/llms选择了 mixin / GPT / DeepSeek 等)时,如果启动 subagent 时没有显式传--llm_no,subagent 会回到第 0 个模型,而不是沿用当前窗口正在使用的模型。这在多模型配置下容易产生两个问题:
期望行为
subagent 默认模型应当和当前窗口/父 session 保持一致。
也就是说:
--llm_no N,则仍然优先使用用户指定的模型。可能实现
一种兼容性较好的实现方式:
--llm_no的 argparse 默认值从0改为None,用于区分“用户未指定”和“用户指定 0”。llm_no通过参数或环境变量传给子进程,例如:--llm_no {parent.llm_no};或GA_PARENT_LLM_NO={parent.llm_no}的环境变量。--llm_no N> 继承父 session 的llm_no> fallback 到0。这样既能保持现有 CLI 的可覆盖性,也能让默认行为更符合“subagent 是当前会话派生出来的助手”这一用户直觉。
价值
--llm_no用法兼容。