最近一直在折腾 Codex 的子 Agent,主要还是想解决一个很现实的问题:

不同任务,没必要都上最贵的模型。

我现在大概是这么分的:

简单任务 → Terra
常规开发 → Sol
复杂决策 → Astra
比如改个字段名、补个简单测试、生成一点 CRUD,这种如果也直接上 Astra,多少有点大炮打蚊子的感觉。

但反过来,如果所有任务都先丢给便宜模型,也会碰到另一个问题:

有些需求表面看起来很简单,真正进去以后才发现复杂度完全不是一回事。

比如一句:

给订单接口加个字段

实际可能一路牵扯到:

数据库
缓存
MQ
老版本兼容
数据迁移
上下游接口
这时候一开始如果分给低档模型,可能折腾半天,最后还是得切回高级模型重新处理。

这两天看到 Jev 之后,我突然冒出来一个想法:

能不能在真正执行任务之前,先加一层轻量的“任务判断 / 路由”?

大概是这种感觉:

用户任务


Jev / 任务判断层

┌─────────┼─────────┐
│ │ │
▼ ▼ ▼
Terra Sol Astra
简单任务 常规开发 高难任务
举几个比较直观的例子。

这种:

改个变量名
补 README
找一个文件
跑一下测试
生成简单 CRUD
直接:

→ Terra
这种:

实现一个正常业务功能
修改接口
重构某段代码
补完整单测
走:

→ Sol
再往上的:

系统架构设计
复杂线上问题排查
跨模块重构
数据库结构调整
高风险操作
再交给:

→ Astra
不过我现在想的并不是让 Jev 直接决定:

“这次用 Astra。”

我反而觉得,更合理的方式可能是:

Jev 只负责判断任务属性,真正的模型选择还是走我们自己定义的规则。

比如先输出类似:

{
"complexity": "high",
"risk": "medium",
"task_type": "architecture"
}
然后再自己做路由:

complexity = low
→ Terra

complexity = medium
→ Sol

complexity = high
→ Astra

risk = high
→ Astra + 人工确认
这样有个好处:

以后就算模型换了,也不用重新设计整个判断逻辑。

比如以后不叫 Terra / Sol / Astra 了,只需要改后面的映射关系就行。

另外我觉得这个东西如果真做,最好也不能只判断一次。

例如一开始判断是普通任务:

用户需求

Sol
结果 Sol 执行到一半发现:

涉及 5 个模块
数据库结构需要调整
还要兼容历史数据
存在上线迁移风险
那这时候应该允许它升级:

Sol

发现任务复杂度上升

重新判断

Astra
也就是:

先路由,执行过程中再动态升级。

我感觉这可能比“一开始决定好模型,后面死磕到底”更合理一点。

当然,目前我还有几个问题没想明白。

1. 多这一层判断,到底划不划算?
本来是为了省高级模型额度。

结果每个任务之前又额外跑一次判断,如果判断本身也有成本和延迟,那最后到底有没有省下来,需要实际测。

2. 前置判断会不会经常误判?
这个我感觉很难完全避免。

有些需求描述只有一句话,看起来简单,真正进代码库之后才知道复杂。

所以如果做的话,我觉得动态升级应该是必须有的。

3. 到底应该判断“模型”,还是判断“任务属性”?
我现在个人比较倾向后者。

不是:

这个任务 → Astra
而是:

复杂度:高
风险:中
类型:架构设计
上下文范围:大
再由规则决定到底用哪个模型。

这样整体会更解耦一点。

目前还只是我折腾 Codex 子 Agent 时冒出来的一个脑洞,还没正式实现。

我的最终目标其实挺简单:

简单活别浪费高级模型
复杂活也别让低档模型硬撑
让不同模型干更适合自己的事情。

不知道有没有佬友已经玩过类似的方案:

轻量模型负责判断任务,高级模型负责真正干活。

或者现在已经有比较成熟的多模型路由方案了?

如果这个思路靠谱,我准备后面直接在自己的 Codex 工作流里搓一版试试,看看实际能不能省掉一部分高级模型额度。