5.9 KiB
#hermes #agent #Configuration
记录时间:2026-04-27
场景:Vibe Coding 多角色 Agent 配置
一、给 Agent 设置预设角色和项目背景
问题
每次对话都要在提示词里重复角色定义和项目背景,效率低。
解决方案:两个配置文件分工
SOUL.md — 角色人设(全局生效,跟着 Agent 走)
路径: ~/.hermes/SOUL.md(默认 profile)或 ~/.hermes/profiles/<名字>/SOUL.md
适合放:
- 角色定位、身份定义
- 思维方式、技术偏好
- 沟通风格、语言习惯
# 角色
你是一位资深软件架构师,有 10 年以上分布式系统设计经验。
## 核心职责
在任何 coding 任务开始前,先:
1. 分析需求,识别潜在的设计问题
2. 提出 2-3 种技术方案并给出 Trade-off 分析
3. 明确模块边界和接口设计
## 沟通风格
- 直接说结论,再给理由
- 用中文回复
AGENTS.md — 项目背景(项目级生效,放在项目根目录)
路径: ~/your-project/AGENTS.md
适合放:
- 技术栈、架构说明
- 开发约定、命名规范
- 当前阶段、注意事项
# 项目背景
## 技术架构
- Frontend: Next.js 14 (App Router) + Tailwind
- Backend: Python FastAPI,部署在 Docker
- 数据库: PostgreSQL,ORM 用 SQLAlchemy
## 开发约定
- API 统一返回 `{data, error, meta}` 结构
- 不直接修改 migration 文件,用 Alembic 命令
优先级总结
| 内容类型 | 放哪里 |
|---|---|
| 角色人格、沟通风格 | SOUL.md |
| 项目架构、技术栈、约定 | AGENTS.md(项目根目录) |
| 临时切换风格 | /personality teacher (会话级) |
二、创建多个独立 Agent(Profiles)
问题
想用不同角色做 vibe coding,默认只有一个 Agent。
解决方案:使用 hermes profile 创建隔离实例
每个 Profile 拥有独立的:SOUL.md、配置、记忆、会话历史、技能。
创建 Profile
# 克隆当前配置(推荐,省去重新配置模型和 API key)
hermes profile create nova --clone
hermes profile create werner --clone
# 给每个 profile 写专属的 SOUL.md
vim ~/.hermes/profiles/nova/SOUL.md
vim ~/.hermes/profiles/werner/SOUL.md
启动方式
nova # 直接用 alias 启动(Hermes 自动创建)
werner # 同上
hermes -p nova chat # 临时使用某个 profile,不切换默认
常用管理命令
hermes profile list # 查看所有 profiles
hermes profile show nova # 查看某个 profile 详情
hermes profile rename nova pm # 重命名
hermes profile delete nova # 删除(含所有记忆和会话,不可恢复)
hermes profile export nova # 备份
hermes -p nova doctor # 诊断某个 profile
角色命名参考
| 角色 | 推荐名字 | 来源 |
|---|---|---|
| 产品经理 | marty |
Marty Cagan,《Inspired》作者 |
| 架构师 | werner |
Werner Vogels,Amazon CTO |
| 产品经理(备选) | nova |
前瞻、探索感 |
| 架构师(备选) | atlas |
扛起系统架构 |
三、Telegram Bot 配置后无响应
问题
给新 Profile 配了 Telegram bot token,在 Telegram 上发消息没有任何反应。
排查顺序
1. Gateway 没有启动(最常见)
配置 token ≠ gateway 在运行,新 profile 需要单独启动。
hermes -p nova gateway status # 检查状态
hermes -p nova gateway start # 启动
hermes -p nova gateway # 前台运行,实时看日志
hermes -p nova gateway install # gateway service 没有安装的前提下
2. Token 没配在正确的 Profile 下
每个 profile 有独立的 .env,默认 profile 的 token 不会共享。
cat ~/.hermes/profiles/nova/.env | grep TELEGRAM
# 应看到:TELEGRAM_BOT_TOKEN=xxx
3. 用户 ID 不在白名单
Hermes 默认拒绝所有未授权用户的消息(安全默认值)。
# 在 .env 里加上自己的 Telegram User ID
TELEGRAM_ALLOWED_USERS=你的TelegramUserID
不知道自己 ID?在 Telegram 搜索
@userinfobot发消息获取。
4. 同一个 token 被两个 gateway 同时使用
会导致两个 gateway 互相冲突,都无法正常收消息。每个 Profile 必须使用独立的 Telegram Bot(在 BotFather 分别创建)。
四、Gateway 连接 Telegram 超时(国内网络)
问题
Gateway 服务正常运行,但日志反复出现:
WARNING: Primary api.telegram.org connection failed
WARNING: Fallback IP 149.154.167.220 failed
Connect attempt N/8 failed: Timed out
原因
Telegram 在国内被封,gateway 无法直连。
解决方案:配置代理
编辑对应 profile 的 .env:
vim ~/.hermes/profiles/nova/.env
添加代理配置(端口换成本地代理实际端口):
# HTTP 代理(Clash 默认 7890)
HTTPS_PROXY=http://127.0.0.1:7890
HTTP_PROXY=http://127.0.0.1:7890
# SOCKS5 代理(v2rayN 默认 10809)
HTTPS_PROXY=socks5://127.0.0.1:7890
HTTP_PROXY=socks5://127.0.0.1:7890
重启 gateway:
hermes -p nova gateway stop
hermes -p nova gateway start
hermes -p nova logs --tail # 观察是否连接成功
注意: 每个 profile 的
.env需要单独配置,互不共享。
快速参考:文件路径总览
~/.hermes/
├── SOUL.md # 默认 profile 的角色人设
├── profiles/
│ ├── nova/
│ │ ├── SOUL.md # nova 的角色人设(产品经理)
│ │ └── .env # nova 的 token、代理、白名单配置
│ └── werner/
│ ├── SOUL.md # werner 的角色人设(架构师)
│ └── .env # werner 的配置
~/your-project/
└── AGENTS.md # 项目背景(每个项目独立维护)