模型均匀分配策略
跨4个 Provider(GitHub Copilot、my-azure、prism-foundry、liwei-eastus2)的 ~73 个模型部署,按角色能力需求均匀分配给10个 Agent。
概述
模型均匀分配策略是为 OpenClaw 多代理架构设计的资源管理方案。随着系统从单一 provider 扩展到4个 Azure + GitHub Copilot provider、约73个模型部署,如何合理地将模型资源分配给不同职能的 Agent 成为关键问题。
分配原则遵循”避免 pro 模型(成本高)、按角色匹配能力、均匀分散到各 provider 避免单点瓶颈”。核心推理任务使用 Claude Opus 4.6,研究任务使用 Claude Sonnet 系列,工作和开发任务使用 GPT-5.4/5.2/5.3,英语教学使用中文底座 FW-GLM-5。
经过多轮测试和调整,最终形成了 GitHub Copilot 3个、my-azure 3个、prism-foundry 2个、liwei-eastus2 2个的均衡分布,并清理了闲置9天的 javis 和 javis-code 代理。
关键点
- 4个 Provider:GitHub Copilot (15模型)、my-azure/resley-sweden (39模型)、prism-foundry (3模型)、liwei-eastus2 (16模型)
- 总计约73个模型部署:涵盖 Claude、GPT-5.x、DeepSeek、GLM-5 等
- 分配原则:避开 pro 系列,按角色匹配,均匀分散
- 闲置清理:删除了闲置9天的 javis 和从未运行过的 javis-code
- Azure AI 模型 API 差异:三种 API 路径格式各不相同(Cohere rerank / Cohere embed / OpenAI embed)
- 新 Provider 添加:us2 (resley-east-us-2-resource) 包含8个模型,所有 bot 可用
技术细节
最终分配方案
| Bot | Provider | 模型 |
| ---------------- | ---------------- | --------------------------- |
| @dora | github-copilot | claude-opus-4.6 |
| @researcher | github-copilot | claude-sonnet-4.6 |
| @research-craft | github-copilot | claude-sonnet-4.5 |
| @work-assistant | my-azure | gpt-5.4 |
| @clawline-gw | my-azure | gpt-5.2 |
| @clawline-ch | my-azure | gpt-5.3-chat |
| @misse | prism-foundry | FW-GLM-5 |
| @research-portal | prism-foundry | gpt-5.4 |
| @clawline-web | liwei-eastus2 | DeepSeek-V3.2 |
Provider 配置
# prism-foundry
Base URL: https://prism-foundry-b2p.openai.azure.com/openai/v1
Models: gpt-5.4, FW-GLM-5, text-embedding-3-large
# liwei-eastus2
Base URL: https://liwei-m6u2eooi-eastus2.openai.azure.com/openai/v1
Models: 16个 (GPT-5.x系列, DeepSeek, FW-GLM-5, embedding等)
# us2 (resley-east-us-2-resource)
Base URL: https://resley-east-us-2-resource.cognitiveservices.azure.com/
Models: gpt-5.3-codex, gpt-5.4, gpt-5.4-pro, gpt-4o, gpt-4.1, gpt-5-mini, FW-GLM-5, FW-MiniMax-M2.5
Azure AI 模型 API 清单
| 模型 | 路径格式 | 备注 |
| ------------- | ---------------------------------- | -------------- |
| Cohere rerank | /providers/cohere/v2/rerank | model 在 body 里 |
| Cohere embed | /openai/v1/embeddings | input 必须是数组 |
| OpenAI embed | /models/embeddings?api-version=... | input 可以是字符串 |
GPT-5.3-codex 测试
- 在 Azure Foundry 部署后通过 OpenClaw 测试成功
- 需要将模型添加到 provider list 和
agents.defaults.models允许列表 - 注意
gpt-5.4需要用max_completion_tokens而非max_tokens
时间线
- 2026-03-02: 测试 Azure 模型 gpt-5.3-codex,确认可用
- 2026-03-18: 添加 prism-foundry provider(3个模型),全部测试通过
- 2026-03-18: 添加 liwei-eastus2 provider(16个模型)
- 2026-03-18: 整理全部73个模型部署,删除闲置 javis/javis-code
- 2026-03-18: 完成10个 agent 模型均匀分配到4个 provider
- 2026-03-19: 验证6个 Azure AI endpoint(Cohere rerank/embed + OpenAI embed × 2节点)
- 2026-03-20: 添加 us2 provider (resley-east-us-2-resource),8个模型,所有 bot 可用
相关页面
- multi-agent-architecture
- cohere-embed
- agentic-bi
- wukong-bot
- Copilot→Anthropic 代理服务
- Copilot 详情
- EAIPS 中转代理迁移
详见 Copilot→Anthropic 代理服务:通过逆向 GitHub Copilot 链路实现免 Anthropic API Key 使用 Claude 模型,含 Dashboard 和 Claude Code CLI 集成。
详见 Copilot 详情:MiniMax Provider 配置、CraftBot Azure 端点迁移(39个模型)、GitHub Copilot stream:false 崩溃调试。
模型端点健康检查(2026-04-09)
来源:research Agent 自动心跳检查
Research Agent 定期执行模型端点健康检查。04-09 检查发现所有端点均可达,部分返回 400 是因为 max_tokens=1 过小导致模型拒绝生成(非故障)。调高为 max_tokens=10 后全部返回 200。
04-09 健康检查结果
| Provider | 模型 | 状态 | 说明 |
|---|---|---|---|
| us2 | gpt-5.4 | ✅ 200 | — |
| us2 | gpt-4o | ✅ 200 | — |
| sweden-ext | gpt-5.4 | ✅ 200 | — |
| github-copilot | claude-opus-4.6 | ✅ 200 | 当前会话验证 |
关键发现:400 错误不代表端点故障。Azure OpenAI 在 max_completion_tokens 过小时会返回 400(模型成功连接并响应,只是拒绝以极小 token 数生成)。健康检查应使用 max_tokens=10 或更高值。
04-10 健康检查结果
| Provider | 模型 | 状态 | 说明 |
|---|---|---|---|
| sweden-ext (主) | gpt-5.4 | ✅ 可达 | 400=max_tokens 限制,非故障 |
| sweden-ext | gpt-4o | ✅ 200 | — |
| us2 (备) | gpt-5.4 | ✅ 可达 | — |
| clawfood (备) | gpt-5.4 | ✅ 可达 | — |
| liwei-eastus2 (备) | gpt-5.4 | ⚠️ 401 | API Key 失效,非主用,有 fallback |
| github-copilot | claude-opus-4.6 | ✅ | 当前会话运行中 |
详见 EAIPS 中转代理迁移:2026-04-11 liwei-eastus2 API Key 失效后通过 EAIPS 中转代理恢复,最终 5 个 Azure provider 全部在线。
2026-05-04 备用 Azure provider 三连 401
dora 在 09:54 / 13:55 CST infra-alert-check 巡检里发现 3 个备用 Azure OpenAI provider 同时返回 401(API key 过期/已轮换),主生产端点不受影响:
| Provider | 模型 | 状态 |
|---|---|---|
| ⚠️ us2 (Azure 直连) | gpt-4o / gpt-5.4 | 401 key 失效 |
| ⚠️ sweden-ext | gpt-5.4 / gpt-4o | 401 key 失效 |
| ⚠️ clawfood | gpt-4o | 401 key 失效 |
| ✅ eaips-eastus2 (主) | gpt-5.4 / gpt-4o | 200 |
| ✅ eaips-sweden (主) | gpt-5.4 | 200 |
| ✅ github-copilot | claude-opus-4.5/4.6 | 200 |
主生产链路 eaips-eastus2 / eaips-sweden + github-copilot 仍稳定,不影响当前任务,但需 Resley 有空时刷新这三个 provider 的密钥。dora 判定为 warning 级别,未触发告警通知。
2026-04-25 GPT-5.2 / GPT-4.1 实际使用审计
Resley 在 main 频道同时问 dora / ottor / nexora:「检查所有任务里有哪个调到 GPT-5.2 或 GPT-4.1」。三家对账后定版结论:
| 模型 | 在哪用到 | 类型 |
|---|---|---|
github-copilot/gpt-5.2 | 仅在 openclaw.json 模型注册表 | 未被任何 cron / agent 主动调用 |
github-copilot/gpt-5.2-codex | 仅在 openclaw.json 模型注册表 | 未被任何 cron / agent 主动调用 |
github-copilot/gpt-4.1 | ~/.openclaw/skills/housework/SKILL.md 第 27 行 显式要求用 github-copilot/gpt-4.1 spawn 子 agent 做摘要 | 唯一实际使用点 |
azure-foundry/gpt-4.1 | 仅在 openclaw.json 模型注册表 | 未被任何任务调用 |
nexora 历史调用清单(验证用):Claude Opus 4.6 占绝对主力(4837 次),Sonnet 4.6 (420)、Haiku 4.5 (154)、Opus 4.5 (98)、Gemini 3.1 Pro (88)、GPT-5.3 Codex (46)、GPT-5.4 (13),GPT-5.2 / GPT-4.1 调用次数为 0。
dora 早先一次回复误把「GPT-5.4 是 GPT-5.2 的超集 → Labor Hour Reminder cron 算调用了 GPT-5.2」算进去 ⚠️ 已被 ottor / nexora 后续审计推翻:5.4 ≠ 5.2,注册表存在 ≠ 实际调用。以 ottor / nexora 的审计为准。
实践含义:清理 openclaw.json 时可以把 gpt-5.2 / gpt-5.2-codex / azure-foundry/gpt-4.1 三个模型注册项移除而不影响任何运行任务;housework skill 是唯一需要保留 GPT-4.1 access 的地方。
2026-04-25 LLM Wiki / Hermes 任务模型链路
Resley 在微信问「llm wiki 整理这个任务调了哪些模型,费用大不大」。明确化:
- 当前 Hermes session(discord/微信/cli)默认
claude-opus-4.7viaprovider=copilot(GitHub Copilot proxy → Anthropic API),代理在localhost:4819由~/projects/github-copilot-anthropic-proxy反代到api.eagle.openclaws.co.uk - LLM Wiki 的检索(
wiki-query/llm-wikiskill)是纯本地 ripgrep + read_file,不调任何远程模型 - 6 个 wiki 相关 cron 任务(
clawline-raw-ingest03:00 /hermes-raw-ingest每小时 /wiki-compactor-daily周一-六 05:00 /wiki-compactor周日 04:00 /wiki-archive-stale周日 06:00 /daily-summary-weixin03:15)都用默认模型 = Claude Opus 4.7 via copilot proxy;quartz-wiki-rebuild每 10 分钟纯构建无 LLM - 费用:走 GitHub Copilot 订阅(39 Pro+),按订阅而非 token 计费 — 这些 cron 跑多少次都不额外花钱。对照官方 Anthropic Opus 4.7 75 per M token,6 任务/天估算 $5-15/天才是直接调用的成本
详见 copilot-anthropic-proxy、llm-wiki、hermes-agent-setup。
2026-04-25 infra-alert-check Copilot 全军覆没事故
04-25 13:59
infra-alert-checkcron 报FallbackSummaryError: All models failed (4)。
github-copilot/claude-opus-4.6:LLM request rejected: thinking: Input tag 'adaptive' found using 'type' does not match any of the expected tags: 'disabled', 'enabled'— 请求体里塞了thinking.type=adaptive,但 Copilot Anthropic proxy 只接受disabled/enabled,schema 不兼容 ⚠️github-copilot/claude-opus-4.5/sonnet-4.6/sonnet-4.5:No available auth profile for github-copilot (all in cooldown or unavailable)— 多 token 全部进 cooldown,无 fallback 资格- 全 4 个候选模型走完都失败后 fallback summary 也炸出,cron 任务整体 fail
待办:① 排查 Hermes/cron 谁在请求里硬塞 thinking.type=adaptive(应只在 Anthropic 直连或 enabled/disabled 字典内);② Copilot 多 token cooldown 命中需要 stagger / 换成本 provider,不能让一个心跳任务把订阅打死。详见 copilot-anthropic-proxy cooldown 章节、hermes-agent-setup。
2026-04-28/29 默认模型切到 claude-opus-4.7-1m-internal
04-29 18:34 clawline 拉 /models 共 22 模型:
- Anthropic 9:
haiku-4.5/sonnet-4/sonnet-4.5/sonnet-4.6/opus-4.5/opus-4.6/opus-4.6-1m/opus-4.7/opus-4.7-1m-internal - OpenAI 6:
gpt-5.2/gpt-5.2-codex/gpt-5.3-codex/gpt-5.4/gpt-5.4-mini/gpt-5.5 - Azure OpenAI 2:
gpt-4.1(128K) /gpt-5-mini(264K) - 其余 5 为 minimax/glm 等社区模型;无 Gemini 下发(账号档位 / settings.Copilot.Models 没启 Google / 区域 gating)
04-29 20:12 Hermes config.yaml model.default: claude-opus-4.7 → claude-opus-4.7-1m-internal(200K → 真 1M ctx),系统提示同步触发 [Note: model was just switched ... Adjust your self-identification accordingly.]。
opus-4.7 effort medium-only 限制
claude-opus-4.7 上游强制:
400 invalid_reasoning_effort:
output_config.effort "high" is not supported by model claude-opus-4.7;
supported values: [medium]
只有 claude-opus-4.7-1m-internal(以及独立的 -high/-xhigh 变体)才支持 high effort。-high/-xhigh 首次试用还撞 Something went wrong,回退到 claude-opus-4.6 + --effort high(或 --think high)暂稳。
Hermes 派 CC 命令模式
MAX_THINKING_TOKENS=10000-15000 \
zsh -ic 'claude --print --dangerously-skip-permissions \
--model claude-opus-4-7 --effort medium --max-turns N'要 high effort 必须把 --model 切成 claude-opus-4.7-1m-internal,否则 400。
2026-04-30 GitHub Copilot 模型清单大换血
dora 让 clawline 重扫 api.enterprise.githubcopilot.com /models,更新 models.json:
- 🆕 新增 6 个:
claude-opus-4.7/claude-opus-4.7-high/claude-opus-4.7-xhigh/claude-opus-4.6-1m(百万上下文显式条目)/gpt-5.5/minimax-m2.5 - 🗑️ 下线 7 个:
gemini-3-pro-preview/gpt-5等(清单未全列) - 当前 github-copilot provider 30 个模型可用(旧 24 个 → 新 30 个)
/model github-copilot/claude-opus-4.7切换正常;高思考模式(claude-opus-4.7-high/xhigh)首次尝试时一度Something went wrong,回退claude-opus-4.6+/think high稳定,疑 4.7 高思考通道未完全 ready
2026-04-12 更新
- OpenClaw 支持多个 model provider:clawfood(7)、eaips-eastus2(15)、github-copilot(15/20)、sweden-ext(12)、us2(10)
- GitHub Copilot 提供了最新模型:claude-opus-4.6(百万上下文)、gemini-3.1-pro-preview、gpt-5.4
resley-sweden的 API key 认证已被禁用,需切换到其他 provider
2026-04-13 Hermes 上下文长度 Bug
Hermes Agent 在 agent/model_metadata.py 的 get_model_context_length() 里,对 provider=copilot 的 claude-opus-4.6 错报 144K,应为 1M。
根因: step 5 优先查 models.dev,而 models.dev 对 github-copilot 的 Opus 4.6 返回的是 144K(错误数据),代码没走到硬编码 fallback DEFAULT_CONTEXT_LENGTHS = 1000000。
修复方案 A(已落地): 在 step 5 之前加 copilot 专用 override:
if effective_provider == "copilot":
for default_model, length in sorted(
DEFAULT_CONTEXT_LENGTHS.items(), key=lambda x: len(x[0]), reverse=True
):
if default_model in model.lower():
return length未命中的模型仍走 models.dev。同时 Copilot Proxy 在请求层把 claude-opus-4.6 remap 到 claude-opus-4.6-1m,两侧一致拿到 1M 上下文。
2026-04-15 Copilot 1M Context 终极方案 — config override
hermes:discord/resley/2026-04-15。Resley 在 fries 频道复现「opus 4.6 还是 144K」,几次尝试后定型「只有 config 层
context_length覆盖能赢」。
已 fail 的 3 条路(都不要再试):
- 加新模型变体
claude-opus-4.6-1m:hermes_cli/models.pyCopilot 模型列表 +DEFAULT_CONTEXT_LENGTHS都加了,但 Copilot API 不认-1m后缀,回400 model_not_supported - 加 alias
claude-opus-4.6-1m → claude-opus-4.6:API 那侧能识别了,但 alias 在 normalize 阶段把名字转回claude-opus-4.6,context length 又走回 144K - 在 normalize 钩子里 special-case:Copilot provider 走的是
_STRIP_VENDOR_ONLY_PROVIDERS(hermes_cli/models.py:377),只去 vendor 前缀,且 Discord gateway 在 normalize 之前就把模型名发出去了——hook 接管不到
唯一可靠方案:
# ~/.hermes/config.yaml
model:
name: claude-opus-4.6
context_length: 1000000 # priority 0,绕过 models.devcontext_length 在 resolution chain 里是 step 0,永远赢 models.dev 的 144K。Hermes 内部有 1M 上下文,超长请求 Copilot 服务端真拒就靠 probe-down 自动降级。
经验已 dump 进 Hermes skill hermes-copilot-context-override(root cause / fix / 失败方案备忘 / 关键代码路径)。下次复发查 skill 不重蹈。
2026-04-19 Copilot Context Override 表 + reasoning_effort 修正
承接 04-13/04-15 的 Copilot 1M 上下文调试,最终方案落到 agent/models_dev.py 的硬编码 override 表 _CONTEXT_OVERRIDES:
| Provider/模型 | Context | 修正原因 |
|---|---|---|
copilot/claude-opus-4.7 | 200K | models.dev 错报 144K |
copilot/claude-opus-4.7-high | 200K | 同上 |
copilot/claude-opus-4.7-xhigh | 200K | 同上 |
copilot/claude-opus-4.6 | 1000000 | models.dev 错报 144K,实际 1M |
copilot/claude-opus-4.6-1m | 1000000 | 显式条目,避免 alias 转回 144K |
get_model_context_length() 的 step 0 优先查 _CONTEXT_OVERRIDES,命中即返回,不再走 models.dev → 不再被错误数据污染。
reasoning_effort 配置修正:之前 ottor 把 reasoning_effort: high 写进 hermes config,但 Copilot Anthropic proxy 对 high 经常 503 / 长尾延迟 + cooldown 触发率高(详见 04-25 infra-alert-check 事故的前因)。改为 medium 后稳定。high/xhigh 只在显式选择对应模型变体时生效,不再做全局默认。
2026-04-13 summary_model 误配
Hermes config.yaml 的 summary_model 被设为不存在的 github-copilot/gemini-3-flash-preview,导致每次上下文压缩 400 model_not_supported。改为 gpt-4o-mini 后正常。详见 hermes-agent-setup。
2026-05-07 claude-opus-4.7-1m-internal 进入 Copilot 公开模型清单
之前要用 1M 上下文的 Opus 4.7 必须靠 Copilot proxy 内部 list 拼名 + Hermes config.yaml 手动 model.default 写死(-1m-internal 不在 /models 返回列表,CLI selector 看不到)。5-07 重新拉 Copilot /models 后该模型已直接出现在公开清单,hermes model selector 可一键切换,不再需要手 patch config。
含义:① skill / hermes-agent-setup 里”必须手写 default”的备忘可以撤回;② github-copilot/* 的注册表里也可以正式列入这一条而不是留作隐藏 fallback;③ 同时观察 claude-opus-4.7-high/xhigh 是否也跟着开放(截至 5-07 仍只是 1m-internal 露面)。