第46篇:Web 控制台——浏览器管理 AI
Hermes 功能详解第46篇:Web Dashboard。网页端管理 Hermes。
这篇讲的是:如何用浏览器来管理你的 Hermes Agent,不用记命令、不用改文件,点点鼠标就能完成大部分日常操作。
它是什么?
想象一下,以前你要管理 AI 助手,得像修电脑一样打开命令行、编辑配置文件。现在有了 Web 控制台,就像给 AI 装了个“遥控器”——打开浏览器,就能看到它的一切状态,还能直接和它聊天。
而且它完全跑在你自己的电脑上,数据不会离开你的机器,隐私有保障。
💡 如果你用的是托管模式,登录走的是 Nous Portal 的 OAuth。想让控制台连上真正的后端,跑一下
hermes setup --portal,它会把模型和工具网关一起配好。详见 https://hermes-agent.nousresearch.com/docs/integrations/nous-portal
第1步:启动控制台
打开终端,输入一行命令:
hermes dashboard
它会自动打开浏览器,地址是 http://127.0.0.1:9119。如果没自动打开,手动输入这个地址就行。
想换个端口? 比如用 8080:
hermes dashboard --port 8080
不想让它自动开浏览器? 加个参数:
hermes dashboard --no-open
⚠️ 如果你在公共网络(比如公司 WiFi)上,不要用
--host 0.0.0.0把自己暴露给别人,除非你设置了密码。顺便说一句,以前那个--insecure参数现在是个空壳了——它不再关闭认证,只要绑到非本机地址,就一定要配密码或 OAuth。
💡 一个后端服务整个主机。所以当
hermes dashboard发现已经有一个活着的后端、但没法用你敲的--host/--port来服务时,它会以退出码 78 拒绝启动,并告诉你那个后端是谁在跑。要么停掉那个后端,要么用--isolated给这个服务单独开一个专属服务器。桌面应用自己的回环后端从不抢占主机所有权,所以两者不用加任何参数就能共存。
💡 如果你把控制台写成 systemd 服务,记得加上
RestartPreventExitStatus=78:退出码 78 是“这台主机已被别的进程占用”的刻意拒绝,让它停在那儿,总好过无限重启却没人监听。
第2步:先装好“零件”
好消息:FastAPI、Uvicorn 和平台 PTY 辅助程序现在都是 Hermes 的核心依赖了,标准安装(PM 方式)通过 all 就已经带上了 web,一般不用你手动补装。
web零件:给 HTTP 栈加上精确的版本约束pty零件:现在是个空壳,因为它的依赖(比如 POSIX 上的ptyprocess)已经是核心的一部分了
如果你是从源码安装,或者这些依赖被弄坏了,可以这样修:
hermes pm repair
修完重启 Hermes 就行。源码安装的开发者流程见 https://hermes-agent.nousresearch.com/docs/reference/package-management
💡 注意:消息(messaging)和语音(voice)这两个零件是单独的请求,
all并不包含它们,需要的话得单独装。
💡 如果你在源码里自己构建前端,新版构建是 CPU 和内存大户(Vite 8 的 Rust 原生 Rolldown 打包器会吃满多核),所以默认做了资源上限:V8 堆会被封顶(
--max-old-space-size,根据容器内存上限自动定),原生打包器的线程池也被限制在可用核数的一半(RAYON_NUM_THREADS),免得小 VPS 在构建时飙到 200%+ CPU 甚至 OOM。想调可以用HERMES_WEB_BUILD_MAX_OLD_SPACE_SIZE/HERMES_WEB_BUILD_THREADS;主机实在腾不出 CPU 时,设HERMES_WEB_BUILD_LIGHT=1收紧到 1 线程、1 GB 堆。
第3步:认识控制台的“主页”
打开后,你会看到一个 状态页,像汽车仪表盘一样,一眼看清:
- 版本信息:当前 AI 的版本和发布日期
- 网关状态:Telegram、Discord 这些聊天平台是否连着
- 活跃会话:最近 5 分钟内有谁在和 AI 说话
- 最近会话:最近 20 次对话记录,包括用了哪个模型、花了多少 token
页面每 5 秒自动刷新一次,不用手动按 F5。
内存或磁盘吃紧的时候,页面顶部还会弹一条横幅提醒你,比如“AI 快没内存了,可能会重启”,或者“上次它意外重启,八成是内存爆了”。磁盘快满也会提示。同一时间只显示最严重的那条,关掉之后会接着显示下一条。

第4步:在浏览器里和 AI 聊天
这是最酷的部分。点击 Chat 标签,浏览器里会出现一个完整的聊天终端——和你平时在命令行里用 hermes --tui 一模一样。
支持什么? 斜杠命令、切换模型、工具调用卡片、Markdown 流式输出……终端里能做的,这里都能做。
怎么实现的? 简单说,就是浏览器通过 WebSocket 连到你电脑上的一个“虚拟终端”,你在网页上敲键盘,AI 的回复实时显示出来。窗口大小变了,终端也会自动适配。
网络断了怎么办? 别慌。终端会每隔 20 秒发个小信号保活,防止 nginx、Caddy 这类反向代理把“只是安静等待”的聊天掐掉。就算真被掐了(有些隧道 30 秒就断),聊天也会自动重连回同一个会话。不过你切到别的标签页或者别的页面时,自动重连会先暂停,等你回来再继续。
想继续上次的对话? 去 Sessions 标签,找到那条记录,点旁边的播放按钮(▶),就能接着聊。
想切换对话? 右侧有个会话列表,点一下就能换,不用离开页面。
新对话从哪个目录开始? 以前新对话总是从控制台进程启动的地方开始——如果你用手机远程操控,想让它进 ~/code/foo 就很别扭。现在右侧栏多了个 workspace(工作区) 选择器,列出的目录和桌面版侧边栏认识的一样:你显式配置的项目(hermes projects)以及所有被发现的 git 仓库(会话里出现过的,加上 desktop.repo_scan_roots 扫描到的),最近活跃的排在最前,还有一个 Other path… 让你手填别的路径。选择会按身份(profile)记住,并作用于下一次 New chat(恢复的会话保留它自己的工作目录);旁边的重新扫描按钮会在主机上重新走一遍发现根目录,所以你刚通过 SSH 克隆下来的仓库不用重启就能出现。如果填的路径已经不存在了,它会直接报错拒绝,而不是悄悄在启动目录里开始。这个功能背后是 GET /api/chat/workspaces 接口和 /api/pty WebSocket 的 cwd 参数。
💡 注意:这个聊天功能需要 Linux、macOS 或 WSL2 环境。如果你用的是原生 Windows,其他页面都能用,但聊天标签会提示你用 WSL2。

第5步:管理多个“身份”
如果你给 AI 配了多个“身份”(专业术语叫 profile),控制台顶部会有一个切换器。比如你有一个叫 worker 的身份,可以在地址栏直接访问:
http://127.0.0.1:9119/skills?profile=worker
这样打开的就是 worker 这个身份的技能页面。切换身份后,配置、API 密钥、技能、模型、聊天记录都会跟着变,就像换了个人在操作。
还有个小细节:如果你用 worker dashboard 这种方式启动,那 worker 就成了整个服务器的“默认身份”。哪怕你打开一个没带 ?profile= 的链接(比如 /chat?resume=<id>),它也会自动按 worker 来跑,聊天时用的就是那个身份的 MCP 服务器、模型和技能。当然,链接里明确写了 ?profile= 的话,还是以链接为准。
💡 身份隔离的一个重点:控制台里那些“Hub 操作”——比如装/更新/卸载技能、装 MCP、配置工具集——用的都是目标身份自己的密钥作用域(也就是它自己的
.env和配置好的密钥来源),而不是控制台进程的环境变量。这一点连从机器总控台去操作default身份时也一样。所以别指望在控制台进程里设个环境变量就能影响所有身份,各身份各管各的。
💡 时钟偏差的小坑:如果你走的是 OAuth 登录,控制台在验证 Portal 访问令牌的
exp/nbf/iat这几个时间声明时,默认留了 60 秒的容差(RFC 7519 §4.1.4-4.1.6),这样主机时钟稍微落后于 Portal 也不会登录失败。想严格一点可以在config.yaml里调dashboard.oauth.token_leeway(只能写在 config.yaml 里):0恢复严格校验,填了非法值(解析不了 / 负数 / 非有限数)会“失败即关闭”,直接按0处理。自建的 OIDC 提供方也有对应的旋钮dashboard.oauth.self_hosted.id_token_leeway,默认同样是 60 秒,低于 60 会收紧,0严格校验,非法值同样落到0。
💡 反向代理的注意点:如果你把控制台藏在只走代理的网络后面,又没在配置里登记这个可信代理,那么代理后面的客户端会共用代理的密码登录限流和原生登录上限,审计日志里记录的也是代理的地址——排查问题时容易看花眼。
官方控制台截图一览
下面这些是官方 Web 控制台各个管理页面的真实截图,供你对照:









小总结
Web 控制台把 Hermes Agent 的管理从“命令行时代”带进了“图形界面时代”。依赖现在大多已内置,一条命令启动,就能在浏览器里看状态、聊天、管理多个身份。对新手特别友好,对老手也省了不少敲命令的时间。
下篇预告:控制台里还有一个“定时任务”页面,能让 AI 按计划自动干活——比如每天早上八点帮你整理新闻摘要。下一篇我们就聊聊这个“闹钟”怎么设。
📖 官方文档
本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/web-dashboard