Hermes 集成

Hermes Profiles 保姆级教程:克隆、隔离验证、导出与删除

用 PROFILE-ALPHA-731 与 PROFILE-BETA-732 完成 P01–P12:创建两个 Profile,验证 Memory、Session、Skill、Cron、Gateway、工作目录与文件系统边界。

进阶 治理 预计 55 分钟 更新 2026/9/9 核验 2026/9/9
本页目录
官方文档核验 · 尚未运行实测查看验证范围

已核读当前 Profiles、Profile Commands、Memory、Cron 与 Gateway 文档,并静态检查 P01–P12 验收表和 Profile 合同;未在真实 Hermes 安装中创建、导出或删除 Profile。

完成结果

学完后你会留下什么

一份填好的 P01–P12 验收表与两个 Profile 合同,包含路径、克隆资产、隔离负例、导出恢复和删除证据。

参考版本
v0.21.1 / v2026.9.7(文档核读)
平台
macOS / Windows / Linux / Android
任务模式
Agent
权限
高权限
积分影响
适合谁
已经在一个 Hermes Profile 中长期使用,希望把个人、团队、测试或 API 环境拆开,并用证据证明没有串状态的用户
开始前确认
  • 已完成 Hermes 安装与固定首聊
  • 知道当前 Profile 和 HERMES_HOME
  • 测试期间不使用生产 Gateway、Cron 或真实 Secrets

Profile 不是给同一 Agent 换一个昵称。它通过独立 HERMES_HOME 分开 config、Memory、Session、Skills、状态数据库、Gateway、日志和 Cron。真正的多环境验收要回答三件事:新 Profile 复制了什么、旧状态有没有泄漏、工具还能访问哪些宿主机文件。

本课创建 lab-alpha-731lab-beta-732 两个临时 Profile。前者从当前配置轻量克隆,后者从 alpha 完整克隆。两个唯一金丝雀用于证明状态来源,不包含真实业务或 Secret。

本站验证范围: 本页于 2026-09-09 核读 v0.21.1 / v2026.9.7 当前官方文档;本站没有安装 Hermes、创建 Profile、运行模型或删除用户数据。

下载实验材料

将每个未执行步骤保留为“未验证”。实际路径、命令输出和归档哈希应写入证据栏;不要记录 .env 内容、API Key、OAuth token 或真实个人资料。

先看清三种边界

边界Profile 会做什么Profile 不会做什么
Hermes 状态为 config、Memory、Session、Skills、Cron、Gateway PID/日志和数据库使用独立 HERMES_HOME不自动证明业务权限正确
工具起点可用 terminal.cwd 指定启动目录不会把 Profile 目录自动当工作目录
宿主机访问container backend 可用 profile home;host 可选 terminal.home_mode: profilelocal backend 默认仍能按 OS 用户权限访问其他目录

SOUL.md 是提示,不是访问控制。让模型回答“我在哪个目录”也不是隔离证据;用工具实际读取路径和负例文件才算。

P01:盘点当前 Profile

hermes profile list
hermes profile show default
hermes dump

记录当前 active 标记、Profile ID、HERMES_HOME、模型、Gateway 状态与 Skill 数量。default 的内部 ID 永远是 default;对它执行 rename 只设置显示名,不改变命令、服务或 Cron 引用。

先检查实验名没有被占用:

hermes profile show lab-alpha-731
hermes profile show lab-beta-732

若名称已存在,停止实验并换一组明确的新名字,不使用 --force 覆盖。

P02:先写 Profile 合同

为 alpha 与 beta 各复制一份模板,写清 owner、用途、terminal.cwd、允许的 Tools/Skills、Memory 规则、Gateway/API/Cron 状态和删除日期。首轮约束为:

  • 只在临时目录运行;
  • Gateway、API 和 Cron 关闭;
  • 不放生产凭据;
  • 不访问两个 canary 文件之外的业务资料;
  • 所有删除动作先 export。

Profile 的描述可供 Kanban orchestrator 路由,不能代替这份人工合同。

P03:用轻量 clone 创建 alpha

hermes profile create lab-alpha-731 --clone \
  --description "Temporary profile isolation lab; no production actions"
hermes profile show lab-alpha-731

--clone 复制当前 Profile 的 config.yaml.envSOUL.md 与 Skills。它不复制 Memory 和 Session。由于 .env 会被复制,立即核对变量名和 provider 范围;不要把值打印到日志。实验 Profile 不需要的真实 Secret 应移除或轮换为测试凭据。

新建 Profile 默认生成 ~/.local/bin/lab-alpha-731 alias,也可以统一用:

hermes -p lab-alpha-731 doctor
hermes -p lab-alpha-731 dump

每条命令都带 -p 能减少 sticky default 切错环境的风险。-p 可以放在命令任意位置。

P04:建立固定工作目录

为两个 Profile 分别准备隔离测试目录:

<你的实验根目录>/alpha/profile-canary.txt = PROFILE-ALPHA-731
<你的实验根目录>/beta/profile-canary.txt  = PROFILE-BETA-732

在 alpha 的 config.yaml 使用实际绝对路径:

terminal:
  backend: local
  cwd: /absolute/path/to/profile-lab/alpha

cwd: "." 表示 Hermes 启动时的目录,并不表示 Profile home。修改 SOUL.md 或 cwd 后开新 Session,避免旧 prompt 状态干扰判断。

P05:验证 cwd 正例与负例

在 alpha 新 Session 给出固定任务:

使用文件工具读取当前工作目录中的 profile-canary.txt,只返回文件内容和工具看到的绝对路径。不要搜索父目录。

预期只返回 PROFILE-ALPHA-731 和 alpha 路径。随后把明确的 beta canary 绝对路径作为负例读取。如果 local backend 能读到 beta,这不是 Profile 失效,而是证明 Profile 不构成文件系统沙箱;将结果记为 P05 的硬边界,而不是误写成“完全隔离”。需要强隔离时启用受控 container/sandbox,并重新跑负例。

P06:验证 Memory 与 Session 不继承

先在 alpha 新 Session 写入一个无害长期事实:

请申请写入长期记忆:实验代号是 PROFILE-ALPHA-731。

批准后再开一个 alpha 新 Session 查询;按 Memory 实验 记录 staged、approve 与新 Session 证据。当前 default Profile 不应凭空命中该唯一值。

--clone 的 beta 还没创建,因此 P06 只证明 alpha 与来源 Profile 的新 Memory/Session 分离。不要用“模型说不知道”作为唯一证据,同时检查 Profile 路径和 Session 列表。

P07:验证 Skills 与 Cron 的归属

hermes -p lab-alpha-731 skills list
hermes -p lab-alpha-731 cron list
hermes cron list

Skills 应来自 P03 的轻量 clone;alpha 的 Cron 应为空或只含你明确创建的本地测试项。Profile 文档明确:Cron 存在于各自 HERMES_HOME,不能让两个 Agent 并发指向同一 Profile,否则它们会同时写 Memory 和状态。

本课不创建 Cron。若需要验证,使用 Cron C01–C14 的 paused、local delivery 金丝雀,不能复制生产 job。

P08:从 alpha 完整 clone beta

hermes profile create lab-beta-732 \
  --clone-from lab-alpha-731 --clone-all \
  --description "Temporary clone-all boundary lab; no production actions"
hermes profile show lab-beta-732

当前 --clone-all 会复制 config、静态 API keys、SOUL、Memory、Skills 与 Plugins;明确排除 Session、state.db、backups、state-snapshots、checkpoints 以及 Cron jobs。旧资料中“完整状态会复制 Session/Cron”的说法已经过时。

OAuth 登录不会复制出第二套独立 token。共享 root auth 的 token refresh 会回写 root;需要独立 OAuth 身份时,在目标 Profile 内重新执行 hermes -p <name> auth add <provider>

P09:证明 clone 后仍是两个身份

把 beta 的 cwd 改为 beta 实验目录,新开 Session 后检查:

  • 能读取 PROFILE-BETA-732
  • Session 列表不包含 alpha 历史;
  • Cron 列表不包含 alpha job;
  • clone 时已有的 alpha Memory 可出现;clone 后新增的 Memory 不应自动双向同步;
  • Gateway PID、日志和状态路径不同。

外部 Memory provider 可能有自己的 scope;Honcho 在 Profile clone 时创建独立 AI peer,但可共享用户 workspace。启用第三方 provider 时应单独验证其 scoping,不能拿文件 Memory 结果外推。

P10:验证 sticky default 与 alias

hermes profile use lab-alpha-731
hermes profile list
hermes dump
hermes profile use default
hermes profile list

active * 应随 use 改变。切回 default 是本实验的硬门禁。Alias、-p 与 sticky default 都指向同一 Profile,但运维脚本应优先写显式 hermes -p <id>

P11:导出并做恢复演练

hermes profile export lab-alpha-731

记录 tar.gz 路径、时间与 SHA-256。Export 会包含 Profile 配置、Memory、Skills、Cron、Plugins 等可迁移状态,并剥离 API Keys。它是恢复材料,不是凭据备份。

使用一个新名字导入,避免覆盖原 Profile:

hermes profile import ./lab-alpha-731.tar.gz --name lab-alpha-restore-731
hermes profile show lab-alpha-restore-731

核对 Memory canary、Skills 与合同;重新配置测试凭据后才能启动 Gateway/API。恢复验收完成后,先 export restore,再删除临时恢复 Profile。

P12:停止服务并删除实验 Profile

hermes -p lab-alpha-731 gateway status
hermes -p lab-beta-732 gateway status
hermes profile delete lab-alpha-restore-731
hermes profile delete lab-beta-732
hermes profile delete lab-alpha-731
hermes profile list
hermes profile use default

Delete 会停止对应 Gateway、移除 systemd/launchd 服务、alias 和全部 Profile 数据,并要求输入名称确认。默认 Profile 不能删除。列表中三个测试 ID 均消失、默认 Profile 恢复 active、实验目录和 export 按你的保留策略处理后,才算完成。

上生产前的四个硬门禁

  1. 一 Agent 一 Profile: 不让两个长期进程写同一个 HERMES_HOME。
  2. 一用途一合同: owner、cwd、工具、Memory、入口和停用方式可追责。
  3. Profile 不等于 sandbox: 用实际越界负例证明宿主机访问边界。
  4. 复制不等于备份: clone-all 排除历史和 Cron;需要恢复证据时使用 export 或 backup。

完成检查

  • P01–P12 每一行都有实际命令、结果和证据位置。
  • 你能准确说出 --clone--clone-all、export 的资产差异。
  • Memory、Session、Cron、Gateway 与 cwd 都完成正例和负例。
  • 文件越界结果按真实 backend 记录,没有把 Profile 宣称为 sandbox。
  • 三个临时 Profile 已删除,default 恢复 active,归档哈希已记录。

下一步用独立 Profile 完成 API Server A01–A14 上线实验。如果只需要消息入口,先完成 Gateway 四层验收

官方资料

版本和参数,以这些来源为准

本文按实际任务重写,快速变化的信息仍应在操作前回到官方页面核对。

常见问题

继续操作前,先确认这些边界

Profile 是否等于文件系统沙箱?

不是。Profile 用 HERMES_HOME 隔离 Hermes 状态;本地 terminal backend 默认仍继承真实 OS 用户 HOME 和权限。需要限制文件访问时,还要单独配置 sandbox 或容器。

`--clone` 与 `--clone-all` 有什么差别?

`--clone` 复制 config、.env、SOUL.md 和 Skills,但给新 Profile 留下新的 Session 与 Memory;`--clone-all` 还复制 Memory 和 Plugins,但排除 Session、state.db、备份、快照、checkpoint 与 Cron。

删除 Profile 前为什么要 export?

delete 会停止 Gateway、移除服务和 alias,并删除该 Profile 的全部数据;export 会生成去除 API Key 的 tar.gz,可用于恢复或审计。

继续学习

按当前任务继续推进