如何用手机远程操控AI Agent:Atomic Agent接入Telegram/Discord机器人完整配置指南
【免费下载链接】atomic-agentAtomic Agent is a local-first AI agent. Runs open-weight models on your own machine via llama.cpp.项目地址: https://gitcode.com/gh_mirrors/at/atomic-agent
Atomic Agent 是一个本地优先(local-first)的开源 AI Agent,通过 llama.cpp 在你自己的机器上运行开源权重模型,可以浏览网页、编辑文件、执行已批准的命令并跨会话记忆上下文。它的 Telegram / Discord 频道功能,让你直接用手机聊天窗口远程操控这个 Agent——危险操作会推送到手机上的审批按钮,点一下"批准"即可执行。本文带你从零完成配置。
为什么要把 AI Agent 接到手机上?📱
大多数 Agent 只能守在电脑终端里盯着。但你的 Agent 可能一跑就是几十分钟——等它跑到一半需要"批准执行这条命令"时,你人不一定在电脑旁。
Atomic Agent 的频道(Channels)设计解决了这个问题:
- 会话隔离:每个 Telegram 聊天、论坛话题、Discord 频道和线程都是独立会话,互不串扰
- 审批按钮:敏感操作(如运行 shell 命令)会以带按钮的消息推到"发起那一轮"的聊天里,只有配对的所有者能点
- 文件双向传输:手机上发文件给机器人,Agent 就能拿到路径;Agent 的回复也能附带文件
- 定时任务回报:定时任务跑完可以把结果直接推送到你的私聊
一键安装步骤
先安装 Atomic Agent 本体(macOS / Linux):
curl -fsSL https://atomicagent.io/install | shWindows (PowerShell):
irm https://atomicagent.io/install.ps1 | iex安装完成后运行atomic-agent(或别名atag)进入 TUI。如果你打算从源码了解实现,可克隆仓库:https://gitcode.com/gh_mirrors/at/atomic-agent
💡 两个机器人通道都可以在 TUI 的Integrations(集成)标签页里图形化配置,下面讲的手改配置文件方式效果相同。
Telegram 机器人完整配置
第一步:创建 Bot 并拿到 Token
在 Telegram 中找 @BotFather,执行/newbot按提示取名,拿到形如123456789:AA-your-bot-token的 Token。
第二步:写入配置
Atomic Agent 把开关、所有者放在<stateDir>/config.json,把Token 这种机密单独放在<stateDir>/.env,两者分离是有意为之(Token 永远不会进 config.json):
// <stateDir>/config.json { "telegram": { "enabled": true, "ownerUserId": null } }# <stateDir>/.env TELEGRAM_BOT_TOKEN=123456789:AA-your-bot-token对应实现见 telegram-settings.ts,Token 键名TELEGRAM_BOT_TOKEN定义在 第19行。
第三步:配对(Pairing)确定主人
Telegram 机器人只响应它的主人。配对模式很简单:在 TUI 触发配对 → 60 秒内,第一个给机器人发私聊消息的用户即成为主人(写入ownerUserId)。配对状态机实现在 pairing-mode.ts,默认窗口 60 秒。
⚠️群里使用:需要先在 @BotFather 中关闭机器人的 privacy mode,否则普通 @提及 不会送达机器人。
进度气泡
任务运行期间,机器人会维持一个"静默进度气泡",只显示步骤标签(如"读取文件"),绝不泄露工具输出。不喜欢就关掉:"telegram": { "progressIndicator": false }。
Discord 机器人配置(免配对版)
Discord 通道没有配对流程,直接把你的用户 ID 填进配置即可(discord-settings.ts):
// <stateDir>/config.json { "discord": { "enabled": true, "ownerUserIds": ["123456789012345678"] } }# <stateDir>/.env DISCORD_BOT_TOKEN=your-discord-bot-token两个细节值得注意:
- 空列表 = 拒绝所有人:
ownerUserIds不填就等于机器人不响应任何消息 - 不需要特权 Intents:Discord 无需特殊权限即可投递私聊和 @提及,省掉一步折腾
审批按钮:手机上的一键批准/拒绝 🔐
这是整套手机遥控体验的灵魂。当 Agent 要执行需要审批的操作(典型场景:运行一条 shell 命令)时:
- 请求不会落在电脑端的 TUI 对话框上,而是发到发起这一轮的那个聊天
- 消息带两个按钮(Discord 端"拒绝"按钮是醒目的红色 danger 样式)
- 只有配对的所有者能点击,其他账号点击会被静默忽略并收到提示
- Telegram 端每轮审批默认8 分钟自动拒绝(approval-bridge.ts 第13行),防止任务卡死;Discord 端实现在 discord-approval-bridge.ts
安全性设计同样是"失败即关闭":发送审批消息失败时立即按拒绝处理,绝不无限挂起;重复点击同一个按钮也不会二次生效。
手机上常用的聊天命令
两个机器人都理解这些命令,随时发:
| 命令 | 作用 |
|---|---|
/status | 查看当前状态 |
/sessions | 列出所有会话 |
/switch <id> | 切换到指定会话 |
/new | 开一个新会话 |
/model [provider] [model-id] | 切换模型 |
/cancel | 取消当前正在跑的这一轮 |
文件收发与定时任务回报 📎
发文件给 Agent:私聊里发图片/文档,文件会存到<stateDir>/inbox/telegram/(按天分文件夹),Agent 拿到路径和你附的文字说明。Telegram 机器人单文件上限 20 MB;Discord 入站文件上限 50 MB,存到<stateDir>/inbox/discord/。
Agent 回文件:图片内联显示,其他格式作为文档附件,受 Telegram 50 MB 机器人上限约束。
定时任务主动汇报:给定时任务加上通知参数,每次运行的结果会直接推送到你的私聊:
atomic-agent task create --cron "0 9 * * *" --message "morning digest" --notify telegram让机器人常驻后台:serve 命令 🚀
机器人生存在 Agent 运行时里,不依赖 TUI。用serve启动时,所有已启用的 Telegram / Discord 机器人(以及 Swarm 机器人)会一起在后台应答——即使终端 UI 完全关闭:
atomic-agent serve --host 127.0.0.1 --port 8787 --cwd /path/to/work两个运维要点:
- 锁文件防重入:每个机器人有独立的锁文件,第二个进程尝试启动同一个机器人会直接失败(
already running in another atomic-agent (pid N)),别从 TUI 和 serve 两边同时启动 - 常驻守护:默认
serve不脱离父进程;要后台长期运行请加--no-parent-exit(或环境变量ATOMIC_AGENT_SERVE_NO_PARENT_EXIT=1)。入口实现在 serve-command.ts
进阶:Swarm 多机器人
想让"值班机器人"和"开发机器人"各管一摊?在 TUI 的 Swarm 标签页(/swarm)可以增开任意多个 Telegram / Discord 机器人,各自独立 Token、主人、锁文件和会话:
"swarm": { "units": [ { "id": "ops", "kind": "telegram", "label": "Ops", "role": "on-call triage", "enabled": true, "tokenEnv": "TELEGRAM_BOT_TOKEN_OPS", "ownerUserId": null } ] }Token 键名按<KIND>_BOT_TOKEN_<ID>规则命名,互不覆盖。相关源码集中在 src/channels/swarm/。
常见坑位速查
| 症状 | 原因与解法 |
|---|---|
| Telegram 群里 @机器人没反应 | 未关闭 privacy mode,去 @BotFather 处理 |
| Discord 机器人完全不理人 | ownerUserIds为空列表,填入自己的用户 ID |
| 审批消息 8 分钟后自动拒绝 | 这是 Telegram 端的超时保护(fail-closed 设计),不是故障 |
启动报already running in another atomic-agent (pid N) | 同一机器人已被别的进程占用,先在旧进程里停掉 |
| Token 改了不生效 | Token 必须在<stateDir>/.env,写进 config.json 无效 |
小结
Atomic Agent 通过 Telegram / Discord 频道,把"本地 AI Agent"变成了"手机里的 AI 助理":私聊即会话、按钮即审批、文件双向流通、定时任务自动回报。全部状态留在你自己的磁盘上,Token 与配置分离存放,审批按钮只对配对所有者生效——本地优先,遥控安全。装上它,Agent 干活,你只需要在手机上点一下"批准"。✅
【免费下载链接】atomic-agentAtomic Agent is a local-first AI agent. Runs open-weight models on your own machine via llama.cpp.项目地址: https://gitcode.com/gh_mirrors/at/atomic-agent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考