给女朋友配了个 AI 助手——Hermes Agent 多用户 Profile 实战
前阵子一直在折腾 Hermes Agent,把自己的微信、Telegram、Discord 都接上了,用着挺顺手的。女朋友看着眼馋,也想来一个。
那就安排吧。
需求很简单
给她单独弄一个 AI 助手,通过微信聊天。核心要求就几个:
- 跟我完全隔离——她的对话、记忆、人格设置我都看不到
- 用微信——她日常最常用的聊天工具
- 不会误操作到我这边的东西
Hermes Agent 有个 Profile 功能,完美契合这个需求。
第一步:创建独立 Profile
Hermes 的 Profile 可以理解为一个完全独立的实例,有自己的配置、记忆、技能库、会话历史。
bash
hermes profile create helen --clone
--clone 会从默认配置复制一份,包括 API Key、技能库等。这样不用从零开始配。
创建完成后,自动生成了快捷命令 helen,用 helen chat 就能直接启动。
第二步:写专属 SOUL.md
Hermes 的人格定义在 SOUL.md 文件里。我给她写了一份:
- 说话温柔靠谱,不废话
- 认识到自己是 Helen 的私人助手
- 明确写了"绝对不要把 Helen 的信息分享给山哥的会话"
- 结尾风格像贴心朋友,有分寸感
markdown
## 关于 Helen
- Helen,山哥的女朋友
- 你是 Helen 的私人助手,不是山哥的
- 说话温柔一点,但不要油腻
第三步:独立 Linux 账号
之前已经给女朋友建了一个 Linux 账号(Helen,uid=1001),之前用来跑邮件助手的。
把 Profile 搬到她的 home 目录下:
bash
mv ~/.hermes/profiles/helen /home/Helen/.hermes
chown -R Helen:Users /home/Helen/.hermes
这样配置、会话、记忆都存放在她自己的目录里,跟我(root)完全隔离。
第四步:微信 iLink Bot
这是踩坑最多的地方。
误区:共用一个 Bot
一开始我天真地以为,我可以直接让她给我现有的微信 Bot 发消息,通过 DM Policy 控制权限就行。
但试了一圈发现不行。iLink Bot(微信个人号机器人)的架构是:
- 每个微信账号扫码绑定一个独立的 Bot 身份(格式像
xxxxx@im.bot) - 别人没法通过搜索、扫码添加 Bot 为好友
- Bot 只能接收直接发给它的消息
Helen 搜不到我的 Bot,所以只能给她单独搞一个。
重新扫码登录
切换到 Helen 的账号,运行:
bash
hermes gateway setup
选择微信,用她自己的微信扫码登录。成功后会生成一个全新的 iLink Bot ID。
注意: 我这边已经有一个 Gateway 在跑(root 用户),Helen 需要单独跑一个。好消息是两个 Gateway 完全独立,不冲突——不同的 Bot ID,不同的 systemd 服务。
第五步:各种踩坑
###坑 1:/home/Helen 目录权限问题
Helen 的 home 目录 owner 是 root(之前创建账号时遗留的),导致她没有写权限。hermes gateway install 要写 ~/.config/systemd/user/,直接报 Permission denied。
bash
chown Helen:Users /home/Helen
mkdir -p /home/Helen/.config/systemd/user
chown -R Helen:Users /home/Helen/.config
坑 2:XDG_RUNTIME_DIR 未设置
用 su 切换用户时,XDG_RUNTIME_DIR 不会自动设置。Hermes 的 systemd --user 检查会读到 /run/user/0/bus(root 的),然后报权限错误。
解决:在 .bashrc 里加上:
bash
export XDG_RUNTIME_DIR="/run/user/$(id -u)"
坑 3:没有 ll 命令
Helen 的账号之前就是个空壳,没有 .bashrc,什么 alias 都没有。给她写了一个基础配置,加了 ll、ls --color、history 格式化等。
坑 4:DM Policy 拦截
克隆配置时 WEIXIN_DM_POLICY=pairing,所有陌生人都被拦截。改成 open 才能让 Helen 发消息通过。
bash
WEIXIN_DM_POLICY=open
WEIXIN_ALLOW_ALL_USERS=true
坑 5:Telegram/Discord 冲突
克隆的 .env 里有我的 Telegram 和 Discord Bot Token。两个 Gateway 不能用同一个 Bot 同时连接——会互相踢。把 Helen 的 .env 里这两个 token 注释掉就好了。
坑 6:开机自启
Helen 没有 systemd linger,机器重启后 user service 不会自动运行:
bash
loginctl enable-linger Helen
最终架构
搞完之后,这台零刻 Mini 上跑着两个完全独立的 Hermes Gateway:
┌─────────────────────────────────────────────┐
│ 零刻 Mini (Debian 12) │
│ │
│ ┌─ root (systemd) ────────────────────┐ │
│ │ Hermes Gateway │ │
│ │ ├─ 微信 iLink Bot A │ │
│ │ ├─ Telegram Bot │ │
│ │ ├─ Discord Bot │ │
│ │ └─ SOUL.md → 山哥风格 │ │
│ └─────────────────────────────────────┘ │
│ │
│ ┌─ Helen (systemd --user) ─────────────┐ │
│ │ Hermes Gateway │ │
│ │ ├─ 微信 iLink Bot B │ │
│ │ └─ SOUL.md → 温柔靠谱风格 │ │
│ └─────────────────────────────────────┘ │
│ │
│ 完全隔离:配置、会话、记忆、人格 │
└─────────────────────────────────────────────┘
总结
整个过程大概花了两个多小时,大部分时间在踩坑。Hermes 的 Profile 功能本身设计得很好,配置隔离开箱即用,主要的问题都是 Linux 层面的权限和环境配置。
如果以后还要给其他人配,流程大概是:
- 创建 Linux 用户 +
.bashrc基础配置 loginctl enable-linger开启持久化hermes profile create+ 写 SOUL.mdhermes gateway setup扫码登录- 清理
.env里不需要的平台 token hermes gateway install && hermes gateway start
其实不难,就是踩坑多。写下来省得下次再踩一遍。
工具有了,JARVIS 的第一步算是走完了。接下来就看怎么让它更好用了。