会话索引
codex的‘dev:opencodego-模型路由配置‘
一、当前方案
当前采用的是一层轻量的 Agent 编排,而不是在 OpenCode Go provider 外面再搭一个独立的模型网关:
用户请求 → @router → route-* 子 Agent → 结果返回
@router 负责判断任务类型和委派,不直接修改文件,也不执行 shell 命令。真正的仓库探索、方案分析、代码修改和审查由不同的子 Agent 完成。
OpenCode 的 Agent 分为 primary agent 和 subagent;subagent 可以被主 Agent 通过 Task 工具调用,也可以由用户使用 @ 直接调用。当前 Router 使用 mode: all,因此既可以作为入口使用,也可以被直接选择。Agents 文档
二、路由表
| 入口 | 模型 | 负责什么 | 权限边界 |
|---|---|---|---|
@router | opencode-go/gpt-5.6-luna | 判断任务类型、委派子 Agent、汇总结果 | 禁止编辑和 Bash,只允许调用指定的 route-* Agent |
@route-explore | opencode-go/gpt-5.6-luna | 搜索代码、定位文件、追踪真实执行路径、收集证据 | 禁止编辑,Bash 允许 |
@route-plan | opencode-go/deepseek-v4-pro | 根因分析、架构设计、实施计划和风险判断 | 禁止编辑,Bash 允许 |
@route-build | opencode-go/gpt-5.6-luna | 实际修改代码、内容和配置,运行必要验证 | 编辑和 Bash 允许 |
@route-review | opencode-go/deepseek-v4-pro | 检查 diff、测试、构建、发布风险和敏感信息 | 禁止编辑,Bash 允许 |
@route-docs | opencode-go/gpt-5.6-luna | 中文 Markdown、文档、注释和结构化内容;GPT-5.6 Luna 可直接接收并理解图片 | 编辑和 Bash 允许;默认不调用 image-vision skill |
@route-vision | opencode-go/gpt-5.6-luna | GPT-5.6 Luna 直接分析截图、界面布局、本地图片和 OCR,必要时处理图片并修改实现 | 编辑和 Bash 允许;默认不调用 image-vision skill |
全局默认模型仍是 opencode-go/deepseek-v4-flash;当前默认入口 Agent 是 router。规划和审查任务使用 DeepSeek V4 Pro,Router、仓库探索、实际修改、中文文档和视觉任务使用 GPT-5.6 Luna。
GPT-5.6 Luna 支持直接接收并理解图片输入,因此 route-docs 和 route-vision 都可以使用模型自身的视觉能力,不需要额外调用 image-vision skill。遇到需要图片理解或图片模态输入的任务,优先交给 route-vision;如果任务主体是文档处理,同时需要理解图片,则可以交给 route-docs。
三、典型工作流
1. 简单任务:单 Agent
@router 帮我找出这个页面为什么没有数据
→ route-explore
@router 把这个按钮改成统一的主题色
→ route-build
@router 分析这张界面截图,找出布局问题和可能的 CSS 原因
→ route-vision
2. 复杂任务:分阶段委派
@router 诊断并修复一个跨多个文件的功能问题
→ route-explore → route-plan → route-build
涉及发布、部署或高风险修改时,再显式增加:
→ route-review
当前 Router 提示词要求优先使用最小必要序列,但复杂任务仍可能触发多个子 Agent。因此每个子 Agent 都会产生独立的输入、工具调用和输出,整体 token 用量是累加的,而不是只计算 Router 本身。
四、配置文件路径
全局默认配置
~/.config/opencode/opencode.json
当前全局配置将默认模型设为 opencode-go/deepseek-v4-flash,并将默认入口 Agent 设为 router:
{
"$schema": "https://opencode.ai/config.json",
"model": "opencode-go/deepseek-v4-flash",
"mcp": {},
"default_agent": "router"
}
这样在没有显式指定 Agent 时,OpenCode 每次启动新会话都会默认进入 router,而不是内置的 build;需要时仍可以显式切换到其他 Agent。
OpenCode 的全局用户配置使用 ~/.config/opencode/opencode.json;全局 Agent 则放在同目录下的 agents/ 文件夹。Config 文档
Agent 定义目录
~/.config/opencode/agents/
├── router.md
├── route-explore.md
├── route-plan.md
├── route-build.md
├── route-review.md
├── route-docs.md
└── route-vision.md
每个 Markdown 文件的 frontmatter 保存 Agent 的模型、模式和权限,正文保存角色提示词。这样模型映射和权限边界不会混在一个很长的 JSON 配置里。
其他现存配置
~/.config/opencode/opencode.jsonc
~/.opencode/opencode.json
opencode.jsonc 当前只保留 schema;~/.opencode/opencode.json 是另一条独立配置链路。MiniMax MCP 已于 2026-08-29 临时停用,模型路由仍保持独立;本记录不保存任何 API key。
五、用量观察策略
暂时不进一步收紧 Router,先使用一段时间观察真实用量和效果。
重点观察:
- 一个普通请求是否经常触发两个以上子 Agent;
route-explore是否反复读取大量相同文件;route-plan是否在简单任务中被不必要地调用;route-review是否只在发布前或明确要求时使用;- Go 的五小时、周和月度额度是否出现异常消耗。
如果用量明显增加,再将策略改成:
默认只调用一个最合适的子 Agent
→ 启动第二个 Agent 前先征得确认
→ 只在复杂或高风险任务中运行完整流水线
这比一开始就引入更复杂的外部模型路由器更容易观察问题来源,也更容易回退。OpenCode Go 的额度按模型使用价值计算,低成本模型适合高频探索和实际修改,较高成本模型主要保留给复杂规划与发布审查。OpenCode Go 文档
六、当前验证状态
~/.config/opencode/opencode.json已通过 JSON 语法检查;- 7 个 Agent 文件的 frontmatter、模型映射和权限均已检查;
- OpenCode CLI 的
debug agent、providers和models命令仍受到本机opencode.log文件访问异常影响,尚未完成动态识别测试; - 未通过真实 Go 请求做端到端测试,因此当前文章记录的是配置文件层面的已验证状态,不把动态模型目录识别当成已确认结果。