Copilot 9月1日换模型:别只改model字段
GitHub Copilot 有一批模型将在 9月1日停止提供,距离现在只剩几天。
GitHub 已明确列出受影响模型和推荐替代项,包括:
Gemini 3.1 Pro
Claude Opus 4.5
Claude Opus 4.6
Claude Sonnet 4.5
Claude Sonnet 4.6
Raptor Mini
官方建议迁往 Gemini 3.6 Flash、Claude Opus 4.7/4.8/5、Claude Sonnet 5 或 MAI-Code-1-Flash 等仍受支持模型。
最容易犯的错是:
model: old
→
model: new
然后就宣布迁移完成。
对 Coding Agent 来说,换模型真正会改变的至少有:
Tool选择
推理深度
Token消耗
Diff大小
Review成本
失败类型
所以模型迁移应该当成一个 Release,而不是一个字符串替换。
第一步:先找所有硬编码模型
全仓库搜索:
rg "Gemini 3.1 Pro" .
rg "Claude Opus 4.5" .
rg "Claude Opus 4.6" .
rg "Claude Sonnet 4.5" .
rg "Claude Sonnet 4.6" .
rg "Raptor Mini" .
还要搜:
CI变量
组织策略
IDE设置
Agent配置
文档
脚本
不要只搜代码仓库。
第二步:建立Model Dependency Inventory
agents:
migration-agent:
primary: claude-sonnet-4.6
fallback: gemini-3.1-pro
review-agent:
primary: claude-opus-4.6
如果 Primary 和 Fallback 都在退役列表里,9月1日后:
整个路由失效
所以不能只替 Primary。
第三步:检查替代模型是否被企业策略允许
GitHub 已特别提醒 Enterprise 管理员:
替代模型可能需要在Copilot Model Policy中显式启用
这意味着迁移链不是:
配置新模型
而是:
确认组织可用
→管理员策略启用
→用户/Agent可见
→再改配置
否则开发者改完:
模型不存在 / 无权限
第四步:迁移要锁定Task Set
不要拿几个随手问题“感觉差不多”。
至少按真实 Coding Agent 工作分:
Bug Fix
Feature
Refactor
Test
Migration
Review
每类挑固定 Case。
例如:
case_id: auth-null-017
type: bugfix
required:
- unit_tests_green
- no_public_api_change
forbidden:
- change_database_schema
新旧模型都跑同一批。
第五步:成功标准不能是“模型说完成”
必须用确定性 Gate:
Compile
Unit Test
Integration Test
Lint
Security
Patch Scope
例如:
definition_of_done:
compile: required
tests: required
lint: required
max_files_changed: 12
Agent 的自然语言自评不能进入成功率。
第六步:记录Iterations to Green
同一个 Case:
旧模型:
生成
→测试失败
→修
→Lint失败
→再修
→Green
3轮。
新模型:
一次Green
即使 Token 单价更高,最终成本也可能更低。
所以记录:
iterations_to_green
非常有用。
第七步:看Human Modification Ratio
Agent 提交 500 行。
Reviewer 最后手改:
8行
和:
220行
质量完全不同。
计算:
Human Modified Lines
/
Agent Proposed Lines
例如:
8 / 500 = 1.6%
这个指标比“回答看起来不错”真实得多。
第八步:Diff Size也会随着模型变化
新模型可能倾向:
更大重构
导致 Review 压力增加。
所以至少记录:
Files Changed
Lines Added
Lines Deleted
PR Count
迁移后如果:
Task Success +1%
但平均Diff翻2倍
不一定值得。
第九步:Tool Call Pattern也要对比
Agent 模型换了以后,最明显的行为差异经常是:
搜索更多
执行更多命令
更早修改代码
更频繁跑测试
所以保留:
Tool Calls
Shell Calls
Search Calls
Test Runs
可以直接看到 Harness 行为变了多少。
第十步:Token不是唯一成本
完整成本:
Model Token
Sandbox
CI
Review
Rework
核心指标:
Cost per Successful Task
例如:
旧模型:
单Case模型成本:
$0.80
成功率:
70%
新模型:
$1.10
成功率:
92%
最终成功任务成本可能反而更低。
第十一步:P95比平均值更重要
Coding Agent 成本经常长尾。
大部分:
$1—2
少数进入死循环:
$20
所以看:
Median
P90
P95
Max
新模型如果平均很好,但 P95 很差,会非常难控预算。
第十二步:模型迁移要限制Loop
agent_budget:
max_model_calls: 20
max_replans: 3
max_cost_usd: 5
max_wall_time: 30m
新模型到了上限:
ESCALATE
不要因为“它快完成了”就无限继续。
第十三步:Prompt不要直接原样照搬
不同模型对:
指令长度
Few-shot
Tool Description
Reasoning Budget
反应可能不同。
所以模型迁移最好做两阶段:
A:Prompt不变
先测纯 Model Delta。
B:Prompt调优
再测优化后结果。
否则一次同时换:
Model + Prompt
你无法知道提升来自谁。
第十四步:Fallback也要做故障测试
不要只验证:
Primary新模型能跑
还要故意让 Primary 失败:
429
timeout
unavailable
确认:
Fallback真的允许
Fallback质量可接受
Fallback成本不失控
否则生产第一次 Failover 才发现备用路由无效。
第十五步:模型Policy和Agent配置要一起版本化
public record AgentModelBinding(
String agentId,
String agentVersion,
String primaryModel,
String fallbackModel,
String modelPolicyVersion) {
}
事故时才能知道:
当时为什么路由到这个模型
一个迁移报告
{
"from": "claude-sonnet-4.6",
"to": "claude-sonnet-5",
"cases": 60,
"task_success": {
"before": 0.87,
"after": 0.92
},
"p95_cost_usd": {
"before": 3.8,
"after": 3.2
},
"avg_review_minutes": {
"before": 13.4,
"after": 9.1
}
}
这种报告才足以支持:
正式切换
第十六步:Canary不要一次100%
先:
Internal Repo
再:
10%
然后:
50%
最后:
100%
比较:
Candidate
vs
Baseline
特别关注:
Task Success
Review Time
Tool Error
Cost
第十七步:旧模型退役前保留Rollback不现实
这是这次迁移和普通发布最大的区别。
9月1日以后:
旧模型可能彻底不可选
所以 Rollback 不能指望:
切回old
必须提前准备:
Candidate A
Candidate B
例如:
Primary:
Claude Sonnet 5
Fallback:
Gemini 3.6 Flash
两条都提前验证。
最少做这10个检查
1. 全仓库模型引用扫描
2. Enterprise Model Policy确认
3. Primary替代模型
4. Fallback替代模型
5. 固定Task Set
6. Definition of Done
7. Cost per Success
8. Human Modification Ratio
9. Failover测试
10. Canary
9月1日的 Copilot 模型退役本身并不复杂。
复杂的是 Coding Agent 已经越来越不像:
一个聊天框
而更像:
Model
+
Prompt
+
Tool
+
Budget
+
Review
共同组成的运行系统。
所以模型替换不是:
改一个model字段
而应该按真正的软件 Release 做:
依赖盘点
→基准测试
→Policy
→Fallback
→Canary
→切换
只要这条流程建立起来,以后再遇到模型下线、价格变化或能力升级,就不需要每次临时救火。
更多企业级 AI 应用、Agent、RAG 与模型工程化内容,我会继续整理在 智元界:
https://www.zyentor.com/