
1. 从一次多用户配置冲突说起Hermes Agent Profile 到底解决什么问题如果你正在把 Hermes Agent 从「自己一个人用」推进到「团队几个人一起用」大概率会撞上同一个坑A 同事的 API Key 被 B 同事的会话消耗、记忆文件互相覆盖、Gateway 抢同一个 Bot Token 起不来。我试过最原始的做法——每人复制一份安装目录结果升级一次要改五份配置日志还散落在不同路径下排查问题基本靠猜。Hermes Agent 的 Profile 机制就是为这个场景设计的。它是什么一句话Profile 是一套完全独立的运行环境通过HERMES_HOME环境变量把配置、记忆、会话、凭证、子进程 HOME 全部隔离到不同目录。能做什么你可以在一台机器上同时跑「coder」「assistant」「work」三个互不干扰的 Agent每个有自己的模型配置、API Key、SOUL.md 人格设定和 SQLite 会话库。适合谁需要为多用户或多用途隔离 AI 工具链的开发者、小团队运维、以及想把 Agent 当服务跑起来的人。但 Profile 只解决了「本地隔离」没解决「统一出口」。如果每个 Profile 各自去配不同厂商的 Key多用户方案会立刻退化成 Key 管理地狱。所以这篇会把两件事绑在一起讲Profile 架构怎么拆以及怎么用 TaoToken 做统一 Key/API 通道让所有 Profile 共享一条稳定的接入链路。下面给出的config.toml和settings.json骨架可以直接复制改。2. TaoToken 前置准备统一 Key 与 API 通道怎么接在动 Profile 之前先把「出口」定下来。多用户方案里最怕的就是每个 Profile 一套凭证轮换时漏改一个就 401。TaoToken 在这里的角色是统一接入层你只需要维护一份 API Key所有 Profile 通过同一个 Base URL 发请求模型切换、配额观察、Key 轮换都在一个地方完成。先拿 Key。打开 https://taotoken.net/api-keys 登录后创建一个 Key复制出来形如sk-xxxxxxxx。这个 Key 后面会写进每个 Profile 的.env但注意——不是每个 Profile 用不同的 Key而是共用同一个 Key隔离靠的是 Profile 目录不是凭证。这点和「多 OS 用户各自申请 Key」的思路不同后者管理成本高前者才是多用户方案该有的样子。Base URL 固定为https://taotoken.net/api不要加任何路径后缀。模型 ID 用标准的anthropic/claude-sonnet-4这类写法即可TaoToken 侧会做路由。如果你还没决定用哪个模型可以先到 https://taotoken.net/models 看一眼当前可用的模型列表再回来填配置。这里有个容易踩的坑很多人把 Base URL 写成https://taotoken.net/api/v1结果请求打到 404。正确写法就是https://taotoken.net/apiOpenAI 兼容层会自动补/v1/chat/completions。另外Key 不要硬编码进config.toml统一放.env这样 Profile 导出分享时不会泄露凭证。前置准备清单项目值说明Base URLhttps://taotoken.net/api所有 Profile 共用API Keysk-xxxx从 api-keys 页获取写入各 Profile 的.envModel IDanthropic/claude-sonnet-4可按 Profile 覆盖文档https://taotoken.net/doc参数与错误码对照如果你打算长期跑编码类 Agent建议顺手看一下 Coding Planhttps://taotoken.net/coding-plan 它和按量计费是两条线多用户场景下预算更可控。准备好这些就可以进入 Profile 骨架的搭建了。3. 可复制配置config.toml 与 settings.json 骨架这一节是全文的核心直接给可复制的配置。Hermes Agent 的 Profile 目录结构是~/.hermes/profiles/name/每个目录下放config.toml或config.yaml取决于你的版本、.env、SOUL.md。下面用config.toml写因为 TOML 对多用户配置的可读性更好。先建目录mkdir -p ~/.hermes/profiles/coder mkdir -p ~/.hermes/profiles/assistant mkdir -p ~/.hermes/profiles/work然后写~/.hermes/profiles/coder/config.toml# ~/.hermes/profiles/coder/config.toml [model] default anthropic/claude-sonnet-4 provider openai-compatible base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY [gateway] group_sessions_per_user true session_reset_policy idle idle_reset_minutes 60 [memory] memory_enabled true user_profile_enabled true memory_char_limit 2200 user_char_limit 1375 [credential_pool_strategies] openai-compatible fill_first对应的.env# ~/.hermes/profiles/coder/.env TAOTOKEN_API_KEYsk-你的Keyassistant和work两个 Profile 复制同样的结构只改default模型和SOUL.md人格。比如work用更保守的模型# ~/.hermes/profiles/work/config.toml [model] default anthropic/claude-sonnet-4 provider openai-compatible base_url https://taotoken.net/api api_key_env TAOTOKEN_API_KEY如果你用的是settings.json风格的版本部分 IDE 插件或 Cline MCP 场景骨架长这样{ hermes.profile: coder, hermes.home: ~/.hermes/profiles/coder, model: { default: anthropic/claude-sonnet-4, provider: openai-compatible, baseUrl: https://taotoken.net/api, apiKeyEnv: TAOTOKEN_API_KEY }, gateway: { groupSessionsPerUser: true, sessionResetPolicy: idle, idleResetMinutes: 60 } }注意三件套必须齐全Base URL Key Model ID。少任何一个请求都会在鉴权或路由阶段失败。Cline MCP 或 CC Switch 场景下把baseUrl填https://taotoken.net/apiKey 填sk-xxxxModel ID 填anthropic/claude-sonnet-4三者对齐即可。创建 Profile 的命令hermes profile create coder --clone hermes profile create assistant --clone hermes profile create work --clone--clone会复制默认 Profile 的配置骨架你只需要改config.toml里的模型和.env里的 Key。切换 Profile 有三种方式hermes -p coder chat、直接调别名coder chat、或者hermes profile use coder设为默认。多用户场景推荐用别名每个 OS 用户在自己的~/.local/bin下有独立包装脚本互不干扰。4. 验证请求确认 Profile 隔离与 TaoToken 通道都通了配置写完必须验证否则你永远不知道是 Profile 没生效还是 Key 有问题。分三步走。第一步确认 Profile 被正确识别hermes profile list预期输出会列出default、coder、assistant、work每个带独立的路径。如果某个 Profile 没出现检查~/.hermes/profiles/下目录名是否拼错。第二步确认环境变量指向正确的 ProfileHERMES_HOME~/.hermes/profiles/coder hermes config get model.default应该返回anthropic/claude-sonnet-4。如果返回的是默认 Profile 的值说明HERMES_HOME没生效检查你的 shell 是否覆盖了这个变量。第三步发一个真实请求验证 TaoToken 通道HERMES_HOME~/.hermes/profiles/coder hermes chat --message 用一句话说明你当前使用的模型成功的话会返回模型回复同时你可以在 https://taotoken.net/console 看到这次请求的用量记录。这一步同时验证了两件事Profile 隔离生效用的是 coder 的配置以及 TaoToken 通道通畅请求被正确路由。再验证多用户会话隔离。用两个不同来源发消息观察会话 Keyhermes sessions list --source telegram你会看到类似agent:main:telegram:dm:chat_id的 Key每个 DM 独立。群组场景下 Key 会带:user_id后缀这正是group_sessions_per_user true在起作用。如果两个用户的会话混在一起检查config.toml里这个开关是否漏了。最后验证记忆隔离。在 coder Profile 里写一条记忆HERMES_HOME~/.hermes/profiles/coder hermes memory add memory coder profile 专用记忆然后切到 assistant Profile 读HERMES_HOME~/.hermes/profiles/assistant hermes memory listassistant 里不应该出现这条记忆。如果出现了说明两个 Profile 指向了同一个HERMES_HOME回去检查目录结构。5. 常见报错排查401、local proxy failed、reading choices、OAuth多用户方案跑起来后报错基本集中在四类。逐个对照。401 Unauthorized。最常见的原因是.env里的 Key 没被加载。Hermes 读取.env依赖 Profile 目录正确先确认HERMES_HOME~/.hermes/profiles/coder hermes config get model.api_key_env返回TAOTOKEN_API_KEY后再确认这个变量在运行时存在HERMES_HOME~/.hermes/profiles/coder hermes doctordoctor会打印凭证加载状态。如果显示 Key 为空检查.env文件权限chmod 600和是否有换行符污染。另一个 401 来源是 Key 本身失效去 https://taotoken.net/api-keys 确认状态。local proxy failed。这个报错通常出现在你本地配了转发规则但目标不可达。多用户场景下如果某个 Profile 的base_url被误改成http://localhost:xxxx就会触发。统一改回https://taotoken.net/api即可。注意不要在任何 Profile 里配置本地转发地址所有 Profile 直连同一个 Base URL。reading choices 相关报错形如error reading choices: unexpected end of JSON input。这是响应体解析失败根因通常是 Base URL 写错导致返回了 HTML 错误页。检查两点base_url是否为https://taotoken.net/api不带/v1以及 Model ID 是否拼写正确。Model ID 写错时部分网关会返回非 JSON 响应触发这个解析错误。OAuth 相关报错。如果你在 Profile 里配了 OAuth 类型的凭证比如某些 Anthropic 直连场景但多用户共享同一个 OAuth token会触发刷新冲突。多用户方案下建议统一用 API Key 模式不要混用 OAuth。如果必须用 OAuth每个 Profile 独立授权不要共享auth.json。排查速查表报错最可能原因修复动作401Key 未加载 / Key 失效检查.env与 api-keys 状态local proxy failedbase_url 指向本地改回https://taotoken.net/apireading choicesbase_url 带/v1或 Model ID 错去掉后缀核对模型名OAuth 冲突多 Profile 共享 token改用 API Key 模式排查时养成一个习惯先hermes doctor再hermes config get最后发一条最小请求。三步能定位 90% 的问题。6. 多用户方案落地从 Profile 隔离到统一通道把前面的东西串起来一个可落地的多用户方案是这样的每个用户或每个用途一个 Profile 目录所有 Profile 共享同一个 TaoToken Base URL 和 Key隔离靠目录统一靠通道。具体落地时小团队5 人以内直接用多 Profile 就够给每人建一个 ProfileSOUL.md写各自偏好.env共用同一个 Key。中型团队按职能分 Profileteam-dev、team-support、team-management每个配独立的 Bot Token 跑 Gateway但模型出口都走 TaoToken。这样升级模型或轮换 Key 时只改一处。如果你需要更细的权限控制比如限制某用户每天 token 用量那属于 Profile 机制之外的增强开发需要自己扩展 Gateway 的鉴权层。但绝大多数场景Profile 统一通道已经能覆盖。最后给一个实用技巧把 Profile 的创建和配置写成脚本新成员入职时一条命令搞定。#!/bin/bash # onboard.sh profile_name NAME$1 hermes profile create $NAME --clone cat ~/.hermes/profiles/$NAME/.env EOF TAOTOKEN_API_KEYsk-你的Key EOF echo Profile $NAME 创建完成记得改 config.toml 里的模型跑bash onboard.sh alice三十秒建好一个隔离环境。需要更细的接入参数翻 https://taotoken.net/doc 想先试模型效果直接去 https://taotoken.net/chat 发一条消息感受一下。配置骨架已经给你了剩下的就是按自己的团队结构填目录名。