我把 Hermes 的模型换成 GPT-5.6 Luna:一次被价格逼出来的迁移

DeepSeek 涨价之后,我做的第一件事不是改配置,而是算账。

过去 Hermes 里同时跑着 DeepSeek V4 Flash、DeepSeek V4 Pro、Gemini Flash Lite 和其他模型。主会话用一个,辅助任务用另一个,Cron 又是另一套。看起来每个位置都选了“最合适”的模型,实际维护起来很麻烦:价格要分时段看,模型要分能力看,某个辅助任务出了问题,还得先判断到底是哪条 provider 链路。

8 月 17 日 DeepSeek 要切换新的价格体系,这件事把问题推到了眼前。尤其是 Pro,缓存命中和未命中的价格差距很大,输出价格也不低。模型便宜不便宜,不能只看缓存命中那一列。只要任务偶尔缓存未命中,或者需要生成一篇长报告,账单很快就会变得难看。

于是我决定先把文本模型统一到 GPT-5.6 Luna 系列。它不一定在所有维度都赢,但价格、速度、工具调用和配置复杂度暂时能放在同一张账上看。

先把四个 Luna 版本分清楚

OpenRouter 上的四个名字,容易被理解成四个完全不同的模型。实际要分两组看。

第一组是能力档位:

  • openai/gpt-5.6-luna:标准推理模式,实时调用。
  • openai/gpt-5.6-luna-pro:同一底层模型,但使用 Pro 推理模式,给复杂问题更多推理预算。

第二组是调用方式:

  • openai/gpt-5.6-luna:batch
  • openai/gpt-5.6-luna-pro:batch

这两个是异步 Batch API 通道,不是把普通模型换个后缀就能得到的“便宜同步版”。Hermes 的普通对话、辅助任务和 Cron 都依赖同步请求、工具调用和多轮 Agent loop。要接 Batch,得另外做提交、轮询、结果落盘和推送适配。

所以这次迁移只用了前两个实时模型,没有把 Batch 填进 Cron 的 model 字段。

第一层:先换主模型

主模型改成:

model:
  default: openai/gpt-5.6-luna
  provider: openrouter

fallback 也改成 Luna。

delegation 没有单独指定模型,继续继承主模型。这样主会话、子代理和普通工具调用先统一到同一个基础模型,出了问题比较容易定位。

第二层:辅助模型没有一刀切

辅助任务按复杂度拆成两档。

普通 Luna 负责:

vision
web_extract
compression
skills_hub
title_generation
tts_audio_tags
profile_describer
monitor
session_search
flush_memories
background_review
moa_reference

这些任务大多是提取、压缩、整理、分类和轻量判断,没必要固定用 Pro。

Luna Pro 负责:

approval
mcp
triage_specifier
kanban_decomposer
curator
moa_aggregator

它们涉及安全审批、工具编排、任务拆解、技能治理和多结果聚合。这里如果模型只做机械整理,Luna 就够了;如果它要替我判断风险、选择路径,Pro 更稳一些。

视觉辅助也从原来的 Gemini Flash Lite 改成了实时 Luna。图片生成没有跟着改,因为图片生成是另一条能力链,最后换成了:

google/gemini-3-pro-image

第三层:Cron 单独迁移

Cron 是最容易被忽略的一层。

主模型改了,不代表 Cron 应该自动跟着漂移。以前的 Cron 配置里,很多任务还钉在 DeepSeek。既然这次决定停用 DeepSeek,就把 18 个 LLM Cron 逐个改成 OpenRouter 的 Luna 系列,同时保留 20 个 no_agent 脚本任务原样运行。

当前分工是:

模型 任务类型
GPT-5.6 Luna 新闻聚合、Crypto 日报、定投日历、基金周度收益、记忆整理、数据一致性检查
GPT-5.6 Luna Pro A 股收盘分析、基金分析、QDII 分析、周报、市场综合判断、Dojo、失败兜底
no_agent 实时采集、阈值监控、数据补写、下载和其他纯脚本任务

这里有一个实际收益:no_agent 任务一直不消耗模型 Token。能用脚本完成的事情,不应该为了“模型统一”给它硬塞一个 LLM。

迁移时我还清掉了每个已迁移任务的旧 model/provider snapshot,避免 Cron 的模型漂移保护把新配置误判成异常。

DeepSeek API 也删掉了

只改 Cron 还不够。DeepSeek provider 和 API Key 留在系统里,后面总会有旧脚本、旧 profile 或某个遗忘的辅助路径尝试调用它。

这次做了三步清理:

hermes auth remove deepseek 1

然后从 ~/.hermes/.env 中清掉 DEEPSEEK_API_KEY,再从 config.yaml 删除 api.deepseek.com 的 custom provider。

最后检查 Cron、主会话和 session_model_usage,确认迁移之后没有新的 DeepSeek 调用记录。

这一步也解释了一个看似奇怪的账单问题:8 月 16 日 DeepSeek 官方控制台出现了一笔 Pro 消费,但本机 state.db 当天的 sessions 和 model usage 都没有 deepseek-v4-pro。删除 Key 之后,这条无法对应来源的调用路径也被关掉了。

两天后的数据:速度确实快了

迁移切点记为:

2026-08-14 14:58

我用两套数据看切换前后的 Cron。

第一套是 Cron 调度执行记录,第二套是 state.db 里实际产生的 Cron 会话。后者更适合看模型和 Token,因为它记录了实际调用的模型。

LLM Cron 会话耗时

阶段 会话数 中位耗时 平均耗时 P90
DeepSeek 阶段 514 413.7 秒 529.5 秒 1027.6 秒
Luna 阶段 47 100.8 秒 154.8 秒 401.7 秒

目前看,中位耗时下降约 76%,平均耗时下降约 71%,P90 下降约 61%。

具体任务的方向也比较一致。切换后,全球 AI 新闻聚合、Crypto 日报、HexaMind 整理、Dojo、基金分析、QDII 分析和 A 股收盘分析的中位耗时都比过去低。

这不是一场严格的 A/B 测试。两边的新闻量、网络状态、Prompt 和任务状态都可能不同。样本也还不够大。但“Luna 跑得更快”至少已经不再只是体感。

成功率暂时没有变坏

切换前的 Cron 调度记录中,有 938 次 completed、9 次 failed、15 次 unknown。切换后的记录是 230 次 completed、0 次 failed、5 次 unknown。

这组数字不能证明 Luna 长期一定更稳定,毕竟切换后的样本里有不少脚本任务,而且运行时间还短。不过至少目前没有看到因为迁移模型导致的 Cron 大面积失败。

代价:Pro 用得比想象中多

速度变快了,账单不会自动变小。

切换后实际 LLM Cron 的 Token 大致是:

Luna:约 14.7M
Luna Pro:约 112.4M

Pro 占了大约 88%。原因很简单:复杂的基金、市场和长报告任务都在 Pro 上,而这些任务本来就比定投日历、数据检查更吃 Token。

所以这次迁移解决的首先是:

  • DeepSeek 涨价风险
  • provider 过多带来的维护成本
  • Cron 运行慢和偶发卡死
  • 辅助模型风格不一致

它还没有解决“所有任务都便宜”这个问题。

目前 OpenRouter 给 Luna 和 Luna Pro 做五折活动,输入约为 $0.10 / 百万 Token,输出约为 $0.60 / 百万 Token。活动什么时候结束还不清楚,所以我没有急着把 Pro 任务迁到其他便宜模型。

为什么暂时不换更便宜的模型

OpenRouter 上当然有更便宜的选择:

  • Gemini 2.5 Flash Lite,输入和 Luna 促销价接近,输出更便宜。
  • Qwen3 32B,中文结构化任务的价格更低。
  • gpt-oss-120b,价格非常低,适合低风险后台任务。

但每换一个模型,就要重新验证一遍:

工具调用是否稳定
JSON 是否容易截断
Cron 是否能按时结束
中文报告是否符合模板
长上下文是否够用
失败兜底是否还可靠

模型便宜几倍,重新返工的时间也可能把差价吃掉。现在 Luna 五折还在,先把运行数据积累起来,比马上做第二次迁移更划算。

现在的配置

主会话:openrouter/openai/gpt-5.6-luna
fallback:openrouter/openai/gpt-5.6-luna

普通辅助:openrouter/openai/gpt-5.6-luna
复杂辅助:openrouter/openai/gpt-5.6-luna-pro

普通 Cron:openrouter/openai/gpt-5.6-luna
复杂 Cron:openrouter/openai/gpt-5.6-luna-pro
脚本 Cron:no_agent,不调用模型

图片生成:google/gemini-3-pro-image
DeepSeek:API Key 和 custom provider 已删除
Batch:未启用

接下来先观察两周,不马上调整。

观察的不是一个漂亮的平均数,而是每类任务是否稳定:A 股分析有没有漏数据,基金报告有没有格式问题,HexaMind 是否正常写入,Cron 有没有超时和重复推送。两周后再看 Luna Pro 里哪些任务确实值得用 Pro,哪些可以降到 Luna,或者交给更便宜的替代模型。

这次换模型没有追求“最便宜”。我只是先把一条复杂、会自己跑的系统,换到一条更容易解释和维护的模型链路上。等折扣结束,账单会告诉我下一步该往哪里走。


相关配置

~/.hermes/config.yaml
~/.hermes/cron/jobs.json
~/.hermes/state.db

本文数字来自当前配置、Cron 执行记录和 state.db,观察期结束后需要重新核对。