尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Hermes WebUI 配 TaoToken:settings.json 骨架与手机端 Agent 调用验证

Hermes WebUI 配 TaoToken:settings.json 骨架与手机端 Agent 调用验证 1. 为什么要在 Hermes WebUI 里接 TaoTokenHermes WebUI 是 GitHub 上 nesquena/hermes-webui 这个项目提供的轻量级深色主题 Web 应用它给 Hermes Agent 套了一层浏览器界面左边会话导航、中间聊天区、右边工作区文件浏览器凡是终端里能做的操作网页里基本都能做。它最大的价值在于移动端——手机浏览器打开就能调用 Agent不用一直守着 SSH 终端。但很多人卡在同一个地方Hermes Agent 本身要配模型 Provider而 WebUI 的 settings.json 里又有一层配置两边字段对不上手机端请求发出去就报 401 或者 model not found。TaoToken 在这里扮演的角色是统一模型通道。它提供 OpenAI 兼容的 API 入口你只要在 Hermes 的 provider 配置里把 base_url 指向https://taotoken.net/api再把 API Key 填进去Hermes Agent 和 WebUI 就都能走同一条通道。这样你不需要在 WebUI 里单独维护一套模型密钥settings.json 里只保留通道字段和 UI 偏好模型鉴权交给 Hermes 的 config.yaml 统一处理。这篇面向的是已经在服务器上跑起 Hermes Agent、想通过手机浏览器调用 Agent 的开发者。我会给出 settings.json 的可复制骨架、TaoToken 的接入步骤以及一次 curl 验证动作目标是配置一次就能在手机端跑通 Agent 请求。整个过程不涉及任何网络工具纯配置层面的事。2. TaoToken 前置准备Key 与通道地址在动 settings.json 之前先把 TaoToken 这边的两样东西拿到手API Key 和通道地址。通道地址是固定的https://taotoken.net/api这个不加任何查询参数直接作为 OpenAI 兼容的 base_url 使用。API Key 需要你登录控制台创建。打开控制台页面路径是https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite登录后在 API Keys 区域新建一个 Key。建议按用途命名比如hermes-webui-mobile方便以后区分是哪个端在用。创建完立刻复制页面刷新后完整 Key 就不再显示了。拿到 Key 之后先别急着写进 Hermes 配置用一条 curl 确认通道本身是通的。这一步能帮你排除掉 Key 本身的问题后面如果 WebUI 报错你就知道不是通道的锅。curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer sk-你的Key \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: ping}], max_tokens: 16 }返回里如果有choices字段和一段回复内容说明 Key 和通道都正常。如果返回 401检查 Key 有没有复制完整如果返回 model not found说明你填的模型名不在当前 Key 的可用范围内换一个再试。这一步过了再往下走。关于模型选择Hermes 支持 OpenAI、Anthropic、Google、DeepSeek 等多个 ProviderTaoToken 通道下你可以用常见的模型名。具体哪些模型可用可以在模型对话页面里先试一下路径是https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite选好模型发一条消息确认能出结果再写进配置。3. settings.json 可复制骨架与字段说明Hermes WebUI 的状态默认存在~/.hermes/webui/目录下settings.json 就在这里面。这个文件管的是 UI 层偏好——主题、发送键、是否显示 CLI session、token 用量显示等。模型鉴权不在这里而在 Hermes Agent 的 config.yaml 里。很多人搞混这两层把 API Key 写进 settings.json结果 WebUI 读不到Agent 也读不到。先看 settings.json 的骨架。下面这份可以直接复制字段按需改{ theme: dark, skin: default, send_key: enter, show_cli_sessions: true, show_token_usage: true, language: zh, default_model: , default_workspace: ~/workspace, provider_channel: { base_url: https://taotoken.net/api, api_key_env: TAOTOKEN_API_KEY, timeout_seconds: 120 }, mobile: { sidebar_overlay: true, touch_target_min: 44 } }几个关键字段解释一下。provider_channel.base_url固定写https://taotoken.net/api这是 TaoToken 的 OpenAI 兼容入口。api_key_env写的是环境变量名不是 Key 本身——这样 Key 不会明文躺在 settings.json 里手机端同步配置时也不会泄露。timeout_seconds给 120 秒Agent 任务有时候跑得久太短会中途断掉。mobile.sidebar_overlay控制移动端侧边栏是否以覆盖层滑入touch_target_min是触控目标最小尺寸44px 是移动端可用性的常见下限。default_model留空是有意的留空时 Hermes 会用当前 provider 的默认模型。如果你在 TaoToken 通道下想固定用某个模型可以填上模型名但要注意这个字段和 Hermes config.yaml 里的模型配置是两回事WebUI 这边只是覆盖显示。settings.json 改完之后WebUI 需要重新加载配置。如果你是用ctl.sh起的服务执行./ctl.sh restart就行。重启后打开页面进设置面板确认字段生效。4. Hermes Agent 侧的 TaoToken 接入配置settings.json 只管 UI真正让 Agent 走 TaoToken 通道的是 Hermes Agent 的 config.yaml。这个文件默认在$HERMES_HOME/config.yamlPOSIX 下通常是~/.hermes/config.yaml。你需要在这里配一个 OpenAI 兼容的 provider把 base_url 指向 TaoToken。先设置环境变量把 Key 放进去不要写死在配置文件里export TAOTOKEN_API_KEYsk-你的Key然后编辑 config.yaml加入 provider 段providers: taotoken: type: openai_compatible base_url: https://taotoken.net/api api_key_env: TAOTOKEN_API_KEY models: - gpt-4o-mini - gpt-4o - claude-3-5-sonnet default_model: gpt-4o-mini default_provider: taotoken这里type写openai_compatible因为 TaoToken 提供的是 OpenAI 兼容接口。api_key_env指向刚才设置的环境变量。models列表里放你确认可用的模型名default_model选一个作为默认。如果你是用start.sh或ctl.sh启动的环境变量需要在启动前 export或者写进.env文件。ctl.sh会读取.env所以更稳妥的做法是把TAOTOKEN_API_KEYsk-你的Key写进项目根目录的.env然后./ctl.sh restart。配置完成后用 Hermes CLI 先验证一次确认 Agent 侧通道通了hermes model这个命令会列出当前可用的 provider 和模型。如果taotoken出现在列表里且默认模型正确说明 Agent 侧配置生效。如果没出现检查 config.yaml 的缩进——YAML 对缩进敏感providers下的层级错一格就会解析失败。5. 手机端调用验证一次 curl 跑通 Agent 请求配置都就位后做一次端到端验证。先在服务器本地确认 WebUI 健康curl -s http://127.0.0.1:8787/health返回{status:ok}之类的响应就说明 WebUI 服务正常。然后从手机浏览器访问。如果你是用 SSH 隧道命令是ssh -N -L 8787:127.0.0.1:8787 user你的服务器手机和电脑在同一网络下或者用 Tailscale 组网把服务器和手机加进同一网络配置HERMES_WEBUI_HOST0.0.0.0加HERMES_WEBUI_PASSWORD然后手机访问http://服务器地址:8787。注意这里必须设密码因为绑定到 0.0.0.0 意味着局域网内可访问。手机浏览器打开后进聊天界面发一条消息。如果 Agent 正常回复说明整条链路通了手机浏览器 → WebUI → Hermes Agent → TaoToken 通道 → 模型返回。如果你想在手机端之外再用 curl 直接验证 Agent 的模型调用可以走 WebUI 的 API 端点。不过更直接的方式是验证 TaoToken 通道本身在 Agent 配置下可用curl -s https://taotoken.net/api/v1/chat/completions \ -H Authorization: Bearer $TAOTOKEN_API_KEY \ -H Content-Type: application/json \ -d { model: gpt-4o-mini, messages: [{role: user, content: 用一句话说明你是什么模型}], max_tokens: 64 }这次用的是环境变量里的 Key和 Hermes 配置里引用的是同一个。如果这条 curl 通了手机端 WebUI 也通了那配置就是完整的。实测下来最容易出问题的环节是环境变量没被ctl.sh读到导致 Agent 启动时api_key_env解析为空请求发出去就是 401。6. 本篇常见错排查401 Unauthorized最常见。先确认.env里的TAOTOKEN_API_KEY有没有被ctl.sh加载。ctl.sh读取.env是在启动时如果你改了.env没重启旧进程还是用旧值。执行./ctl.sh restart再试。另外确认 Key 没有多余空格或换行。model not foundconfig.yaml 里models列表写的模型名和 TaoToken 通道实际可用的模型对不上。回到模型对话页面确认可用模型名或者先用 curl 单独测一下那个模型名能不能通。WebUI 页面能开但聊天无响应检查~/.hermes/webui.logctl.sh logs --lines 100可以看最近日志。常见的是 Agent 侧 config.yaml 解析失败日志里会有 YAML 报错。YAML 缩进用空格不用 Tab层级对齐要严格。手机端连不上如果服务器绑的是 127.0.0.1手机访问不到。要么用 SSH 隧道要么改HERMES_WEBUI_HOST0.0.0.0并设HERMES_WEBUI_PASSWORD。改完记得重启服务。settings.json 改了不生效WebUI 的 settings.json 是服务端存储加 localStorage 双写改文件后需要重启服务且浏览器要硬刷新清掉 localStorage 缓存。手机端尤其容易残留旧缓存清一下浏览器数据再进。请求超时Agent 任务跑得久timeout_seconds给太小会断。settings.json 里调到 120 或更高同时确认反向代理如果有的超时也够长。7. 下一步长期编码与 Agent 场景如果你只是偶尔在手机上问 Agent 几个问题上面这套配置就够了。但如果你打算把 Hermes WebUI 当成日常编码和 Agent 调用的入口尤其是让 Agent 跑长任务、调 Claude Code 或 Codex 做重活那按量计费的通道在成本上不一定划算。这种场景更适合用 Coding Plan路径是https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite它面向的是长期、高频的编码和 Agent 调用。接入文档在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite里面有完整的字段说明和示例。API Keys 管理在https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite需要新建或轮换 Key 的时候去这里。官网入口是https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content。配置这件事一次做对后面就省心。我踩过的坑基本都集中在环境变量加载和 YAML 缩进上你把这两处盯紧手机端跑通 Agent 请求就是几分钟的事。
返回列表