1. Hermes Agent 的可视化短板与公网访问需求Hermes Agent 是一个能接入微信、飞书、企微等多平台的 AI 助手后台默默处理消息、执行定时任务、调用插件。但它的运行过程基本是个黑箱你在聊天窗口里发一条消息等几秒收到回复中间到底发生了什么完全看不到。是模型接口卡了还是插件调用失败了还是服务本身挂了只能靠猜。hermes-web-ui 就是来解决这个问题的。它是 Hermes Agent 的 Web 可视化控制台跑在 Node.js 环境里默认监听 8648 端口。打开浏览器就能看服务状态、调模型配置、测对话、查日志还能开 TTS 语音让 AI 开口说话。说白了Hermes Agent 负责干活hermes-web-ui 负责让你看清它怎么干活。但这里有个现实问题hermes-web-ui 默认只能在局域网内访问。你在家、在公司、和 Hermes Agent 处于同一网络下才能打开。一旦出门在外手机切到流量或者人在外地出差就完全够不着了。对于把 Hermes Agent 装在家里 NAS 或内网服务器的用户来说想临时改个推送时间、排查一次回复延迟都得等回家操作。所以这篇内容要解决的就是两件事第一用 TaoToken 统一 Key 接入 Hermes Agent 的模型通道让 API 配置不再散落在各个文件里第二用 cpolar 内网穿透把 hermes-web-ui 的 8648 端口映射到公网配合固定二级子域名实现随时随地远程管理 AI 助手。整套方案不需要公网 IP不需要路由器端口映射也不需要买云服务器。适合谁看已经把 Hermes Agent 跑起来、接入了消息平台、想给它加一个可视化控制台并实现远程访问的开发者。如果你还没装 Hermes Agent建议先把基础服务跑通再来看这篇。2. TaoToken 统一 Key 接入前置准备与配置骨架在配置公网访问之前先把模型通道理顺。Hermes Agent 支持多个模型提供商但如果你同时用 OpenAI、Claude、国产模型每个都要单独配 Key、单独记接口地址配置文件会越来越乱。TaoToken 的作用是提供一个统一的 API 通道一个 Key 走通多个模型Hermes Agent 的 config.toml 里只需要维护一份接入信息。TaoToken 的 API 地址是https://taotoken.net/api兼容 OpenAI 风格的接口格式。你需要在控制台创建一个 API Key然后把它填到 Hermes Agent 的配置里。具体操作打开 TaoToken 控制台进入 API Keys 页面创建一个新的 Key复制出来备用。如果你还没注册可以先从官网入口进去了解一下。拿到 Key 之后Hermes Agent 的模型配置有两种方式一种是在 config.toml 里直接写另一种是通过 hermes-web-ui 的模型页面添加。建议先用配置文件写好基础通道后续在 WebUI 里做微调。下面是 config.toml 的配置骨架你需要根据自己的实际路径和 Key 做替换# ~/.hermes/config.toml [model] provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 default_model gpt-4o [model.fallback] enabled true provider openai-compatible base_url https://taotoken.net/api api_key sk-你的TaoToken密钥 default_model claude-3-5-sonnet这里的关键点是base_url统一指向 TaoToken 的 API 地址api_key填你创建的 Key。default_model可以按需切换TaoToken 会根据模型名路由到对应的上游通道。fallback 段是备用模型当主模型响应异常时自动切换避免 Hermes Agent 卡死。如果你更习惯在 hermes-web-ui 里配置可以等 WebUI 启动后进入模型页面点击添加提供商选择 OpenAI 兼容类型填入同样的 base_url 和 api_key。WebUI 的好处是改完即时生效不用重启服务。另外hermes-web-ui 自身的配置在~/.hermes-web-ui/settings.json这个文件主要控制 WebUI 的监听地址、端口和登录 Token。默认情况下监听0.0.0.0:8648这样局域网内其他设备也能访问。如果你只想本机访问可以改成127.0.0.1但那样 cpolar 穿透后公网也访问不到所以保持默认即可。{ server: { host: 0.0.0.0, port: 8648 }, auth: { token_file: ~/.hermes-web-ui/.token }, tts: { enabled: false, provider: webspeech } }settings.json 里的 token_file 指向登录密码文件你可以用echo 新密码 ~/.hermes-web-ui/.token来修改改完执行hermes-web-ui restart生效。TTS 部分先保持关闭等 WebUI 跑通后再按需开启。3. 可复制配置hermes-web-ui 安装与 cpolar 隧道启动环境检查是第一步。hermes-web-ui 依赖 Node.js 23 或更高版本先确认版本node -v npm -v如果 Node.js 版本低于 23建议先升级。可以用 nvm 管理多版本# 安装 nvm如果还没装 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash # 重新加载 shell 配置 source ~/.bashrc # 安装 Node.js 23 nvm install 23 nvm use 23Node.js 就绪后全局安装 hermes-web-uinpm install -g hermes-web-ui安装完成后启动服务hermes-web-ui start终端会输出本地访问地址、局域网地址和登录 Token。默认本地地址是http://localhost:8648局域网地址类似http://192.168.x.x:8648。记下 Token后面登录要用。接下来安装 cpolar。以 macOS 为例用 Homebrew 安装最省事brew tap probezy/core brew install cpolar安装完成后注册系统服务并启动sudo cpolar service install sudo cpolar service start验证版本确认安装成功cpolar version然后访问http://127.0.0.1:9200打开 cpolar Web UI 管理界面用注册好的账号登录。进入隧道管理页面编辑默认的 website 隧道或者新建一条隧道。关键参数隧道名称填hermesweb协议选http本地地址填8648地区选China Top。保存后进入在线隧道列表会看到一条 https 协议的公网地址。用这条公网地址在浏览器打开应该能看到 hermes-web-ui 的登录页面。输入之前终端输出的 Token就能进入控制台了。如果你需要固定地址进入 cpolar 的预留页面https://dashboard.cpolar.com/reserved保留一个二级子域名比如hermes01。然后回到隧道编辑页把域名类型改成二级子域名Sub Domain 填hermes01更新后在线隧道列表里的公网地址就会变成固定的https://hermes01.cpolar.cn形式。4. 验证请求从公网访问到模型对话全链路测试配置完成后需要做一次完整验证确认从公网访问到模型调用整条链路都通。第一步用手机浏览器切到流量不要连 WiFi打开 cpolar 生成的公网地址。如果能正常加载 hermes-web-ui 登录页说明内网穿透生效。输入 Token 登录进入控制台首页。第二步进入模型页面检查 TaoToken 的接入配置是否显示正常。如果 base_url 和 api_key 都填对了页面会显示模型提供商在线状态。点击测试按钮发一条简单请求比如“你好”观察是否返回正常回复。第三步进入对话页面发一条需要调用插件的请求比如“今天天气怎么样”。观察响应过程请求发出后页面会显示思考动效然后依次展示模型调用、插件执行、回复生成的完整链路。如果某个环节卡住或报错日志页面会有详细记录。第四步创建一个定时任务做长期验证。在任务面板点击创建任务设置每天早上 8 点推送天气。保存后点击立即运行确认微信或飞书端能收到消息同时任务面板的运行历史里能看到本次执行记录。如果以上四步都通过说明 TaoToken 统一 Key 接入和 cpolar 公网穿透都配置成功了。后续你可以通过固定二级子域名随时远程访问 hermes-web-ui管理 Hermes Agent 的模型配置、频道接入、定时任务和日志排查。5. 本篇常见错排查Node.js 版本不满足导致安装失败。执行npm install -g hermes-web-ui时报 engine 相关错误说明当前 Node.js 版本低于 23。用node -v确认版本低于 23 就按前面的 nvm 步骤升级。升级后重新执行安装命令。8648 端口被占用导致启动失败。启动 hermes-web-ui 时提示端口冲突。先用lsof -i :8648查看占用进程如果是其他服务可以改 hermes-web-ui 的监听端口或者停掉占用进程。改端口的话编辑 settings.json 里的 port 字段然后重启服务。cpolar 隧道配置后公网访问 502。检查本地地址是否填的8648协议是否选的http。如果本地 hermes-web-ui 没启动cpolar 转发过去也会报错。先在本地浏览器确认http://localhost:8648能打开再测试公网地址。登录 Token 丢失或忘记。Token 存在~/.hermes-web-ui/.token文件里可以直接查看。如果文件被删了执行hermes-web-ui restart会重新生成。想改密码就用echo 新密码 ~/.hermes-web-ui/.token然后重启。TaoToken 模型调用返回 401。检查 config.toml 或 WebUI 里的 api_key 是否填对注意不要有多余空格。如果 Key 被禁用或额度用完去 TaoToken 控制台确认 Key 状态。base_url 必须是https://taotoken.net/api不要多加路径。cpolar 固定二级子域名不生效。确认预留的二级子域名和隧道里填的 Sub Domain 完全一致大小写敏感。更新隧道后稍等几秒在线隧道列表刷新后再测试。如果还是不行检查 cpolar 账号是否已完成实名或套餐是否支持固定域名。6. 远程管理 AI 助手的长期维护建议整套方案跑通后日常维护其实很轻。hermes-web-ui 的日志页面会记录每次请求的耗时、调用的模型、插件执行结果遇到回复异常先看日志定位是模型侧还是插件侧的问题。TaoToken 的 Key 建议定期轮换在控制台创建新 Key 后更新 config.toml 和 WebUI 配置旧 Key 及时禁用。cpolar 的固定二级子域名适合长期使用把地址收藏到浏览器书签手机和电脑都能快速打开。如果 Hermes Agent 部署在 NAS 上注意 NAS 的休眠策略避免服务被挂起导致公网访问超时。定时任务建议设置合理的执行频率避免过于频繁调用模型接口。如果你还在用多个模型提供商各自为政的配置方式建议统一迁到 TaoToken 通道config.toml 里只维护一份 base_url 和 api_key切换模型只改 default_model 字段。这样后续加新模型、换 Key、排查接口问题都会简单很多。需要创建 Key 的话从 API Keys 页面进去操作即可。
