← 返回 FEED
AGENT2026-04-22

Hermes Agent + Camofox:让浏览器身份跨越 Agent 运行周期持久化

Neo 分享了 Hermes Agent 通过 Camofox 实现持久化浏览器身份的完整配置方案。

大多数 Agent 浏览器演示失效的那一刻

你登录一次,任务结束,下一次运行从头开始。toy 级别的浏览没问题,但真实工作流会很糟糕。

Hermes 有一条更好的路径:对接 Camofox(自托管抗检测浏览器后端),配置持久化浏览器会话,让 Cookie 和登录状态在 Agent 运行之间保留。把浏览器自动化从「无状态演示模式」变成可复用的操作员工作流。

Camofox 是什么

Camofox 是一个自托管的 Node.js 服务器,封装了 Camoufox(一个带指纹伪造功能的 Firefox 分支)。实际效果:

  • 自己运行浏览器服务
  • Hermes 通过它路由浏览器任务
  • 浏览环境表现得像一个持久的操作员浏览器,而不是一次性的云会话

这和「每次 Agent 都启动一个全新的匿名浏览器」完全不同。

Hermes 支持的浏览器后端

  • Browserbase(云端)
  • Browser Use
  • Firecrawl
  • 本地 Chromium(agent-browser)
  • 本地 Chrome(CDP)
  • Camofox(本地抗检测浏览)

两个安装路径

本地安装:

git clone https://github.com/jo-inc/camofox-browser && cd camofox-browser
npm install && npm start

Docker:

docker run -d --network host -e CAMOFOX_PORT=9377 jo-inc/camofox-browser

然后在 ~/.hermes/.env 里设置:

CAMOFOX_URL=http://localhost:9377

最关键的部分:启用持久化会话

默认情况下 Camofox 会话是临时的——每个会话获取随机身份,Cookie 和登录状态不保留。

~/.hermes/config.yaml 中添加:

browser:
  camofox:
    managed_persistence: true

然后完全重启 Hermes。

坑: 如果路径写错,Hermes 会静默降级到临时会话,登录状态持续消失。这种配置 bug 极其浪费时间。

持久化后 Hermes 做了什么

启用后 Hermes 做三件事:

  1. 向 Camofox 发送确定性、Profile 作用域的 userId
  2. 跳过清理时的服务端上下文销毁
  3. 将该身份作用域映射到活跃的 Hermes Profile

第三点是大招:如果你有多个 Hermes Profile,每个可以映射到不同的持久化浏览器身份——研究浏览一个 Profile,工作自动化一个 Profile,个人浏览任务一个 Profile。浏览器身份和 Hermes 的内存、会话、配置隔离模型完全对齐。

验证持久化是否生效

  1. 启动 Hermes 和 Camofox 服务器
  2. 打开 Google 等登录网站
  3. 手动登录
  4. 正常结束浏览器任务
  5. 启动新的浏览器任务
  6. 再次打开同一个网站

如果仍然登录着,说明持久化生效。如果登出了,可能原因:

  • managed_persistence 路径写错
  • Hermes 没有完全重启
  • Camofox 服务器没有正确实现持久化 Profile
  • 服务器构建本质上是临时性的

另一个好功能:VNC 可见性

Camofox 在 headed 模式下运行时,可以在健康检查响应中暴露 VNC 端口。Hermes 能自动发现它,并在导航响应中包含 VNC URL,让你可以实时观看浏览器操作。这对需要监督的复杂浏览任务很有用。

适用场景

强需求:

  • 重复登录同一网站
  • 抗检测浏览(不依赖云)
  • Profile 隔离的浏览器身份
  • 需要连续感而非临时沙盒的浏览器任务

非必要:

  • 偶尔的无状态浏览
  • 快速抓取
  • 一次性页面交互
  • 对保留登录状态完全没需求

一句话总结:Camofox 持久化让 Hermes 浏览器自动化从「一次性演示」变成「长期运行的基础设施」。持久化浏览器身份是 Agent 真正进入生产级工作流的基础。