为什么目录存在还不够
Profile 隔离的目标不是“多了几个文件夹”,而是不同运行单元不会意外读取对方的配置、记忆、技能、会话和任务。验证必须从运行时行为出发。
一、准备两个可识别 Profile
为两个 Profile 写入不同且无敏感信息的标记,例如 PROFILE_MARKER=alpha 和 PROFILE_MARKER=beta。标记不要使用真实密钥,也不要提交到公共仓库。
hermes profile list
printf '%s\n' "${HERMES_HOME:-<default>}"
二、验证配置和行为文件
分别检查两个 Profile 的配置路径、SOUL.md 和技能目录。用一个简单任务要求 Agent 说出自己的标记,确认运行时读取的是当前 Profile,而不是默认目录。修改后应开启新会话,因为旧会话可能保留旧提示词快照。
三、验证记忆与会话
在 alpha 中写入一个专属、无敏感信息的测试事实;在 beta 中询问该事实。预期 beta 不应知道 alpha 的测试内容。测试结束后删除测试记忆,避免污染长期上下文。
四、验证 Skill 和 Cron
分别放置名称明显不同的测试 Skill,要求两个 Profile 列出自己的 Skill。再为每个 Profile 建立不会产生外部副作用的测试任务,检查任务列表与执行日志归属。Cron 详情可参考Cron 排查指南。
五、常见串线来源
- 启动命令没有显式指定 Profile;
- 后台服务继承了错误的
HERMES_HOME; - 共用一个工作目录中的相对路径;
- 使用“全量克隆”时把记忆和任务一起复制;
- 旧会话继续使用修改前的上下文。
验收矩阵
| 项目 | alpha | beta | 预期 |
|---|---|---|---|
| 配置标记 | alpha | beta | 不混用 |
| 测试记忆 | 有 | 无 | 不可跨 Profile 召回 |
| 测试 Skill | A | B | 只显示自己的 |
| 测试 Cron | A 任务 | B 任务 | 归属明确 |
完成后清理测试标记、任务和临时文件,并保留脱敏的验证记录。