news 2026/9/26 9:33:45

飞牛EVO2(fnOS)Docker部署Hermes-Agent:TaoToken统一Key接入与config.toml配置骨架

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
飞牛EVO2(fnOS)Docker部署Hermes-Agent:TaoToken统一Key接入与config.toml配置骨架

1. 飞牛EVO2 上跑 Hermes-Agent,为什么值得折腾

飞牛EVO2 是一台很适合放在家里角落长期开机的 NAS 小主机,fnOS 自带 Docker 应用中心,点几下就能把容器引擎装好。Hermes-Agent 是一个能长期驻留、带记忆和工具调用能力的智能体框架,把它跑在 EVO2 上,相当于给家里添了一个随时在线的 AI 助手:可以接微信、飞书,也能自己读写工作目录里的文件。

但真正动手时,很多人会卡在同一个地方:模型 Key 太散。OpenAI 一个 Key、DeepSeek 一个 Key、通义千问又一个 Key,每个都要写进环境变量,容器一多就乱成一锅粥,改一个模型要翻好几个配置文件。这篇就聚焦飞牛EVO2(fnOS)上用 Docker 部署 Hermes-Agent 的完整落地路径,重点解决多模型 Key 分散、环境变量混乱的问题,给出可复制的 docker-compose.yml 与 config.toml 骨架,并用 TaoToken 统一 Key/API 通道接入,最后附上容器启动后验证 Agent 连通性的具体命令和报错排查动作。

适合谁看:手里有飞牛EVO2、已经装好 Docker、想跑一个长期在线 Agent 但被 Key 管理劝退的人。全程小白友好,命令可以直接抄。

2. 前置准备:TaoToken 统一 Key 与 fnOS 环境

2.1 为什么用 TaoToken 收口 Key

传统做法是把每个厂商的 Key 分别塞进环境变量,比如OPENAI_API_KEY、DASHSCOPE_API_KEY、DEEPSEEK_API_KEY。问题是 Hermes-Agent 的 config.toml 里每换一个模型就要改一处 base_url 和 key,容器重建后环境变量还得重新对一遍。

TaoToken 的思路是提供一个统一的 API 通道,你只需要一个 Key,就能在同一个入口下切换不同模型。对 Hermes-Agent 来说,config.toml 里只认一个base_url和一个api_key,模型名换一下就行,环境变量从五六个压缩成一个。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。

2.2 拿 Key 与确认环境

登录后进入控制台,在 API Keys 页面新建一个 Key,复制保存。这个 Key 后面会写进 config.toml,不要直接贴在 docker-compose 的 environment 里明文暴露,建议放.env文件。

fnOS 这边确认三件事:Docker 容器引擎已在应用中心安装并运行;/docker共享文件夹可写;EVO2 预留 ≥8GB 空闲内存、≥10GB 磁盘空间。内存不够时 Hermes-Agent 加载模型工具链会 OOM,这点别省。

注意:TaoToken 是合规的 API 聚合通道,本文所有配置都走官方 API 地址,不涉及任何网络代理类操作。

3. 可复制配置:docker-compose.yml 与 config.toml 骨架

3.1 目录结构

先在 fnOS 文件管理里进入/docker共享文件夹,新建hermes-agent,里面再建data和config两个子目录:

/docker/hermes-agent ├── docker-compose.yml ├── .env ├── data/ # 持久化记忆、数据库、工作目录 └── config/ └── config.toml

data挂给容器的/opt/data,config挂给配置目录,这样容器重建数据不丢。

3.2 docker-compose.yml

version: "3.8" services: hermes: image: nousresearch/hermes-agent:latest container_name: hermes-agent restart: always ports: - "58000:8000" volumes: - ./data:/opt/data - ./config:/opt/config env_file: - .env environment: - TZ=Asia/Shanghai - USER_ID=0 - GROUP_ID=0 user: "root:root" command: gateway run network_mode: bridge

关键点:env_file把 Key 从 compose 里剥离出来,user: "root:root"解决 fnOS 上挂载目录的 Permission denied,command: gateway run让容器起来就跑网关。

3.3 .env 文件

TAOTOKEN_API_KEY=sk-你的TaoToken密钥 TAOTOKEN_BASE_URL=https://taotoken.net/api

3.4 config.toml 骨架

这是 Hermes-Agent 的主配置,模型、API、端口都在这里。统一走 TaoToken 后,结构清爽很多:

[gateway] host = "0.0.0.0" port = 8000 [model] provider = "openai_compatible" base_url = "https://taotoken.net/api" api_key = "${TAOTOKEN_API_KEY}" model_name = "gpt-4o-mini" temperature = 0.7 max_tokens = 4096 [memory] db_path = "/opt/data/state.db" workspace = "/opt/data/workspace" [logging] level = "info" path = "/opt/data/logs"

provider用openai_compatible是因为 TaoToken 的接口兼容 OpenAI 格式,Hermes-Agent 直接认。想换模型只改model_name一行,比如换成deepseek-chat或qwen-plus,Key 和 base_url 都不用动,这就是统一通道的价值。

4. 启动容器与验证 Agent 连通性

4.1 启动

在 fnOS 桌面打开 Docker,切到 Compose,新增项目,名称hermes-agent,路径选/docker/hermes-agent,粘贴上面的 compose 内容,勾选创建后立即启动。或者直接 SSH 进 EVO2:

cd /docker/hermes-agent docker compose up -d docker logs -f hermes-agent

日志里看到gateway listening on 0.0.0.0:8000就说明网关起来了。

4.2 验证连通性

先测容器内到 TaoToken 的通道是否通:

docker exec -it hermes-agent curl -s https://taotoken.net/api/models \ -H "Authorization: Bearer $TAOTOKEN_API_KEY"

返回模型列表 JSON 就说明 Key 和网络都正常。再测 Agent 本身:

curl -s http://127.0.0.1:58000/v1/chat/completions \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-4o-mini", "messages": [{"role": "user", "content": "你好,报一下你的模型名"}] }'

能返回一段正常回复,说明 Hermes-Agent 已经通过 TaoToken 打通了模型。如果要在浏览器里直接对话调试,可以用模型对话页面快速验证同一个 Key 是否可用。

4.3 初始化配置

首次启动后进容器终端跑一次初始化脚本:

docker exec -it hermes-agent bash ./setup-hermes.sh

脚本会引导你确认模型和网关配置。因为 config.toml 已经写好,这里直接选跳过或确认即可。完成后data目录下会生成state.db、SOUL.md、workspace等文件,这些就是 Agent 的记忆和人格载体。

5. 本篇常见报错排查

5.1 bash: hermes: command not found

setup-hermes.sh是单独建的环境,直接敲hermes找不到。进虚拟环境即可:

source /opt/hermes/venv/bin/activate

或者关掉当前终端重开一个,默认会加载该环境。

5.2 Permission denied: '/opt/data/.env'

fnOS 挂载出来的文件权限和容器内用户不一致。两种解法,一是给目录放权:

chmod -R 777 /docker/hermes-agent/data

二是像上面 compose 那样强制user: "root:root",从根上避免。

5.3 网关配置好微信后不回答

多半是旧网关进程没退干净,端口被占。强制重启:

hermes gateway run --replace

5.4 识别不了中文文件夹或文件名

在.env里补上编码环境变量:

LANG=C.UTF-8 LC_ALL=C.UTF-8

然后docker compose down && docker compose up -d重建容器。

5.5 模型返回 401 或 404

401 一般是 Key 没读到,检查.env里变量名和 config.toml 的${TAOTOKEN_API_KEY}是否一致;404 多半是base_url写成了带/v1的路径,TaoToken 的基址就是https://taotoken.net/api,不要自己加后缀。

6. 长期跑 Agent,Key 管理这样收口

把 Hermes-Agent 跑在飞牛EVO2 上,真正的省心点不在部署那十分钟,而在后面几个月的维护。多模型 Key 分散时,每次换模型都要动环境变量、重建容器、重新对配置,出错概率极高。用 TaoToken 统一通道后,config.toml 里只有一处 base_url 和一处 api_key,换模型就是改一行model_name,容器都不用重启。

如果你打算长期跑编码类或 Agent 类任务,可以了解下 Coding Plan,它更适合高频调用的场景;日常接入和排障的细节都在接入文档里,遇到报错先翻文档比瞎试快得多。Key 统一了,剩下的就是让 Agent 安安静静在 EVO2 上干活。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 9:31:59

员工工资管理系统SQL数据库设计实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 9:28:52

柔性排线共振引发行程相关噪音的机理与治理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 9:26:32

传感器远程运维实战:从RS485到边缘网关的完整数据链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华