订阅者生成图片的默认值变了:Krea 2 Medium Turbo,后面还站着一个 FAL 兜底


你订阅了 Nous 的付费额度,某天让 Hermes 生成一张配图,出来的画质还行——但你翻遍设置也没找到“我到底在用哪个模型”。原因很简单:你从来没打开过 hermes tools 里的图片通道,所以那张图是用首次运行时的默认值生成的,而那个默认值以前是 FAL 的 FLUX 2 Klein 9B。

同一时期还有第二个小别扭:你给了一张参考图,希望模型“照着这个风格画一张”,结果它对图片做了一次视觉解读,然后写了很长一段风格描述塞进提示词里——因为它以为你要的是编辑那张图。Krea 2 其实不做编辑,它复制的是画面观感。

这个窗口里合入的改动一次修掉了这两件事。

默认值只在一个很窄的条件下才会被写入

新的规则可以一句话概括:付费账号的图片默认值是 Krea 2 Medium Turbo,但只在图片通道从未配置过、没有存过模型、并且账号确实有 Krea 权限时才写。

拆开看,每条限定都有它的理由:

  • “从未配置过”:你自己在 hermes tools 里选过模型,就一定不会被覆盖。这是这次改动最重要的性质——它不是“改默认值”,而是“给从没选过的人一个更好的起点”。
  • “付费账号”:免费池没有 Krea 权限,所以它保留原来的 FAL 默认值。免费用户不会因为这次改动拿到一个用不了的模型。
  • “有 Krea 权限”:权限判断和写入是同一条规则(_krea_image_default),首次运行的网关默认值应用走的也是它,不存在两处逻辑各自为政。

所以在 Krea 插件侧,krea-2-medium-turbo 现在是这样一个条目(plugins/image_gen/krea/__init__.py):

"krea-2-medium-turbo": { path: "medium-turbo", price: "$0.015 (text) / $0.0175 (style refs)", upscale: false }

也就是说:纯文本生成约 $0.015 一次,带参考图(风格)的约 $0.0175 一次,且不带隐式放大。

参考图是“复制观感”,不是“编辑”

这是这次改动里对生成质量影响最直接的一条。image_generate 的 schema 以前把 image_url 描述成“要编辑的源图”、把参考图描述成“指导编辑”。Krea 2 读到这套措辞时做了它认为合理的事:先对图片做一次视觉调用,再把一长段风格描述写进提示词。

现在 provider 可以在自己的能力声明里写:

def capabilities(self) -> dict:
    return { ..., "source_image_role": "style" }

一旦声明为 style,schema 的措辞随之改变:这张图的观感会被复制,而不是被编辑;prompt 只需要给主体和场景,参考图只负责提供观感。其他后端渲染的 schema 与之前完全一致——这是一个严格按后端生效的开关。

对使用者的差别很直观:你给一张水彩风格的参考图,以前会拿到一段“水彩、湿画法、纸纹……“的文字描述被塞进提示词;现在模型直接照着那张图的样子画。

什么时候才会回退到 FAL

回退不是“Krea 挂了就重跑”。它有一条很窄的准入条件,核心是必须能证明这次请求压根没有创建任务:

可以回退:

  • 连接从未建立起来(DNS 解析失败,或连接被拒绝)——也就是说没有任何服务器收到过这个请求。
  • 网关回了 429,官方文档明确说明这个状态意味着“没有创建任务”。

绝不回退:

  • 连接在发出请求之后断开、超时、5xx、其他 4xx、返回的 JSON 无法解析,以及任何“已经拿到任务 id”之后的失败——这些情况下任务可能已经存在,而且已经产生计费授权,重跑就是重复扣费。
  • 带源图的请求永远不回退,因为 FAL 会把它们路由到语义不同的编辑端点。

为了区分“从没连上”和“发出去之后断了”,连接类失败现在会报成 unreachable(在 plugins/image_gen/_common.py 里),和“发送后断开”分开处理。

回退之后,结果会告诉你发生了什么

重跑成功不是静默的——工具结果里会带上这些字段:

字段 含义
provider / model 最终实际执行的是谁
fallback_from 从哪个(通常是 Krea 的)模型过来的
fallback_reason 触发回退的原因
note 一句话说明;如果 FAL 也失败了,这里会写明“回退也失败了”

还有两个细节值得知道:

  • 你在 Krea 上要求了放大(upscale),回退到 FAL 后这个要求仍然保留,在那里它对应 FAL 的 Clarity Upscaler,note 会写清楚这一点。
  • 从没用过 FAL 的安装:第一次回退会顺带安装 Hermes 的 FAL 可选依赖——终端里会提示,非交互场景下静默进行,和平时第一次使用 FAL 的行为一致。

想关掉回退

image_gen:
  krea:
    fallback_to_fal: false   # 关闭 Krea 失败后重跑 FAL

这个键的语义是“默认开,只有显式设为 false 才关”(fallback_to_fal_enabled())。如果你对账单可预测性的要求高于“尽量出一张图”,把它关掉是合理的。

怎么确认自己现在用的是什么

# 看一眼图片通道当前的选择
hermes tools

# 直接问配置里存了什么(图片通道的模型键)
hermes config get image_gen

# 生成一次,看结果里的 provider / model 字段
hermes chat -q "generate an image of a mountain lake at dusk"

如果 hermes tools 里显示的是你自己选过的模型,那么这次改动不会碰它;如果你看到的是 krea-2-medium-turbo(付费)或 FAL 默认(免费池),那说明你走的是新默认值。

想了解图片通道的后端选择与路由,可以看 图片与视觉路由指南;视觉上下文的预算控制见 视觉预算指南。