Hermes v0.16 "The Surface Release" 最被低估的功能不是桌面App本身,而是它连接远程网关的能力——你的笔记本跑轻薄GUI,服务器跑重型Agent,这才是AI创业者的正确打开方式。
▲ 远程网关架构:笔记本桌面App通过WebSocket连接服务器Gateway
为什么你需要远程网关
先说一个真实场景:你在阿里云/腾讯云上租了一台8核32G的GPU服务器,API Key、模型配置、Skills、Cron任务全在上面。白天你用MacBook Air写代码,想随时调Hermes帮你干活——但你绝对不想在笔记本上再配一套Hermes环境,更不想把API Key同步到两台机器上。
v0.16之前,你只能SSH进服务器用CLI。v0.16的远程网关功能彻底改变了这个局面:服务器跑Hermes Gateway,桌面App通过WebSocket远程连接,你在笔记本上的每一次聊天都实时发送到服务器执行,工具调用、文件操作、Cron管理全在服务器上完成。
这不是"远程终端",而是原生GUI体验的远程Agent——聊天窗口有流式输出,Cmd+K命令面板能用,拖拽文件上传能传到服务器,甚至多Profile并发会话(一个Profile连服务器A做开发,一个连服务器B做运维)。
架构原理
关键点:桌面App只是一个展示层,所有计算、API调用、文件操作都在远程服务器上执行。桌面App的WebSocket连接是加密的(wss://),认证支持OAuth和用户名密码两种方式。
第一步:在服务器上启动Hermes Gateway
首先确保服务器上已经安装了Hermes Agent v0.16.0+:
配置Gateway监听
Hermes Gateway需要绑定到可被外部访问的地址。编辑 ~/.hermes/config.yaml:
启动Gateway
防火墙配置
如果服务器有防火墙,需要开放9119端口:
安全提醒:强烈建议配置HTTPS反向代理(Nginx/Caddy)来加密WebSocket流量,而不是直接暴露HTTP端口到公网。下面的"安全加固"章节会详细说明。
第二步:在桌面App中连接远程Gateway
安装桌面App
从 hermes-agent.nousresearch.com/desktop 下载对应平台的安装包。
安装完成后启动Hermes Desktop App。
配置远程连接
- 打开桌面App
- 点击左下角 设置(Settings) 图标
- 选择 Gateway 标签页
- 在 Remote Connection 区域:
- Remote URL:填入
[链接][链接] - 认证方式:
- 如果用用户名密码:填写Username和Password
- 如果用OAuth:点击Sign In跳转浏览器完成OAuth流程
连接成功后,状态栏会显示绿色的网关连接图标。现在你在聊天窗口发送的每一条消息,都会在远程服务器上执行。
验证连接
发送一条测试消息:
如果返回的是服务器上的目录列表(而不是你笔记本上的),说明远程连接成功。
你也可以在服务器上确认:
第三步:多Profile并发会话(杀手级功能)
v0.16支持在一个桌面App窗口中同时运行多个Profile,每个Profile可以连接不同的远程Gateway。
场景举例
假设你有两台服务器:
- Dev服务器(192.168.1.100):跑开发相关的Agent,有GitHub Token和代码库访问权限
- Ops服务器(192.168.1.200):跑运维Agent,有K8s集群管理权限和监控API Key
你可以创建两个Profile:
在桌面App中,点击左上角的Profile切换器,可以在两个Profile之间无缝切换。每个Profile有独立的会话列表、Skills和Cron任务。
更强大的是跨Profile @session链接——你可以在Profile A的对话中直接引用Profile B的会话上下文。
第四步:安全加固(生产环境必做)
4.1 配置HTTPS反向代理(Nginx)
直接暴露HTTP端口到公网是危险的。使用Nginx做SSL终止:
配置好后,桌面App的Remote URL改为 `[链接]
▲ 多Profile并发架构:三个业务场景共享一台服务器
4.2 使用OAuth替代用户名密码
对于团队使用场景,OAuth/OIDC比静态用户名密码更安全:
支持的OAuth Provider包括:Google、GitHub、Microsoft、以及任何标准OIDC Provider(如Authelia、Authentik、Keycloak)。
4.3 限制访问IP
在生产环境中,建议通过防火墙或Nginx限制可访问Gateway的IP范围:
4.4 使用Docker部署(推荐)
Docker部署可以进一步隔离环境:
注意:HERMES_DASHBOARD_INSECURE=1 是v0.15.1引入的显式环境变量,替代了之前从bind host自动推断--insecure的行为。如果你不需要Dashboard的loopback认证保护,设置这个变量。
踩坑与排障
坑1:连接后无响应或立即断开
症状:桌面App显示"Connected"但发送消息后无响应,或几秒后断开。
原因:通常是WebSocket升级失败。Nginx配置中缺少WebSocket相关的proxy_set_header。
解决:确保Nginx配置包含这三行:
坑2:`hermes gateway` 启动报 "bind: address already in use"
症状:端口被占用。
解决:
坑3:Dashboard无限重载(v0.15.0的已知Bug,v0.15.1已修复)
症状:在Docker或loopback模式下,Dashboard页面无限刷新。
解决:升级到v0.15.1+。如果暂时无法升级,在Docker中设置 HERMES_DASHBOARD_INSECURE=1。
坑4:MCP Server在Docker中无法启动
症状:配置了MCP Server,但在Docker容器中报"command not found"。
原因:v0.15.0中MCP裸命令(npx/node/npm)的PATH解析有问题。
解决:升级到v0.15.1+(已在 /usr/local/bin 中正确解析)。或者在MCP配置中使用绝对路径:
坑5:远程Gateway连接后,文件操作在本地而非服务器执行
症状:你期望ls /opt返回服务器的目录,但返回的是你笔记本的目录。
原因:你可能没有真正连上远程Gateway,而是在本地模式下运行。检查桌面App左下角的状态指示器——应该显示绿色的远程连接图标和服务器地址。
验证方法:在聊天中发送 运行 hostname 命令,返回的应该是服务器的主机名。
坑6:`hermes desktop` 命令在服务器上找不到
症状:bash: hermes: command not found
原因:服务器上可能只装了hermes-agent的gateway组件,没有完整安装。
解决:
`/undo` 命令:远程会话的后悔药
v0.16新引入的 /undo 命令在远程场景下特别有用——网络不稳定时消息可能乱序,或者你发错了指令:
/undo会备份被撤销的消息,预填你的最后一条消息方便你修改后重发,然后软删除中间的回合。它在CLI、TUI、桌面App和所有消息平台(Telegram、Discord等)上都可用。
高级用法:多Gateway并发
v0.16支持同时运行多个Gateway实例(每个Profile一个),这在以下场景中非常有用:
然后在桌面App中为每个Profile配置不同的Remote URL,实现真正的多Agent并发工作。
实战案例:搭建"一人公司AI中控台"
下面是一个完整的实战场景——用远程Gateway构建一个AI创业者的日常工作中控台。
场景设定
你是一个独立开发者,维护着3个项目:
- 公众号内容流水线:每天自动产出AI创业内参文章
- 客户项目:一个Next.js全栈应用的持续迭代
- 副业SaaS:一个小型API服务,跑在K8s集群上
▲ 远程网关排障清单:6项关键检查点
服务器端配置
在阿里云ECS(4核16G,Ubuntu 22.04)上:
启动多Gateway
桌面端配置
在你的MacBook上打开Hermes Desktop App,添加三个Profile:
| Profile | Remote URL | 用途 |
|---|---|---|
| 内容工厂 | `[链接] | 公众号写作、热点监控 |
| 客户开发 | `[链接] | 代码审查、部署 |
| SaaS运维 | `[链接] | K8s管理、日志分析 |
现在你在一个桌面App窗口里可以随时切换三个工作场景,无需SSH、无需切换终端、无需记住每台机器的IP。
一天的工作流
- 09:00:切换到"内容工厂"Profile → 检查昨晚Cron产出的文章 → 审核通过直接发布
- 10:30:切换到"客户开发"Profile → 让Agent审查昨晚的PR → 自动生成Review意见
- 14:00:在"SaaS运维"Profile中收到告警 → Agent自动分析日志定位问题 → 一键回滚
- 17:00:回到"内容工厂"Profile → 让Agent分析当日阅读数据 → 生成次日选题建议
所有这些操作都在同一个桌面App里完成,Chat历史按Profile独立保存,互不干扰。
Web Dashboard:远程管理面板
v0.16还为Gateway配备了一个完整的Web管理面板。在服务器上运行:
通过Nginx反向代理暴露后,你可以在浏览器中访问Dashboard。它提供了:
- MCP Catalog:可视化启用/禁用MCP Server,无需手动编辑JSON
- Credentials管理:统一管理所有API Key,支持加密存储
- Webhooks & Hooks:在浏览器中创建和管理Webhook
- Memory配置:调整Agent的持久记忆设置
- Messaging Channels:配置Telegram/Discord/Slack等消息平台
- System监控:Check-before-update、Debug Share一键导出日志
Dashboard和桌面App可以同时使用——Dashboard做管理配置,桌面App做日常交互。两者共享同一份配置和会话数据。
常见问题(FAQ)
Q1:远程连接和本地模式能共存吗?
可以。桌面App支持同时配置多个Profile,可以有的Profile连远程,有的Profile跑本地。切换Profile时自动切换连接目标。
Q2:网络断了会怎样?
桌面App会自动尝试重连。WebSocket断开后,App会显示"Reconnecting..."状态,恢复后继续之前的会话。v0.16还支持在Gateway重连时重新签发OAuth WebSocket票据,无需重新登录。
Q3:文件拖拽上传传到哪了?
传到远程服务器上Hermes的工作目录。你拖一个本地PDF到聊天窗口,桌面App会把文件通过WebSocket传到服务器,服务器上的Agent再处理它。
Q4:远程Gateway能跑Cron任务吗?
能,而且这正是远程网关最强大的用法之一。Cron任务在服务器上运行,不受你笔记本是否在线的限制。你可以通过桌面App管理Cron(创建、暂停、删除),但Cron的执行完全在服务器端。
Q5:多个桌面App能同时连一个Gateway吗?
能。v0.16支持并发多Profile会话。你和同事可以各自打开桌面App,用不同的Profile(或OAuth账号)连接同一台Gateway服务器。会话隔离,互不影响。
Q6:我能不能用手机/iPad连远程Gateway?
目前Hermes官方只发布了桌面App(macOS/Windows/Linux)。但Gateway支持WebSocket协议,理论上可以通过Web Dashboard的Chat标签页(嵌入TUI)在移动浏览器中使用——体验不如桌面App,但紧急情况下可用。
Q7:Gateway如何做性能监控?
小结
Hermes v0.16的远程网关功能解决了一个核心痛点:AI Agent的计算应该在服务器上,但交互体验应该在桌面上。对于AI创业者来说,这意味着:
- 成本优化:服务器跑重型模型,笔记本只做展示层,省电省资源
- 安全隔离:API Key和敏感配置只存在于服务器上,笔记本丢失不影响
- 团队协作:多人可以通过各自的桌面App连接同一台服务器(配合OAuth和多Profile)
- 运维简化:一个
hermes gateway命令就能把Agent暴露为远程服务,不需要额外的RPC框架 - 多场景并行:一台服务器同时跑多个Gateway实例,每个实例对应一个业务场景
动手试试吧——从hermes gateway开始,十分钟内你就能在笔记本上操控服务器里的AI Agent。从单Gateway到多Profile并发,从内容创作到SaaS运维,AI创业者终于有了一个"服务端跑重型Agent,客户端轻薄交互"的理想架构。
风险提示:远程网关目前仍处于快速迭代期(v0.16于2026年6月5日发布,截至本文撰写仅过去4天),API和配置项可能在未来版本中变化。生产环境部署前请在测试环境验证。暴露Gateway到公网时务必配置HTTPS和认证,切勿裸奔。Docker部署时特别注意HERMES_DASHBOARD_INSECURE=1是显式开关,不会自动从bind host推断。
#AI创业 #HermesAgent #Agent工坊 #远程开发 #一人公司
本文由AI辅助创作,经人工审核编辑发布
