mirror of
https://github.com/wahyd4/kb.git
synced 2026-08-08 21:06:27 +10:00
2.7 KiB
2.7 KiB
ingested, status
| ingested | status |
|---|---|
| 2026-08-07 | inbox |
主模型切换:OpenCode Go(订阅)为主 + DeepSeek 官方 fallback(2026-08-07)
大哥拍板:把 Hermes 主模型供应商从 DeepSeek 官方改为 OpenCode Go 订阅(opencode-go 里的 deepseek-v4-flash),不可用时自动 fallback 回 DeepSeek 官方同模型。目的:主流量走 OpenCode Go 订阅额度,省钱(不再按量计费)。
最终配置(~/.hermes/config.yaml)
model:
default: deepseek-v4-flash
provider: opencode-go
fallback_providers:
- provider: deepseek
model: deepseek-v4-flash
- opencode-go:base_url
https://opencode.ai/zen/go/v1,envOPENCODE_GO_API_KEY,别名go/opencode-go-sub;模型列表在hermes_cli/models.py(25 个,含 deepseek-v4-flash、kimi-k3、glm-5.2、mimo 系列等),default_aux_model=glm-5 - 机制:每轮(turn)先试主模型,429/5xx 重试耗尽后切 fallback;401/403/404 立即切(不重试);下一轮自动回到主模型。切换无缝保留上下文,但会重置 prompt cache(成本提示)
踩坑记录
- opencode.ai 有 Cloudflare 防护:无浏览器 UA 直接 403 error 1010,请求必须带 Mozilla UA
- OpenCode Go 的 deepseek-v4-flash 需显式 opt-in:最新版托管在中国区,未确认启用时返回 403 RegionError(提示去 opencode.ai 工作台确认)。403 属 auth 类 → fallback 立即触发,链路仍可用,只是每轮白打一次 403
hermes config set fallback_providers '<JSON字符串>'是坑:值会被存成字符串,而_iter_fallback_entries(fallback_config.py)只接受 dict/list,字符串被静默忽略 → fallback 不生效。原配置fallback_providers: '["openrouter"]'就是这个无效旧格式。正确姿势:用 Hermes 自身 Python APIfrom hermes_cli.config import load_config, save_config写列表hermes fallback add是交互式 TTY 命令,无法脚本化;agent 的 patch 工具被安全策略拒绝直接改 config.yaml(需用hermes config或 Python API)- DeepSeek 官方 API 测试坑:max_tokens=10 时 reasoning_tokens 吃光额度返回空回复(max_tokens=200 正常)——测 deepseek-v4-flash 时 max_tokens 要设够
- gateway 重启防护(详见 08-04 hermes-v020-upgrade):内部任何方式无法重启自身,最终大哥手动重启(20:13 AEST),重启后会话无损继续,当前回复即走 OpenCode Go 主模型验证生效
验证
- opencode-go key 有效、模型在列表中;opt-in 后实测 opencode.ai 返回正常
hermes fallback list:Primary deepseek-v4-flash (via opencode-go),Fallback chain 1 entry deepseek-v4-flash (via deepseek)- gateway 为 systemd user 服务 hermes-gateway.service