第78讲:模型选型策略——探索用Vibe、量产用Spec

专栏地址


前言:为什么需要根据场景选择模型和范式?

为什么重要?

不同开发场景需要不同的AI模型和编程范式:

  • 原型验证阶段:需要快速生成、允许试错、宽松约束
  • 功能开发阶段:需要准确生成、适度约束、接口稳定
  • 量产固化阶段:需要严格生成、完全约束、符合规范

如果选错模型或范式:

  • Vibe用于量产:代码质量差、隐患多、无法通过审查
  • Spec用于原型:约束过严、迭代慢、浪费时间
  • 模型不匹配:生成质量差、理解偏差、修正成本高

模型选型的作用:根据开发场景选择合适的AI模型和编程范式,提高效率、保证质量。

新手常见困惑

困惑1:“不同AI模型有什么区别?如何选择?”

困惑2:“什么时候用Vibe?什么时候用Spec?”

困惑3:“模型和范式如何搭配使用?”

困惑4:“开发过程中如何切换模型和范式?”

本文结构

本文结构

入门阶段

进阶阶段

高级阶段

AI模型对比

范式选择原则

基础选型策略

场景化选型

模型范式搭配

切换时机判断

动态切换策略

选型效果评估

选型经验总结


第一部分:入门阶段——建立整体认知

1.1 AI模型对比

主流AI模型对比
模型 上下文窗口 推理能力 代码质量 适用场景
GPT-3.5 4K token 中等 中等 简单任务、快速生成
GPT-4 8K token 复杂任务、准确生成
GPT-4 Turbo 128K token 大型工程、长上下文
Claude 3 200K token 很强 很高 复杂推理、长上下文
DeepSeek 64K token 代码专用、性价比高
模型选择原则

简单

中等

复杂

模型选择

任务复杂度

GPT-3.5
快速生成

GPT-4
平衡质量与速度

Claude 3
高质量生成

上下文需求

上下文长度

GPT-4

GPT-4 Turbo / Claude 3

1.2 范式选择原则

Vibe vs Spec范式对比
维度 Vibe范式 Spec范式
目标 快速验证 量产交付
约束 宽松 严格
迭代 多轮快速迭代 一次性准确生成
代码质量 功能优先 质量优先
适用场景 原型验证、问题定位 量产开发、固件交付
范式选择决策树

开发任务

是否需要量产

是否需要快速验证

Vibe范式

Spec范式
(提高质量)

是否有完整Spec

Spec范式

先Vibe验证
再Spec固化

1.3 基础选型策略

策略一:按开发阶段选型
【按开发阶段选型】

阶段一:需求探索阶段
- 模型:GPT-3.5或GPT-4
- 范式:Vibe
- 目标:快速验证想法,找到可行方案
- 约束:宽松,允许试错

阶段二:功能开发阶段
- 模型:GPT-4
- 范式:Vibe + Spec混合
- 目标:实现功能,保证接口稳定
- 约束:中等,锁定接口

阶段三:量产固化阶段
- 模型:GPT-4或Claude 3
- 范式:Spec
- 目标:代码符合规范,可量产交付
- 约束:严格,完全符合Spec
策略二:按任务类型选型
【按任务类型选型】

任务类型一:新外设驱动开发
- 初次开发:Vibe范式,快速试错
- 验证通过:切换Spec范式,固化代码

任务类型二:BUG修复
- 问题定位:Vibe范式,快速生成调试代码
- 根治修复:Spec范式,保证修复质量

任务类型三:协议实现
- 协议理解:Vibe范式,快速验证协议理解
- 协议实现:Spec范式,严格按协议Spec实现

任务类型四:代码重构
- 重构方案:Vibe范式,探索重构方案
- 重构执行:Spec范式,保证重构质量

第二部分:进阶阶段——深入理解原理

2.1 场景化选型

场景一:原型验证
【场景:原型验证】

场景描述:
- 需要快速验证硬件功能
- 不确定最优方案
- 时间紧迫

选型策略:
- 模型:GPT-3.5(快速生成)或GPT-4(质量更好)
- 范式:Vibe
- Prompt:宽松约束,允许试错

Prompt示例:

【Vibe模式】
你是嵌入式原型开发工程师,当前需要快速验证硬件功能。

【宽松约束】

  • 允许修改外设配置参数
  • 允许添加临时调试代码
  • 允许多次迭代修改
  • 优先功能实现,代码美观次要

【目标】
快速验证[具体功能],找到可行方案。


适用任务:
- 新外设首次驱动
- 时序问题调试
- 硬件问题定位
- 快速原型搭建
场景二:功能开发
【场景:功能开发】

场景描述:
- 已完成原型验证
- 需要实现完整功能
- 接口需要稳定

选型策略:
- 模型:GPT-4
- 范式:Vibe + Spec混合
- Prompt:中等约束,锁定接口

Prompt示例:

【混合模式】
你是嵌入式工程师,当前处于功能开发阶段。

【中等约束】

  • 禁止修改已锁定的接口
  • 必须添加错误处理
  • 必须添加必要注释
  • 允许修改实现细节

【接口锁定】
以下接口已锁定,禁止修改:

  • [接口列表]

【目标】
在接口锁定的情况下,实现[具体功能]。


适用任务:
- 功能完善
- 接口稳定
- 错误处理添加
- 代码优化
场景三:量产固化
【场景:量产固化】

场景描述:
- 功能已稳定
- 需要符合量产规范
- 需要通过Code Review

选型策略:
- 模型:GPT-4或Claude 3(高质量生成)
- 范式:Spec
- Prompt:严格约束,完全符合Spec

Prompt示例:

【Spec模式】
你是嵌入式量产工程师,当前处于量产固化阶段。

【严格约束】

  • 必须符合MISRA-C 2012规范
  • 必须包含完整Doxygen注释
  • 必须包含完整错误处理
  • 必须通过静态检查
  • 禁止任何临时代码

【Spec契约】
[粘贴完整Spec契约]

【目标】
生成符合Spec契约的量产级代码。


适用任务:
- 量产代码生成
- 规范检查修复
- Code Review准备
- 固件交付

2.2 模型范式搭配

搭配策略一:Vibe + Spec顺序搭配
【Vibe + Spec顺序搭配】

适用场景:新功能开发

流程:
1. Vibe阶段:快速验证
   - 使用GPT-3.5或GPT-4
   - 宽松约束,快速生成
   - 多轮迭代,找到可行方案
   
2. Spec阶段:固化代码
   - 使用GPT-4或Claude 3
   - 严格约束,按Spec生成
   - 一次性准确生成

示例:开发USART驱动
1. Vibe阶段:
   - 快速生成USART初始化代码
   - 测试通信是否正常
   - 调整波特率、配置参数
   - 验证收发功能
   
2. Spec阶段:
   - 编写USART驱动Spec
   - 按Spec生成量产代码
   - 添加完整错误处理
   - 添加完整注释
搭配策略二:Vibe + Spec混合搭配
【Vibe + Spec混合搭配】

适用场景:功能迭代开发

策略:
- 接口层:Spec范式(接口稳定)
- 实现层:Vibe范式(灵活实现)

示例:开发协议层
1. 接口层(Spec):
   - 定义协议接口:protocol_init()、protocol_send()、protocol_recv()
   - 接口锁定,不修改
   
2. 实现层(Vibe):
   - 实现协议帧组装:灵活调整
   - 实现协议帧解析:灵活调整
   - 允许修改实现细节
   
3. 最终固化(Spec):
   - 将Vibe代码升级为Spec标准
   - 添加完整错误处理
   - 添加完整注释

2.3 切换时机判断

切换信号

开发过程

是否满足切换条件

切换范式

继续当前范式

Vibe→Spec

Spec→Vibe

功能稳定、测试通过

发现新问题、需要探索

Vibe→Spec切换条件
【Vibe→Spec切换条件】

切换信号:
1. 功能已稳定
   - 所有功能测试通过
   - 无明显BUG
   - 性能满足要求

2. 需要量产
   - 有量产需求
   - 有交付期限
   - 有规范要求

3. 有时间优化
   - 不急于交付
   - 有时间提升代码质量
   - 有时间添加注释和错误处理

4. 团队要求
   - 团队要求符合规范
   - Code Review要求
   - 静态检查要求

切换动作:
1. 编写Spec契约
2. 使用Spec范式重新生成
3. 验证符合Spec
4. 集成到工程
Spec→Vibe切换条件
【Spec→Vibe切换条件】

切换信号:
1. 发现新问题
   - Spec实现有问题
   - 需要探索新方案
   - Spec定义需要调整

2. 需求变化
   - 需求发生重大变化
   - Spec需要重新定义
   - 接口需要调整

3. 时间紧迫
   - 交付期限临近
   - 无时间严格按Spec
   - 需要快速实现

切换动作:
1. 放宽约束
2. 使用Vibe范式快速调整
3. 验证功能
4. 根据情况决定是否重新Spec

第三部分:高级阶段——掌握复杂应用

3.1 动态切换策略

自动切换机制
【自动切换机制】

切换触发条件:
1. 功能测试结果
   - 测试通过率 > 90% → 建议切换Spec
   - 测试通过率 < 50% → 保持Vibe

2. 代码质量检查
   - MISRA-C违规 < 5条 → 建议切换Spec
   - MISRA-C违规 > 20条 → 保持Vibe

3. 开发时间
   - 距交付 > 2周 → 建议Spec
   - 距交付 < 3天 → 保持Vibe

切换建议Prompt:

【切换建议】

当前状态:

  • 范式:Vibe
  • 测试通过率:85%
  • MISRA-C违规:8条
  • 距交付时间:1周

建议:建议切换到Spec范式

原因:

  • 测试通过率较高,功能基本稳定
  • MISRA-C违规较少,容易修复
  • 距交付时间充足,有时间优化

是否切换?

3.2 选型效果评估

评估指标
【选型效果评估】

一、效率指标
- 生成时间:从Prompt到生成完成的时间
- 迭代次数:达到目标需要的迭代次数
- 修正次数:需要修正的次数

二、质量指标
- 编译通过率:一次编译通过的比例
- 测试通过率:功能测试通过的比例
- 规范符合率:符合编码规范的比例

三、成本指标
- API调用次数:调用AI API的次数
- Token消耗:消耗的Token数量
- 人力投入:人工介入的时间

四、综合评估
选型效果 = (质量指标 × 权重1) / (成本指标 × 权重2)

3.3 选型经验总结

经验总结
【选型经验总结】

一、模型选择经验
1. 简单任务:GPT-3.5足够,速度快、成本低
2. 复杂任务:GPT-4或Claude 3,质量高、理解准
3. 长上下文:GPT-4 Turbo或Claude 3,上下文长

二、范式选择经验
1. 原型阶段:必须用Vibe,快速验证
2. 开发阶段:Vibe+Spec混合,平衡效率和质量
3. 量产阶段:必须用Spec,保证质量

三、切换经验
1. 不要过早切换Spec:功能未稳定时切换会浪费时间
2. 不要过晚切换Spec:距交付太近会来不及优化
3. 切换时机:功能稳定、有时间优化、有量产需求

四、搭配经验
1. Vibe→Spec:最常用搭配,先验证后固化
2. Vibe+Spec混合:功能迭代开发时使用
3. Spec→Vibe:特殊情况,如发现新问题

五、避免错误
1. 不要用Vibe做量产:代码质量不够
2. 不要用Spec做原型:约束过严、浪费时间
3. 不要频繁切换:每次切换有成本

总结

入门要点

  1. AI模型对比:GPT-3.5、GPT-4、Claude 3各有特点,根据需求选择
  2. 范式选择原则:Vibe快速验证、Spec量产交付
  3. 基础策略:按开发阶段选型、按任务类型选型

进阶要点

  1. 场景化选型:原型验证、功能开发、量产固化各有策略
  2. 模型范式搭配:Vibe+Spec顺序搭配、Vibe+Spec混合搭配
  3. 切换时机:Vibe→Spec切换条件、Spec→Vibe切换条件

高级要点

  1. 动态切换:自动切换机制、切换建议Prompt
  2. 效果评估:效率指标、质量指标、成本指标
  3. 经验总结:模型选择、范式选择、切换时机、搭配策略

记住这些原则

  • 匹配场景:根据开发场景选择模型和范式
  • 灵活切换:开发过程中根据情况灵活切换
  • 评估效果:选型后评估效果,优化选型策略
  • 总结经验:积累选型经验,形成最佳实践

下一讲预告:第79讲将深入讲解"输出净化:剔除AI废话,只保留纯净C代码",学习如何从AI输出中提取纯净的C代码,剔除多余的解释和废话。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐