LZLZL/AI 工具链/常驻 · 消息
免费中 · 实践 三阶 常驻安全

接 Telegram:
先锁人,再谈功能

2026-08-21 · 能给你发消息的人,就能给它发命令

让 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起停查
⚠ 官方点名的一个坑:别加强杀的 systemd 覆盖

官方文档明确警告:不要加 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 指定普通用户可用命令 (官方示例为 statusmodel)。
会话 按每个聊天独立的 session store;用户命令 /new · /reset · /sessions; 会话持续到手动重置或上下文压缩。
常驻 hermes gateway setup / install / start / stop / status--system 为开机自启的系统服务;macOS 生成 launchd plist。 官方明确警告不要添加 ExecStopPost=/bin/kill -9 之类的 systemd drop-in(会造成无限重启)。 以上均据官方文档,2026-08-21 核。
本文没写的 从 BotFather 申请 bot token 的具体步骤——那是 Telegram 侧的流程, 以其官方说明为准,本文不转述会过期的界面步骤。
本文不提供的 我们自己的 bot、白名单、管理员 ID 与部署位置。示例 ID 均为占位。

相关接着读什么

三阶 · 常驻
MCP 与工具面:给 agent 装手,以及别装什么
三阶 · 常驻
Hermes Agent:OpenClaw 的下一站
四阶 · 上云
装成服务:让它崩了自己起来
二阶 · 接入层
token 成本账:钱到底烧在哪
本文是教育与工程记录,不是任何第三方产品的推荐或测评。命令、配置键、价格与条款均以各家官方文档为准, 本文标注考证日期,随时可能变更 —— 照抄前请自己核一遍。 自建与自托管的安全责任在部署者本人:密钥、账号与数据的后果由你承担。