Summary
platform-launcher.ts 的 spawnWorker() 构建 claude 命令时不包含 --max-budget-usd 参数,导致通过 Lash 启动的 Worker 没有成本上限。
Evidence
Auth probe 有 budget 控制:
// platform-launcher.ts:43 ✅
'claude-code': ['claude', '-p', 'hi', '--max-budget-usd', '0.01'],
spawnWorker 没有 budget 控制:
// platform-launcher.ts:244-260 ❌
cmd = [
'claude',
'-p', task,
'--session-id', sessionId,
'--permission-mode', 'bypassPermissions',
// ← 没有 --max-budget-usd
];
Impact
- 通过 Lash spawn 的每个 Claude Worker 进程无成本上限
- Worker 陷入死循环时,300 秒 timeout 内 Claude Opus 可消耗 $5-15
- 3 模块同时失控 = 单次构建可能 $15-45
- Benchmark runner 的 Lash 路径无法强制执行 $5/task 预算
Fix
spawnWorker() 应接受可选 maxBudgetUsd 参数并转发给 claude CLI:
export function spawnWorker(
platform: string,
task: string,
worktreePath: string,
instructionFile: string | null,
moduleId: string = '',
maxBudgetUsd?: number, // ← 新增
): WorkerHandle {
// ...
if (platform === 'claude-code') {
cmd = ['claude', '-p', task, '--session-id', sessionId,
'--permission-mode', 'bypassPermissions'];
if (maxBudgetUsd !== undefined) {
cmd.push('--max-budget-usd', String(maxBudgetUsd));
}
}
}
同时 lash spawn CLI 命令应增加 --max-budget-usd <number> option。
Related
Summary
platform-launcher.ts的spawnWorker()构建claude命令时不包含--max-budget-usd参数,导致通过 Lash 启动的 Worker 没有成本上限。Evidence
Auth probe 有 budget 控制:
spawnWorker 没有 budget 控制:
Impact
Fix
spawnWorker()应接受可选maxBudgetUsd参数并转发给claudeCLI:同时
lash spawnCLI 命令应增加--max-budget-usd <number>option。Related