Skip to content

bug: lash spawn 不转发 --max-budget-usd 给 Claude worker #88

@Gizele1

Description

@Gizele1

Summary

platform-launcher.tsspawnWorker() 构建 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions