欢迎光临
我们一直在努力

Hermes Agent 一直在后台跑?给它装个 Web 控制台,把对话、任务和日志都看见

Hermes Agent 一直在后台跑?给它装个 Web 控制台,把对话、任务和日志都看见

前言

Hermes Agent 真正常驻以后,我最不习惯的一件事,就是它明明一直在工作,我却只能从微信、飞书或企微里看到“问题发出去了、答案回来了”这两个结果。某次回复突然变慢,到底是模型接口慢、工具调用卡住,还是服务本身出了问题,单看聊天窗口很难判断。临时想换 API、确认频道配置、看看任务有没有执行,继续回终端翻配置和日志也不算顺手。对我来说,一个长期运行的 AI 助手如果只能“用”,却很难“看”,后期维护会越来越别扭。尤其真正把它当成长期在线助手以后,偶发问题并不会因为平时能正常回复就自动消失,反而更需要一个能随时打开检查的入口。

这次我给已经运行中的 Hermes Agent 加上 hermes-web-ui。文章保留两种安装路径:一种直接让 Hermes Agent 自己检查 Node.js / npm 并完成安装,另一种手动执行 npm 命令。WebUI 启动后使用 8648 端口和登录 Token,随后实际看了对话、模型、频道、TTS、任务与运行记录,并创建“每天早上 8 点推送天气”的定时任务做验证。最后再按现有 Mac 环境安装 cpolar,把 8648 页面映射到公网,先验证随机地址,再固定为二级子域名 hermes01。我更在意的是这个 WebUI 到底让哪些运行信息变得可见,而不是因为多了网页界面,就把后台问题想得过于简单。

1. hermes-web-ui 不是替代 Hermes Agent,而是给它一个观察窗口

hermes-web-ui 的定位比较明确:

Hermes Agent 继续负责后台运行和处理任务,hermes-web-ui 负责把交互和管理入口搬到浏览器。

image-20260520151955527

刚部署 Hermes Agent 时,终端其实够用。启动、看输出、改配置,都能在命令行完成。

真正开始长期运行以后,问题就不一样了。尤其接入微信、飞书、企微这类消息平台后,我们平时看到的通常只有:

消息发出去 → 回复回来。

image-20260520152850712

中间到底发生了什么,并不直观。我更关心的是这些问题:

  • 模型是不是还在响应;
  • 工具调用有没有继续执行;
  • API 有没有异常;
  • 服务是不是已经停了;
  • 频道和配置到底有没有生效。

这时候 WebUI 的价值才出来。

image-20260520152535665

它让我不用先翻日志,至少可以先从浏览器里看一次对话从输入到回复的过程。

对于后期调试模型接口、排查调用异常、验证配置是否生效来说,这种可视化入口会方便很多:image-20260520152608227

等待回复时还有一个思考中的小人动效。

比如在等待回复的时候,页面上还会出现一个正在思考的小人动效,看起来比纯终端输出更有“AI 助手在线工作”的感觉:image-20260520152715427

这个动效本身不解决问题,但比纯终端输出更容易让我判断“页面还在处理”还是“完全没反应”。

2. 除了聊天框,WebUI 还能看什么?

如果 hermes-web-ui 只是多一个网页聊天框,对我来说吸引力其实不大。真正有用的是,它把 Hermes Agent 原来分散在配置和后台里的几个入口集中到了一个界面。

2.1 TTS 语音

WebUI 支持 TTS 配置。

image-20260520155437945

当前页面里可以看到这些方案:

  • 浏览器内置 WebSpeech API;
  • OpenAI TTS;
  • 自定义 OpenAI 兼容端点;
  • Edge TTS;
  • MiMo TTS。

这里真正展示的是配置入口和可选方案,不把它扩大成每一种语音方案都已经逐项验证。

2.2 模型

模型页面可以查看已经添加的模型提供商。

image-20260520154357515

对我来说,这一页最实用的不是“模型多”,而是切换模型、检查接口地址、确认默认模型时不用每次都先去翻配置文件。

2.3 频道

频道页面主要对应 Hermes Agent 接入的消息平台。当前界面里包括:

  • QQ;
  • 飞书;
  • 钉钉;
  • 微信;
  • 企业微信。

image-20260520155259567

如果 Hermes Agent 已经接入多个平台,这种集中查看方式确实比在不同配置文件里找参数更直观。

另外,WebUI 里还有技能、插件、记忆、日志等入口。这次没有逐项展开,所以后面只围绕已经实际操作的安装、任务和公网访问继续。

3. 安装 hermes-web-ui:先让 Hermes Agent 自己做一次

这篇给了两种安装方式。

如果 Hermes Agent 本身已经正常运行,我会先试第一种:直接把安装目标告诉它。

发送下面这段提示词:

请帮我在当前设备上安装 hermes-web-ui。先检查 Node.js 和 npm 是否可用,如果环境正常,就使用 npm 全局安装 hermes-web-ui。安装完成后启动 hermes-web-ui,并告诉我本地和局域网访问地址还有登录的密码是什么,并且告诉我如何修改密码。如果端口被占用,请先提示我,不要删除任何文件。

当前演示是在 Hermes Agent 的终端对话模式里发送。如果已经接入飞书、微信、企微,也可以从对应平台发出同样的任务。

image-20260520172721380

Hermes Agent 会先检查 Node.js 和 npm,然后继续安装、启动 WebUI,并返回访问地址和登录 Token。

image-20260520172805565

当前输出为:

本 地:http://localhost:8648
局域网:http://192.168.50.161:8648

登录 Token (即密码)
d7f898d566ecbc437e4b9fe89bcaf1bf515b656834a3996304111716bcc7ba3d

这里几个参数需要记住:

  • 本地地址:http://localhost:8648
  • 局域网地址:http://192.168.50.161:8648
  • WebUI 端口:8648
  • 登录凭据:Token

接下来直接使用局域网地址访问。

image-20260520173249210

页面打开后输入刚才输出的 Token。

image-20260520173326028

能正常进入 WebUI,说明这一条安装链已经跑通。

我喜欢这种方式的地方很简单:Hermes Agent 已经能执行任务,那就先让它自己完成环境检查和安装。但我不会把它理解成“AI 安装一定比手动安装可靠”。后面仍然保留完整的手动方式,出了问题至少知道该从哪里拆开检查。

4. 不想自动安装,也可以手动用 npm

手动安装的思路就是三步:

检查 Node.js / npm → 全局安装 hermes-web-ui → 启动服务。

先检查版本:

node -v
npm -v

image-20260520174054690

当前说明要求:

建议使用 Node.js 23 或更高版本。

如果版本过低,先升级 Node.js,再继续。

然后执行:

npm install -g hermes-web-ui

image-20260520174143947

安装完成以后启动:

hermes-web-ui start

image-20260520174238477

启动成功后,终端同样会输出访问地址和登录 Token。

如果需要修改 Token,当前方法是:

echo "你的新密码" > ~/.hermes-web-ui/.token

hermes-web-ui restart

默认本机访问地址:

http://localhost:8648

同一局域网里的其他设备,则使用启动时输出的局域网地址。

image-20260520174419882

打开页面后输入 Token,就可以进入 WebUI。

自动安装和手动安装最后其实落到同一个结果:

让 hermes-web-ui 在 8648 上运行,并通过 Token 进入控制台。

5. 先用定时任务看看 WebUI 到底有没有价值

WebUI 能打开以后,我不想只停留在“页面看起来不错”。

最直接的测试,是创建一个会真正执行的任务。

这次输入:

让 Hermes Agent 每天早上 8 点,自动给我推送当天的天气情况。

然后进入左侧任务面板,创建任务。

image-20260520175932994

任务保存后,先点击:

立即运行

手动触发一次。

稍等片刻后,微信端就会收到一条天气提醒。同时,在任务面板中也可以看到本次任务的运行历史,方便确认任务是否执行成功:image-20260520180149631

当前结果里,微信端收到天气提醒,同时任务面板也能看到运行历史。

这时候 WebUI 的价值就比“多一个聊天框”明确多了:

任务有没有执行、什么时候执行、执行结果有没有留下记录,都可以从页面里继续看。

后面要换成新闻、待办、服务器状态或其他内容,任务形式可以继续沿用;但这次真正验证的是天气提醒这一条。

6. 本地能管理了,为什么还需要公网入口?

现在 hermes-web-ui 已经可以在本机和局域网里访问。

如果 Hermes Agent 就放在我面前这台机器上,其实到这里已经够用。

问题是它本来就是一个长期在线的助手。人在外面时,我依然可能想:

  • 看任务有没有跑;
  • 检查模型配置;
  • 看频道状态;
  • 临时做一次对话测试;
  • 排查是不是 WebUI 或 Agent 自己出了问题。

所以接下来只是补一层网络访问。

cpolar 在这里的职责很简单:

把 hermes-web-ui 的 8648 Web 页面提供到公网。

Hermes Agent 继续负责 AI 任务,hermes-web-ui 继续负责 Web 管理,cpolar 不参与模型调用、任务调度或频道逻辑。

image-20250910114418412

7. 按当前 Mac 环境安装 cpolar

这一部分当前示例使用 macOS + Homebrew。

先打开终端。

image-20260308175456433

检查 Homebrew:

brew -v

image-20260308175647321

如果没有安装 Homebrew,当前给出的安装命令是:

# 官方安装脚本(需要良好的网络环境)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Homebrew 准备好以后安装 cpolar:

brew tap probezy/core && brew install cpolar

image-20260311183045189

然后安装 cpolar 服务:

sudo cpolar service install

启动服务:

sudo cpolar service start

image-20260311183722235

最后检查版本:

cpolar version

看到版本信息后,说明当前安装已经完成。

8. 登录 cpolar Web UI

先注册 cpolar 账号。

image-20250804085039567

完成账号注册。

image-20260301193227057

然后浏览器访问:

http://127.0.0.1:9200

image-20250815171734046

登录以后进入 Web UI。

image-20250815171846757

后面所有隧道配置都在这里完成。

9. 把 hermes-web-ui 的 8648 映射到公网

进入【隧道管理 → 隧道列表】。

当前可以看到已有隧道。

image-20260521160559448

这里编辑 website 隧道,也可以新建一条。

当前配置为:

  • 隧道名称:hermesweb
  • 协议:http
  • 本地地址:8648
  • 地区:China Top

image-20260521160839373

更新后进入【状态 → 在线隧道列表】。

hermesweb 会生成公网访问地址。

image-20260521161414920

这里使用 HTTPS 地址访问。

image-20260521161444640

当前已经能够打开 hermes-web-ui 登录页面。

接下来仍然要输入 WebUI 自己的 Token。

也就是说,公网入口和 WebUI 登录不是一回事:

cpolar 负责把页面送到外网,hermes-web-ui 的 Token 负责登录控制台。

10. 随机地址能用以后,再换固定二级子域名

随机公网地址适合先测试。

如果后面准备长期远程管理 Hermes Agent,我更希望入口本身固定下来。

先进入 cpolar 预留页面:

https://dashboard.cpolar.com/reserved

选择【保留二级子域名】。

image-20260521164037614

当前保留结果为:

  • 地区:China Top
  • 二级域名:hermes01

二级域名具有唯一性,真正配置时以自己账号实际保留成功的名称为准。

接着回到本地 cpolar Web UI,找到:

hermesweb

隧道。

image-20260521164215975

点击编辑,把域名类型改成:

二级子域名

然后在:

Sub Domain

中填写前面保留的名称。

image-20260521164412915

更新以后,到在线隧道列表查看。

image-20260521164553792

此时地址已经变成固定二级子域名形式。

继续用 HTTPS 地址测试。

image-20260521164637150

页面可以正常打开。

再输入前面 WebUI 的 Token。

image-20260521171632786

成功登录以后,固定公网访问链就跑通了。

总结

这次给 Hermes Agent 装 WebUI,我觉得最实际的变化不是“终于有界面了”,而是后台运行的 AI 助手多了一个可以随时检查的窗口。

这次实际跑通的主线是:

Hermes Agent → hermes-web-ui → 自动安装 / npm 手动安装 → 8648 → Token 登录 → 模型 / 频道 / TTS / 任务 → 每天 8 点天气任务测试 → macOS Homebrew → cpolar → hermesweb → 随机公网 → 固定二级子域名 hermes01。

几个边界也要分清:

  • Hermes Agent 负责 AI 任务本身,hermes-web-ui 负责浏览器里的观察和管理入口;
  • 当前页面展示了模型、频道、TTS、技能、插件、记忆、日志等入口,但这次没有逐项把所有功能完整测试;
  • 这次定时任务真正验证的是每天 8 点天气提醒,并确认微信端收到消息、任务面板出现运行历史;
  • cpolar 只负责把 8648 Web 页面提供到公网,不参与模型、频道或任务逻辑;
  • 公网地址打开以后,仍然需要 hermes-web-ui 的 Token;
  • cpolar 安装部分当前用的是 macOS + Homebrew 路径,和前面 WebUI 安装所在设备环境要按自己的实际部署关系确认。

对我来说,Hermes Agent 长期跑起来以后,最重要的不是再多一个“聊天入口”,而是出了问题时能不能快速看见它当前在做什么。WebUI 解决不了所有故障,但至少让我不必每次都从一条聊天回复反推整个后台发生了什么。

赞(0)
未经允许不得转载:171主机测评 » Hermes Agent 一直在后台跑?给它装个 Web 控制台,把对话、任务和日志都看见
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址