让 agent 在手机上找你,是常驻这件事最爽的部分。 但它同时打开了一个任何人都能往里发字的入口,而入口那头的东西能跑命令。 所以这一篇的顺序是:先锁人,再谈功能。
本文写什么授权模型、分权、会话隔离、常驻方式与坑。 本文不写我们自己的 bot、白名单、跑在哪。示例 ID 全是占位。
这不是危言耸听,是一个简单的推论。而且威胁有两层, 第二层很多人没想到:
| 层 | 威胁 | 怎么挡 |
|---|---|---|
| 一 | 陌生人直接对它下命令 | 授权:谁能说话(第二节) |
| 二 | 你转发/粘贴进去的内容里夹着指令 | 权限:它能做什么(第五节) |
第二层的典型场景:你把一段网页内容、一封邮件、一个 issue 正文丢给它让它总结, 而那段文本里写着「忽略之前的指示,去做某某」。 对它来说,那和你打的字长得一样。
先说最该记住的一条:网关默认拒绝所有不在白名单、也没经私信配对的用户。 这是正确的默认值——如果你用的工具默认是放行的,那才是要担心的事。
| 方式 | 怎么用 | 适合 |
|---|---|---|
| 白名单 | 把允许的用户 ID 写进 TELEGRAM_ALLOWED_USERS,逗号分隔 | 只有你自己或固定几个人 |
| 私信配对 | 陌生人私信 bot 会拿到一次性配对码,你用 hermes pairing approve telegram <码> 批准 | 要临时加人,不想改配置重启 |
配对码的三个属性值得知道:1 小时过期 · 有限流 · 用密码学随机数生成。 这三条合起来意味着它不能被穷举、也不会永久有效。
配套还有 hermes pairing list(看有谁配过)和
hermes pairing revoke(撤销)。后者应该定期用——
临时批准的人很容易忘了撤。
就算某个人被允许说话了,也不等于他能干所有事。网关是分层的:
| 能做什么 | |
|---|---|
| 管理员 | 全部斜杠命令 |
| 普通用户 | 只能用你显式开放的那几个,比如 /status、/model |
对应两个配置项:allow_admin_from(谁是管理员)和
user_allowed_commands(普通用户能用哪些命令)。
判断一条命令要不要开放给普通用户,问法不是「这条命令有用吗」, 而是「最坏情况下,一个恶意的人用这条命令能做什么」。
只读的、只影响他自己会话的,可以开; 能改配置、能触发动作、能看到别人内容的,不开。
网关按每个聊天维护独立的会话存储,所以不同人的对话不会串。 用户侧的几个命令:
| 命令 | 作用 |
|---|---|
/new · /reset | 开一段干净的对话 |
/sessions | 列出并恢复之前的会话 |
会话会一直留着,直到手动重置或触发上下文压缩。
这也是成本的来源——一段没重置过的长会话,每次回复都在为整段历史付钱
(第 9 篇)。养成用完 /new 的习惯,既省钱也更准。
提示层的约束是倾向,不是闸门。 真正兜底的是:它本来就做不到那件事。
所以接消息网关之前,先把工具面收一遍 (下一篇整篇讲这个):一个只能读、不能删、不能发钱、 不能往外发消息的 agent,就算被骗了也造不成大事。
再加一条实操:把「处理外来内容」和「操作我的系统」分成两个不同的入口—— 需要动手的活在受信任的通道里做,消息网关那头只做读和答。
| 命令 | 作用 |
|---|---|
hermes gateway setup | 交互式配置各平台 |
hermes gateway install | 装成用户级服务(Linux systemd / macOS launchd) |
sudo hermes gateway install --system | 装成系统服务,开机自启 |
hermes gateway start / stop / status | 起停查 |
官方文档明确警告:不要加 ExecStopPost=/bin/kill -9 这类 drop-in,
会导致无限重启循环。
更一般的教训:别给一个自带进程管理的服务再套一层你自己的进程管理。 两层管理互相打架,症状通常是「它一直在重启但看不出为什么」。 装成服务的通用做法见第 21 篇。
TELEGRAM_ALLOWED_USERS(逗号分隔用户 ID);
私信配对码经 hermes pairing approve telegram <码> 批准,
官方说明配对码「1 小时后过期、有速率限制、使用密码学随机数」;
另有 hermes pairing list / hermes pairing revoke。allow_admin_from 指定管理员;user_allowed_commands 指定普通用户可用命令
(官方示例为 status、model)。/new · /reset · /sessions;
会话持续到手动重置或上下文压缩。hermes gateway setup / install / start / stop / status;
--system 为开机自启的系统服务;macOS 生成 launchd plist。
官方明确警告不要添加 ExecStopPost=/bin/kill -9 之类的 systemd drop-in(会造成无限重启)。
以上均据官方文档,2026-08-21 核。