fix: agent maxBudgetUsd/maxTurns 回退到 config.claude 而非硬编码 $5 - #239
Conversation
|
Claude finished @lishuceo's task in 1m 14s —— View job Code Review
Verdict: ✅ Approved修复精准、改动小、回归测试覆盖到位。 分析根因诊断准确。 类型安全。
类型对齐,无 回退链清晰。 新链路: 测试覆盖完备。 4 个新增 case 覆盖三层优先级 + maxBudgetUsd/maxTurns 两个字段。 备注(非阻塞)
|
未配置 maxBudgetUsd 的 agent(如 pm)原先回退到硬编码 $5,导致 CLAUDE_MAX_BUDGET_USD env 完全失效。修复后回退顺序:agent 显式 > 文件 defaults > config.claude(env)。 maxTurns 同步修复。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
覆盖: - 缺省时回退到 config.claude.maxBudgetUsd / maxTurns - 文件级 defaults 优先于 config.claude - agent 级显式值优先于 defaults 和 config.claude Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
62d721b to
018683b
Compare
|
Claude finished @lishuceo's task in 1m 2s —— View job Code Review
Verdict: ✅ Approved修复精准、改动最小、回归测试覆盖到位。同步事件下 diff 范围未变(仍是 +73/-2,2 个文件),与前一次 review 结论一致。 关键验证点根因诊断准确。 类型安全。 字段类型对齐,无
回退链清晰。 新链路: 测试覆盖完备。 4 个新增 case 精确覆盖三层优先级 × 备注(非阻塞)
|
背景
土豆儿在 p2p 跟 pm agent 对话时遇到
Reached maximum budget ($5),但部署 envCLAUDE_MAX_BUDGET_USD=50。根因
src/agent/config-loader.ts:95-96的mergeAgentConfig中,agent 未配置maxBudgetUsd时回退顺序为:input → 文件 defaults → BUILTIN_DEFAULTS (硬编码 5)而
config.claude.maxBudgetUsd(即 envCLAUDE_MAX_BUDGET_USD)仅在完全没有 agents.json 的 fallback 分支(第 141 行)使用,正常加载流程被忽略。dev agent 在
config/agents.json里显式配了maxBudgetUsd: 50,所以没踩坑;pm 没配 → 命中硬编码 $5。maxTurns同理。修改
mergeAgentConfig的最终 fallback 从BUILTIN_DEFAULTS改为config.claude,让 env 真正生效。回退顺序变为:
agent 显式 → 文件 defaults → config.claude(env) → BUILTIN_DEFAULTS(最后一档实际触不到)测试
新增 4 个回归测试覆盖:
config.claude.maxBudgetUsd / maxTurnsdefaults优先于config.claudenpm run typecheck通过。🤖 Generated with Claude Code