9. 最佳实践:从 Cursor 案例提炼的设计原则
以下十条原则均从本主题的一手材料中提炼,可直接迁移到其他 AI 产品的基础设施设计。
9.1 延迟与交互
先写延迟预算表,再选模型。 Cursor 的 Tab 不是"用了小模型所以快",而是"260ms 预算表摆在那里,小模型是唯一解"。预算表必须拆到每个环节并有 owner;优化永远从贡献最大的阶段开始(mini-demo 场景 2:prefill 省 50ms → 端到端 −19.2%,缓存段全省也只有 0.8%)。
交互动作按 p95 预算,不按均值。 补全是击键级的交互,p95 300ms 与 p50 262ms 的用户体感差异决定产品成败(见 Perplexity 案例 的 tail latency 哲学同源)。
把"等待"改造成"投机"。 缓存预热(预测下一步并预计算)、Speculative Edits(旧文件当草稿)、投机解码——三者的共同结构是:利用任务的可预测性,把串行等待变成并行验证。可预测性越强的场景(编辑的局部性、击键的连续性),投机收益越大(mini-demo 场景 3:2% 改动率 15.85x,40% 改动率 1.54x)。
9.2 模型与训练
按任务层配模型,不按品牌配模型。 Tab / Apply / Agent 三层延迟与质量要求差两个数量级,各层最优解完全不同(自研 MoE 小模型 / 微调 Llama-3-70B / frontier + Composer)。"一个旗舰模型打天下"在交互型产品里通常意味着每一层都在妥协。
让输出格式落在模型的原生分布上。 Apply 用整文件重写而不用 diff,因为行号与 hunks 是模型的弱分布;格式服从分布,质量与速度同时受益。设计 agent 的输出契约时先问:这个格式是模型"天生会说"的话吗?
交互数据是 RL 的燃料,部署延迟是训练吞吐的上限。 on-policy 要求新策略尽快上线回收新数据——Cursor 把 checkpoint 上线压到 1.5-2 小时,本质是把 serving pipeline 当训练 pipeline 用。若你的产品没有接受/拒绝信号,先补采集,再谈 RL。
奖励设计可以直接编码产品目标。 "+0.75/−0.25/0" 的妙处在于期望值恰在目标接受率处过零:不必显式建模接受概率,策略自己学会"过线才展示"。把产品 KPI 翻译成零点是 RL 工程里最便宜的巧劲。
9.3 成本与供给
额度池是固定订阅与变动成本之间的诚实接口。 "$20 额度 ≈ 225 次 Sonnet 4"把成本透明转译成用户语言;配套的预警、宽限、提前公告与额度本身同等重要(2025 年风波的教训)。
调度器省下的每一分都是毛利。 固定订阅下,Router 的 46.7% 节省直接变成毛利;且调度器要用在线行为指标(接受/留存)训练,而不是离线 benchmark——因为用户行为才是质量的真值。
把供应商依赖做成配置,把最高成本层做成自有。 模型无关 + Router 让断供变成配置变更(2026 年 OpenAI 断供报道的应对空间正源于此);同时用自有模型逐层替代最贵的层(Tab/Apply 先行,Composer 跟上)——替代顺序按"请求量 × 单价"降序排。
9.4 反模式清单
- 用 frontier 模型做行内补全(延迟预算必崩,且烧钱买噪音);
- 用 diff 格式约束代码生成模型(弱分布 + 行号计数);
- 离线 benchmark 分数驱动模型路由(与真实满意度脱节,且忽略缓存 miss 成本);
- 订阅制不设额度可视化(2025-06 的 Cursor 就是这样被教育的);
- 把沙箱隔离当纯安全功能(Cursor 证明它同时是训练环境与成本单元)。