Hermes 用到后面,你会遇到两个很现实的问题:
- 我能不能让不同场景使用不同记忆、skills、模型和身份?
- 我能不能让外部系统通过 API 调用 Hermes,而不是每次都打开 CLI 或聊天入口?
Profiles 和 API Server 分别回答这两个问题。前者处理“谁在运行”,后者处理“谁来调用”。搜索 “Hermes profiles” 的人多半在做隔离;搜索 “Hermes API Server” 的人多半在做集成。把这两件事混在一起,是 Hermes 服务化时最常见的风险。
先用 Profiles 划清身份
Profiles 适合把不同用途的 Agent 隔离开:
| 场景 | 为什么需要 profile |
|---|---|
| 个人助手 vs 工作助手 | 记忆、语气、工具权限和 secrets 不应混在一起 |
| 开发环境 vs 生产环境 | cron、gateway、API key 和模型策略不同 |
| 研究 Agent vs 执行 Agent | 一个负责探索,一个负责稳定执行 |
| 团队 A vs 团队 B | 上下文、项目目录、权限和输出风格不同 |
| 备份或分叉 | 需要复制配置或完整上下文做实验 |
官方文档提供了 profile 管理和 clone 相关能力。应用层判断很简单:只想复用配置,用 clone config;想复制完整状态和历史,再考虑 clone everything,但要特别注意 secrets、旧 memory 和过期 cron jobs。
再决定是否需要 API Server
API Server 适合把 Hermes 作为后端能力接入外部系统:
- 自建 Web UI。
- 内部工具或 dashboard。
- 自动化系统。
- 需要 OpenAI-compatible 端点的客户端。
- 需要 Runs API 跟踪长任务进度的厚客户端。
- 需要健康检查和监控的长期服务。
官方文档提到 API Server 提供健康检查、OpenAI-compatible 接口和 runs API。应用层重点不是“接口多不多”,而是“外部调用是否被治理”。
Profiles 与 API Server 的决策表
| 你的需求 | 更接近的能力 | 原因 |
|---|---|---|
| 同一台机器上有个人助手和工作助手 | Profiles | 需要隔离 memory、skills、session 和 secrets |
| 让内部网页调用 Hermes | API Server | 需要 HTTP 入口、鉴权和 CORS |
| 让不同项目使用不同模型或工具权限 | Profiles | 需要按场景固定配置 |
| 让外部系统跟踪长任务状态 | API Server / Runs API | 需要创建、查询、取消或观察任务进度 |
| 定时任务按项目分开运行 | Profiles + Cron | 需要长期身份和固定 workdir |
| 团队试点一个 Hermes 后端 | Profiles + API Server | 需要先隔离身份,再开放调用入口 |
如果只能记住一条:先切 profile,再开 API。API 会放大当前 profile 的能力和混乱。
常见组合方式
| 组合 | 适用情况 |
|---|---|
| 单 profile + API Server | 个人工具或小型内部应用 |
| 多 profile + API Server | 不同团队、项目或环境需要隔离 |
| profile + cron | 同一台机器上运行多个长期任务身份 |
| profile + gateway | 不同消息入口对应不同助手角色 |
| profile + gateway + cron + API | 已经有明确 owner、审计、停用和回滚机制 |
如果你已经开始使用 cron 或 messaging gateway,profile 的价值会更明显:它能避免所有任务共享同一套记忆和权限。
多环境时最容易犯的错
第一个错误,是把个人、测试、生产都放在同一个 profile 里。短期看省事,长期看会把 memory、skills、cron 和 API 调用混在一起。等到出问题时,你很难判断到底是哪条记忆、哪个 skill 或哪个 gateway 入口触发了行为。
第二个错误,是把 API Server 当成“开一个端口就能用了”。API 一旦被外部系统调用,就会面对鉴权、重复请求、超时、长任务状态、CORS、日志和限权。它不是 CLI 的平移,而是一个需要治理的服务边界。
第三个错误,是只隔离配置,不隔离责任。一个 profile 应该对应清楚的使用场景和 owner:个人助手、站点内容助手、生产检查助手、研究助手,不要都叫 default。
第四个错误,是把浏览器调用和后端调用用同一套安全假设。浏览器会遇到 CORS、token 暴露、跨站调用和用户权限问题;后端调用更容易处理 secret,但也更容易被自动化脚本反复触发。
一个推荐的 profile 命名方法
命名不需要复杂,但要让后来的人一眼知道用途:
personal-default:个人日常使用。content-research:资料收集、教程写作、SEO 复盘。project-dev:开发环境自动化。project-prod-readonly:生产只读检查。api-external-test:外部系统测试调用。team-support-drafts:团队答复草稿,不直接对外发送。
名称本身就是治理的一部分。越是会长期运行的 Agent,越不能让 profile 只靠记忆去区分。
API Server 上线前检查
| 检查项 | 推荐做法 |
|---|---|
| 鉴权 | 设置 bearer token,不允许裸奔 |
| CORS | 浏览器调用时使用明确 allowlist,不用宽泛通配 |
| Profile | API 对应明确 profile,不混用个人 default |
| 长任务 | 使用 runs API 或状态查询,避免调用方以为任务丢了 |
| 高风险工具 | 外部 UI 不直接触发写操作,先生成草稿或等待审批 |
| 日志 | 记录调用来源、任务状态和失败原因,但不要泄露 secret |
| 健康检查 | 接入监控,但不要把敏感运行细节暴露给公开入口 |
API 上线最重要的不是“能调通”,而是“失败时调用方知道发生了什么,管理员知道怎么停”。
OpenAI-compatible 接口该怎么理解
OpenAI-compatible 的价值,是让已有客户端更容易接入 Hermes。但兼容接口不等于安全边界已经完成:
- 客户端能发请求,不代表它应该能触发所有 skills。
- 请求格式兼容,不代表 memory、profile 和工具权限就自动隔离。
- 外部 UI 能聊天,不代表它适合执行长任务。
- 调用方能收到回答,不代表失败、重试和取消已经可观测。
如果你要给内部工具接 Hermes,建议先做只读查询、草稿生成或任务状态解释,再逐步扩展到写操作。
什么时候不要急着上 API
下面几种情况先别急:
- 还没有稳定的 prompt、memory 和 skills。
- 调用方只是想“试试看”,没有明确成功标准。
- 权限边界还没写清。
- 团队还不能处理失败、超时、重复请求和取消。
- 还没有把 profile 与环境对应起来。
- 还没决定日志、token、CORS 和停用方式。
API 会放大能力,也会放大混乱。一个没有治理好的本地助手,暴露成 API 后只会更难排查。
下一步
如果你的主要问题是多环境隔离,继续看 Hermes Profiles 多环境指南。如果你已经准备接外部 UI 或自动化系统,继续看 Hermes API Server 集成边界。如果你要把 profile 用在长期定时任务里,回到 Hermes Cron 自动化。
完成检查
- 你知道 profile 隔离的是身份、记忆、skills、cron、plugins 和运行上下文。
- 你知道 API Server 面向外部系统,而不是普通用户随手聊天。
- 你已经把 bearer token、CORS、日志、长任务状态和高风险动作写进上线清单。
- 你能判断一个场景该用消息入口、cron,还是 API 调用。