ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

OMC - 07 把「选模型」当成一门工程学:oh-my-claudecode 的三层模型路由实践

OMC - 07 把「选模型」当成一门工程学:oh-my-claudecode 的三层模型路由实践 1. 为什么多 Agent 协作里“选模型”必须当成工程问题在 Claude Code 里跑多 Agent 协作最容易踩的坑不是 Agent 写不出来而是所有 Agent 都在用同一个模型。我见过太多配置19 个 Agent 全部指向 Opus一个 grep 搜索也走 Opus一次架构重构也走 Opus月底账单出来才发现成本结构完全失控。反过来也有另一种极端为了省钱全部指向 Haiku结果架构评审、根因分析这类任务频繁翻车Agent 反复重试整体耗时反而更长。oh-my-claudecode下文简称 OMC给出的解法是把“选模型”抽象成三层模型路由LOW / MEDIUM / HIGH 三个复杂度层级分别对应 Haiku / Sonnet / Opus 这类轻量、均衡、强推理模型。路由决策不调用模型而是靠词法、结构、上下文三类静态信号打分再叠加规则引擎做覆盖。这套机制的价值在于同一个 Agent 身份不变任务复杂度变了背后用的模型层级自动跟着变。这篇文章面向已经在 Claude Code 里用 OMC 跑多 Agent 协作、并且想把这套路由真正落到配置文件里的读者。我会给出可复制的settings.json与config.toml骨架演示如何通过 TaoToken 统一 Key 和 API 通道接入不同模型层最后附上路由生效的验证命令和日志检查动作。如果你还没装 OMC建议先看 OMC-03 的安装指南本篇默认你已经能跑起基础会话。2. TaoToken 前置统一 Key 与 API 通道三层路由要落地第一个现实问题是不同模型层往往对应不同的 API 端点、不同的 Key、不同的计费口径。如果每个层级都单独配一套凭证配置文件会迅速变成一团乱麻排障时根本分不清是路由没生效还是 Key 配错了。TaoToken 在这里的作用是提供一个统一的 API 通道。你只需要一个 Key就能在同一个入口下访问不同模型OMC 的三层路由配置里只需要维护模型 ID 的映射不需要为每个层级单独管理凭证。这对多 Agent 场景尤其重要因为 Agent 数量一多凭证管理成本会指数级上升。接入前你需要准备两样东西一个可用的 TaoToken API Key以及确认你的网络环境能正常访问 API 端点。Key 的获取在控制台的 API Keys 页面完成建议单独建一个项目专用的 Key方便后续按项目排查用量。注意不要把 Key 硬编码进会提交到 Git 的配置文件里。OMC 的配置支持读取环境变量后面骨架里我会用环境变量占位。拿到 Key 之后先做一次最小连通性验证确认通道本身没问题再去配 OMC 的路由。这一步能帮你把“通道问题”和“路由问题”提前隔离开后面排障会省很多时间。3. 可复制配置settings.json 与 config.toml 骨架OMC 的配置分两层Claude Code 侧的settings.json负责声明 API 通道和模型别名OMC 侧的config.toml负责三层路由的层级映射和规则。两层要对应上路由才会真正生效。先看settings.json的骨架。核心是把 API 基址指向 TaoToken 的 API 端点并用环境变量注入 Key{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: ${TAOTOKEN_API_KEY} }, model: sonnet, permissions: { allow: [Bash, Read, Edit, Write] } }这里ANTHROPIC_BASE_URL指向 TaoToken 的 API 地址ANTHROPIC_AUTH_TOKEN从环境变量读取避免明文写进文件。model字段是会话默认层级OMC 的路由会在运行时覆盖它。再看 OMC 侧的config.toml这是三层路由的核心[routing] enabled true defaultTier MEDIUM minTier LOW [routing.tierModels] LOW claude-haiku-4 MEDIUM claude-sonnet-4 HIGH claude-opus-4 [routing.agentOverrides] architect auto planner auto critic auto analyst auto [routing.escalationKeywords] keywords [architecture, refactor, security, migration, root cause] [routing.simplificationKeywords] keywords [find, search, list, show, grep]几个关键点值得展开。tierModels是三层到具体模型的映射你可以按自己的成本预算调整比如把 HIGH 也压到 Sonnet但那样就失去了分层的意义。agentOverrides设为auto表示这四个咨询类 Agent 走自适应规则而不是固定层级。escalationKeywords和simplificationKeywords是规则引擎的快捷开关前者一旦命中就倾向升级后者命中就倾向降级。提示minTier设成MEDIUM可以彻底禁用 LOW 层适合对稳定性要求高、不在乎那点成本的场景。反过来如果你在跑批量低价值任务可以把它设成LOW放开降级。配置改完后OMC 需要重新加载。多数情况下重启会话即可部分版本支持热重载具体看你的 OMC 版本说明。4. 验证请求路由是否真的生效配置写完不代表路由生效。三层路由最容易出的问题是“配置看起来对但实际所有请求都走了默认层级”。验证要分两步先确认请求能通再确认路由决策符合预期。第一步发一个明显属于 LOW 层的请求比如让 Agent 搜索一个函数定义claude -p find the definition of handleRequest in this repo --agent executor如果路由生效这个请求应该走 Haiku 层。你可以在 OMC 的日志里看到对应的RoutingDecision里面会包含tier、model、reasons三个关键字段。reasons会告诉你为什么选了这个层级比如命中了simplificationKeywords里的find。第二步发一个明显属于 HIGH 层的请求比如架构重构claude -p refactor the auth module to decouple token validation from session storage --agent architect这个请求应该命中escalationKeywords里的refactor路由到 HIGH 层。如果日志里显示的还是 MEDIUM说明规则引擎没匹配上需要检查关键词拼写和大小写。第三步用 OMC 提供的解释接口直接盘问路由决策。多数版本支持类似这样的调用omc route explain --prompt analyze the root cause of this memory leak --agent analyst输出会包含分数拆解形如{ lexical, structural, context, total, tier }。如果total落在 4 到 8 之间但tier显示 HIGH说明是规则引擎覆盖了评分结果reasons里会写明是哪条规则。实测下来最容易误判的是边界任务。比如一个既包含search又包含security的请求两个关键词权重相反最终层级取决于规则优先级。这种时候不要凭感觉直接看reasons数组它会告诉你哪条规则先匹配。5. 本篇常见错排查路由完全不生效所有请求都走默认层级。先检查routing.enabled是否为true再确认settings.json里的model字段没有把路由锁死。有些版本的 OMC 在model显式指定时会跳过路由把它删掉或设为auto。请求报 401 或鉴权失败。大概率是ANTHROPIC_AUTH_TOKEN没读到环境变量。在终端里echo $TAOTOKEN_API_KEY确认变量存在注意settings.json里的${}语法是否被正确解析。如果用的是 shell 配置文件记得重新 source 一次。LOW 层请求被误判成 HIGH成本不降反升。检查escalationKeywords是否配得太宽。比如把test加进去会导致所有涉及测试的请求都升级。关键词要选真正代表高复杂度的词而不是高频词。HIGH 层请求被压到 LOW任务频繁失败重试。看minTier是不是设得太低同时检查previousFailures上下文信号有没有生效。如果一个任务已经失败两次路由应该自动加分升级如果没升说明上下文信号没传进来检查 Agent 的会话状态是否正确继承。规则和评分冲突结果不稳定。这是设计上的正常行为。当规则层级和评分层级相差超过一级时系统会降低置信度并倾向选更高层级。如果你希望结果更可预测可以减少agentOverrides里的auto改成固定层级。改了 config.toml 但行为没变。确认 OMC 读的是你改的那个文件。多项目环境下容易改错路径用omc config path之类的命令确认当前生效的配置位置。6. 把路由接进你的日常工作流三层路由配好之后真正的收益来自持续观察和微调。建议在项目初期打开路由日志跑一周之后统计各层级的实际占比。如果 HIGH 占比超过三成说明你的任务本身就偏复杂或者escalationKeywords太敏感如果 LOW 占比超过七成可以检查是不是有该升级的任务被误降级了。对于长期跑编码和 Agent 协作的场景可以考虑用 Coding Plan 把路由配置和额度管理统一起来避免每次调层级都要重新核对用量。如果你还在验证不同模型层在具体任务上的表现差异模型对话页面可以快速对比同一 Prompt 在不同层级下的输出质量帮你校准tierModels的映射。路由这件事配一次不够它更像是一个需要随项目演进的工程系统。先把三层跑通再根据日志慢慢调权重和关键词比一上来就追求完美配置要务实得多。
返回列表