# 成本管理 SF 会跟踪自动模式中每个派发工作单元的 Token 使用量和成本。这些数据会驱动仪表板、预算约束以及成本预测。 ## 成本跟踪 每个工作单元的指标都会被自动记录: - **Token 数量**:input、output、cache read、cache write、total - **成本**:每个单元的美元成本 - **耗时**:真实墙钟时间 - **工具调用数**:工具调用次数 - **消息数量**:assistant 与 user 消息数 数据保存在 `.sf/metrics.json` 中,并且可跨会话持续存在。 ### 查看成本 **仪表板**:按 `Ctrl+Alt+G` 或执行 `/sf status` 可查看实时成本拆分。 **可用聚合维度:** - 按阶段(research、planning、execution、completion、reassessment) - 按 slice(M001/S01、M001/S02 等) - 按模型(哪些模型最耗预算) - 项目总计 ## 预算上限 可以为单个项目设置最大支出: ```yaml --- version: 1 budget_ceiling: 50.00 --- ``` ### 执行模式 控制触达预算上限后会发生什么: ```yaml budget_enforcement: pause # 设置 ceiling 后的默认值 ``` | 模式 | 行为 | |------|------| | `warn` | 记录警告,但继续执行 | | `pause` | 暂停自动模式,等待用户动作 | | `halt` | 直接停止自动模式 | ## 成本预测 当至少完成两个 slices 后,SF 会预测剩余成本: ``` Projected remaining: $12.40 ($6.20/slice avg × 2 remaining) ``` 预测基于已完成工作的每-slice 平均成本。如果预算上限已触达,结果中还会附带一条警告。 ## 预算压力与模型降级 当预算接近上限时,[复杂度路由器](./token-optimization.md#budget-pressure)会自动把模型分配降到更便宜的层级。这是一个渐进过程: - **已使用 < 50%**:不调整 - **已使用 50-75%**:standard task 降为 light - **已使用 75-90%**:同样降级,但更激进 - **已使用 > 90%**:几乎所有 task 都降级,只有 heavy task 仍保留在 standard 这样可以把预算尽量均匀地分摊到剩余工作中,而不是过早在几个复杂 task 上耗尽。 ## Token 配置与成本 `token_profile` 偏好会直接影响成本: | 配置 | 常见节省幅度 | 方式 | |------|--------------|------| | `budget` | 40-60% | 更便宜的模型、跳过部分阶段、最小上下文 | | `balanced` | 10-20% | 默认模型、跳过 slice research、标准上下文 | | `quality` | 0%(基线) | 完整模型、完整阶段、完整上下文 | 更多细节见 [Token 优化](./token-optimization.md)。 ## 建议 - 先用 `balanced` 配置,并设置一个较宽松的 `budget_ceiling` 来建立成本基线 - 完成几个 slices 后查看 `/sf status`,确认每个 slice 的平均成本 - 对于已知流程、重复性高的工作,切换到 `budget` 配置 - 只有在做架构决策时才建议使用 `quality` - 可以通过按阶段选模型,只在 planning 使用 Opus,而在 execution 保持 Sonnet - 开启 `dynamic_routing`,让简单 task 自动下沉到更便宜的模型,详见 [动态模型路由](./dynamic-model-routing.md) - 使用 `/sf visualize` 的 Metrics 标签页查看预算具体花在了哪里