plan-cost-concurrency.md
5.37 KB
成本与并发预算
「项目最多花多少 token / 多少钱 / 跑多久 / 几个 agent 并发」的数字版。预算守护机制在 P-7,本页给具体数字。
① 单次调用 Token 估算
| Agent | 模型 | 输入 ≈ | 输出 ≈ | 典型 / 单次调用 | 备注 |
|---|---|---|---|---|---|
| PM | Sonnet 4.6 | 4K (memory + prd) | 8K (新 PRD 章节 HTML) | 12K | incremental ≈ 5K |
| Architect generate | Opus 4.7 | 15K (PRD + sdd + memory) | 20K (4 MVCP 页 + JSON) | 35K | 含全套 SDD |
| Architect patch | Opus 4.7 | 8K | 3K | 11K | 仅改一段 |
| Coder implement | Sonnet 4.6 | 6K (sdd + upstream contracts) | 4K (code + contract.json) | 10K | per Unit |
| Coder retry | Sonnet 4.6 | 8K (含 history) | 3K (差量 patch) | 11K | 反思加 ~2K |
| Tester | Sonnet 4.6 | 5K | 4K (vitest spec + result) | 9K | per Unit |
| Integrator | Sonnet 4.6 | 8K (units + spec) | 3K | 11K | L2 单轮 |
| BugTriager | Opus 4.7 | 12K (含 code + logs) | 3K (triage.json) | 15K | 归因质量决定 L2 收敛 |
② 典型项目总成本估算
2.1 小项目(TODO API · demo)
3 个 Unit · 1 个 PRD rev · 1-2 个 L2 round。
| 调用 | 次数 | Token |
|---|---|---|
| PM init | 1 | 12K |
| Architect generate | 1 | 35K |
| Coder × 3 unit × 1.5 attempt(平均) | 4.5 | 45K |
| Tester × 3 unit × 1.5 attempt | 4.5 | 40K |
| Integrator | 1 | 11K |
| BugTriager(如失败 1 次) | 0.5 | 8K |
| 合计 | 14.5 | ≈ 150K tokens |
2.2 中项目(Auth + TODO + Profile · 5 feature)
8 个 Unit · 2 个 PRD rev · 2 个 L2 round。
| 调用 | 次数 | Token |
|---|---|---|
| PM init + incremental × 1 | 2 | 17K |
| Architect generate + patch × 1 | 2 | 46K |
| Coder × 8 unit × 2 attempt | 16 | 165K |
| Tester × 8 unit × 2 attempt | 16 | 145K |
| Integrator × 2 | 2 | 22K |
| BugTriager × 1 | 1 | 15K |
| 合计 | 39 | ≈ 410K tokens |
2.3 默认 token_budget = 5M 的隐含假设
5M 是单项目预算上限,能撑:
- ~33 个小项目(150K each)
- ~12 个中项目(410K each)
- 1 个大型迭代(多人多反馈、20+ Unit)
到达 80% 预算时发 SSE warning;100% 直接挂起。
③ 美元成本(参考 2026-05 价格)
按 Anthropic 公开价格估算(input/output 分别计),中项目场景:
| 模型 | 输入 ($/MTok) | 输出 ($/MTok) | 本项目消耗 | 美元 ≈ |
|---|---|---|---|---|
| Sonnet 4.6 | ~$3 | ~$15 | input 220K · output 100K | $2.2 |
| Opus 4.7 | ~$15 | ~$75 | input 50K · output 25K | $2.6 |
| 中项目合计 | — | — | 410K tokens | ≈ $4.8 |
| 小项目合计 | — | — | 150K tokens | ≈ $1.7 |
数字是 ballpark。实际取决于 caching 命中率(SessionPool 复用降低 input 重复成本)和具体功能复杂度。
④ 并发预算
三层并发上限:
| 层级 | 上限 | 原因 | 实现 |
|---|---|---|---|
| 项目内 L1 并行 | ≤ 5 Unit 同时跑 | 每个 Claude CLI ~ 100MB RAM · 1 CPU core | scheduler.getExecutionGroups 自动分波,每波 ≤ 5 |
| 项目内 L2 串行 | 1 个 Integrator 实例 | 避免端口冲突 + 状态混乱 | LoopController 内部用 Promise 队列 |
| 单机系统并发 | ≤ 20 个 ACP session | 合理 RAM 占用 ≈ 2GB | SessionPool 全局上限(新增 maxSessions 配置) |
| 同 company 项目并发 | ≤ 3 项目同时跑 | 避免单用户挤占 | LoopController 入口检查 |
| Bash 进程(Coder/Tester/Integrator 起的) | ≤ 50 系统总数 | 避免 fork bomb | process-guard 计数 |
⑤ 单项目墙钟估算
| 项目规模 | 串行墙钟 | L1 并行后 | 瓶颈 |
|---|---|---|---|
| 小(3 Unit) | ~15 min | ~8 min | Architect generate + Integrator spawn |
| 中(8 Unit) | ~45 min | ~20 min | L1 × 2 attempt × Coder + Tester |
| 大(20 Unit + 3 L2 round) | ~3h | ~70 min | L2 整套 + 重写 |
「并行后」假设 5 并行;scheduler 拓扑可能限制少于 5(fe 必须等 be 完)。北极星目标「小项目
⑥ 监控指标
在 ops-progress 已经展示了 token_used/budget。补充几个隐含指标:
| 指标 | 看哪 | 告警阈值 |
|---|---|---|
| Tokens / Unit | 项目 token_used / units_count | > 100K / Unit → 项目过度反思 |
| Retry rate | units.json sum(retries) / count | > 2 平均 → Coder skill 退化或 spec 不清 |
| L2 修复轮次 | l2_rounds | ≥ 2 → 该 PRD 有歧义 |
| Agent 调用墙钟 P95 | timeline.duration_ms 统计 | > 5 min → 模型卡或 prompt 过长 |
| SessionPool 利用率 | active_sessions / maxSessions | > 80% → 限流 |
| Bash 子进程数 | process-guard tracked | > 30 → 等回收 |
⑦ 降本策略
| 策略 | 预期降幅 | 难度 |
|---|---|---|
| SessionPool 复用 + 5min cache TTL | 20-30% input token | 免费(既有 ACP 行为) |
| Tester Sonnet 改 Haiku(如果反思质量够) | 40% Tester 部分 | 低 |
| PM/Coder/Tester 用 Sonnet · 只 Architect/Triager 用 Opus | 已是默认 | — |
| Memory 注入降到 top 3(从 top 5) | 5-10% input | 低,1 行配置 |
| 跳过 Tester 写文档代码(README/类注释) | 10% output | 低 |
| cache busting:相同 unit 跑 1 次后用缓存(无 retry 时) | 大幅,针对回归 | 中(需 contract_hash 索引) |