登录一次,连接的应用跟着走:免费版升正式账号不再重连一遍


周五下午你终于决定注册账号。此前你已经用免费版跑了三周,Gmail、Notion、日历都在里面连好了。你打开设置、登录、看到“欢迎回来”——然后打开连接器页面,空的。所有 App 都要重新授权一次,日历、邮件、笔记,一个个点。

这不是幻觉:登录只是把账号信息写到免费身份上,那些连接的应用留在旧身份里,本机上再没有任何东西用得到它。2026 年 10 月 23 日合入的三个 PR 把这条链路整个重做了一遍。

以前的三处别扭

  1. 升级走的是另一条路:在免费版之上登录时,客户端先把免费版“登记转移”一遍,弹一个带自己验证码的特殊授权页,轮询到转移结束才拿到账号 token。没装免费版的话,/login 和 hermes auth upgrade 干脆拒绝启动。
  2. 应用得手动重连:登录把账号盖在免费版上,App 留在旧身份后面,没人迁移。
  3. 打开连接器页面就在后台建身份:哪怕你一个 App 都没连,只要点开那个页面,Hermes 就替你建一个免费 Nous 身份。而且“登录”提示只对用免费试用模型的人显示——用自己的 key 连了 App 的人永远看不到。

现在:一次普通设备登录,登录完再交接

#143235 把 所有 Nous 登录统一成普通设备登录:桌面端、CLI / TUI / 聊天应用里的 /login、以及 hermes auth upgrade,现在跑的是同一条流程——显示设备授权页和验证码,等你批准(或过期、或取消),保存账号。没有特殊授权页,没有转移轮询。

接下来才是重点:#143234 在保存完成之后,用账号自己的登录 token 请求 Portal 把免费版的连接应用搬到这个账号上。几个细节决定了它能不能让人放心:

  • 保存账号的那一刻不发网络请求,只在本地记一笔“待迁移”;保存完成后才动手;
  • 迁移没有确认弹窗,结果事后展示;
  • 请求发出前先校验这个 token 确实属于刚才顶替免费版的那个账号——应用只会去这一个账号;如果中途你用另一个账号登录了,状态会显示“迁移在等第一个账号”;
  • Portal 忙或者连不上,会稍后重试,包括重启之后;
  • hermes auth status nous 从一句 logged in,变成“登录了 + 搬了哪些 / 哪些需要重连”。

#143248 收拾了第三处别扭:打开连接器页面不再创建任何身份。页面从 Portal 的公开目录列 App(不需要登录),只有你真的连了某个 App,才在这时创建身份,页面随即切到你自己的目录、账号和规则。如果连了 App 但你不在免费试用里,会看到另一句提示:“Keep your connected apps”——不是试用用户的提示,而是你自己的。

CLI 提示也顺手修了:hermes connectors 以前让你跑 hermes login,那条命令早就不存在了,现在写的是 hermes auth upgrade。

具体怎么用

实际动作没有变复杂,只是每条路都通到同一个地方:

hermes auth status nous     # 看当前是账号还是免费版,以及迁移状态
hermes auth upgrade         # 以 Nous 账号登录,保留你的连接器

在会话里就是 /login(桌面端、CLI、TUI、消息平台都一样)。hermes model 和 hermes auth add nous 保留自己的参数(--portal-url、--ca-bundle、--insecure),但底层跑的是同一个设备登录,返回后同样会打印迁移结果。

桌面端的体验也统一了:取消会在一秒内真正停下来、什么都不保存;验证码过期显示超时页面,而不是一句通用错误;登录完成后的结果页会告诉你“以谁的身份登录”以及“哪些应用搬过来了”。

几个边界要提前知道

  • 旧客户端仍然在调老接口:PR 明确说服务器上的旧转移端点没在这次改动里退役,因为老版本 Hermes 还在调它。
  • 新提示文案暂时只有英文(#143248 的说明里写了),其他语言先回退到英文。
  • 连接器页面的公开目录依赖 Portal 侧先上线一条路由;在那之前,一个没有 Nous 身份的人打开页面看不到托管 App,其他人不受影响。打开某个 App 的工具列表、改名、删除账号、保存规则,仍然会创建身份——那时候你已经选了具体 App,属于明确请求。
  • hermes connectors list 和 agent 的状态检查仍然会建身份:这是“我要列出我的 App”的显式请求,官方是有意保留的。

和之前那篇的区别

10 月 13 日我们写过免费版连接器的 scoped guest token——讲的是一个只在 connectors:invoke 上有权限、免掉浏览器挑战的令牌怎么来的。这篇讲的是另一件事:同一个免费身份后来被正式账号顶替时,那些连接怎么跟着走。连接器的多账号命名规则见连接器命名账号指南,hermes auth 的其余子命令(add / list / reset / priority / refresh)在命令参考里。

目前的状态

三个 PR 都在 2026 年 10 月 23 日合入 main,构成一条完整的栈。最近一次正式发布是 10 月 21 日的 v0.22.4,所以这些行为现在只在 main 上,下一个版本才会进稳定通道。如果你的安装还在 v0.22.4,登录流程还是老样子——先去更新指南确认自己在哪条通道上,再决定要不要切。