网关模式
网关模式(Gateway mode)允许将 Ante 作为长寿命机器人运行,可从 Slack、Discord 或同时从两者接入访问。每一次对话 —— 频道中的讨论串(thread)或私聊(DM)—— 都会分配到独立的智能体会话,使得多用户和多团队可以并发与 Ante 协作而互不干扰状态。
基础用法
从 Ante v0.2.2 起,ante gateway 会分派给单独安装的 ante-gateway 可执行文件。先从公开仓库根目录安装:
cargo install --path ante-gateway
# 首先启动 Ante 宿主服务
ante serve --sock
# 在另一个终端中启动网关
ante gateway
ante gateway 与直接运行 ante-gateway 使用同一个外部程序。Ante 依次在 ~/.ante/bin、PATH 和 ~/.cargo/bin 中查找它;未安装时会显示安装指引并以状态码 127 退出。
网关通过 Ante SDK 连接到宿主(默认为 ante serve --sock 的套接字,也可通过 --connect 指定),读取 ~/.ante/channels.json,并连接已启用的平台。网关使用 0.2 系列 SDK/协议;请搭配兼容的 Ante 宿主。
也可运行 ante gateway --connect stdio,为每个对话启动 Ante 宿主。stdio 模式按非空的 ANTE 环境变量、--executable PATH、PATH 上的 ante 顺序选择可执行文件。ANTE_HOME 控制 channels.json 与 run/serve.sock 的默认目录;ANTE_SERVE_TOKEN 为 WebSocket 宿主提供 Bearer Token。日志写入 stderr,--output-format 控制 stdout 上的协议事件格式。
配置文件
创建 ~/.ante/channels.json。您可以仅启用 Slack、仅启用 Discord 或两者同时启用。
{
"slack": {
"enabled": true,
"bot_token": "env:SLACK_BOT_TOKEN",
"app_token": "env:SLACK_APP_TOKEN",
"allow_from": "open"
},
"discord": {
"enabled": true,
"bot_token": "env:DISCORD_BOT_TOKEN",
"allow_from": ["123456789012345678"]
}
}
以 env: 开头的值会在启动时从环境变量中读取,避免将敏感 Token 明文保存在文件中。
访问控制
allow_from 字段决定机器人会响应谁的消息:
| 取值 | 允许与机器人对话的受众 |
|---|---|
"open" | 工作区或服务器内的所有成员 |
["U123", "U456"] | 仅限列表中的具体用户 ID |
| (省略) | 拒绝所有访问(安全的默认策略) |
配置 Slack
- 访问 api.slack.com/apps → From scratch 创建应用。
- Settings → Socket Mode:开启 Socket Mode 并创建一个拥有
connections:write权限的 App-Level Token。复制xapp-…Token —— 作为app_token。 - Features → OAuth & Permissions → Bot Token Scopes:添加
chat:write、app_mentions:read、channels:history、im:history、im:write权限。 - Features → Event Subscriptions:开启事件订阅并订阅
message.channels和message.im。 - Features → App Home:启用 Messages Tab 并允许用户直接发送消息。
- Settings → OAuth & Permissions → Install to Workspace。复制生成的
xoxb-…Bot User OAuth Token —— 作为bot_token。 - 在每个需要机器人的频道中运行:
/invite @your-bot-name。
export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_APP_TOKEN="xapp-..."
在 Slack 中使用机器人: 在频道中 @提及 机器人,或直接发送私聊 DM。机器人的回复始终汇总在讨论串(thread)中。
任何时候修改了权限(Scopes)或事件订阅后,必须点击 Reinstall to Workspace 重新安装才能生效。
配置 Discord
- 访问 discord.com/developers/applications → New Application 创建应用。
- Bot:复制 Token —— 作为
bot_token。在 Privileged Gateway Intents 下开启 Message Content Intent(必选)。 - OAuth2 → URL Generator:在 Scopes 中勾选
bot;在 Bot Permissions 中勾选Send Messages、Read Message History、View Channels。打开生成的 URL 将机器人邀请到您的服务器。
export DISCORD_BOT_TOKEN="..."
在 Discord 中使用机器人: 在服务器频道中 @提及 机器人,或发送私聊 DM。机器人会通过引用回复你的消息 —— 直接回复机器人的消息即可继续对话(会话讨论串中的后续回复会自动路由回原对话,无需重复显式 @提及)。
与机器人交互
当机器人加入工作区或服务器且网关正在运行后,您可以像与普通机器人一样与其交谈。部分特定回复具有特殊含义。
您可以随时通过发送以下指令中断机器人:
| 指令 | 效果 |
|---|---|
stop | 取消当前任务(类似于 TUI 中的 Ctrl+C) |
当机器人请求执行工具的权限时,回复以下内容之一:
| 回复 | 效果 |
|---|---|
yes(或 y) | 批准本次工具调用 |
no(或 n) | 拒绝本次工具调用 |
always | 批准并在当前会话的后续调用中始终允许该工具 |
更多关于工具审批流程的说明,请参见授权与审批。
命令行参数参考
ante gateway [--config PATH] [--connect ENDPOINT] [--model MODEL] [--provider PROVIDER] [--output-format FORMAT]
| 参数标识 | 默认值 | 说明 |
|---|---|---|
--config | ~/.ante/channels.json | 渠道配置文件的路径 |
--connect | unix:~/.ante/run/serve.sock | Ante 宿主端点:unix:<path>、ws://<addr>、wss://<addr> 或 stdio。可通过 ante serve --sock 启动宿主 |
--model | — | 请求的模型(未指定时使用宿主设置) |
--provider | — | 请求的提供商(未指定时由宿主解析) |
--output-format | minimal | 网关 stdout 输出格式:minimal、human 或 json |
默认情况下,ante gateway 连接本地宿主套接字 unix:~/.ante/run/serve.sock。若需连接其他端点,请传入 --connect(例如 ante gateway --connect unix:/tmp/ante.sock)。
输出格式
| 格式 | 显示内容 |
|---|---|
minimal | 仅输出智能体回复消息、通知信息与错误 |
human | 彩色格式化输出所有事件(适用于调试) |
json | 逐行输出 JSON Lines 格式的所有事件(适用于通过管道传递给其他工具) |
常见问题排查
Slack 提示:"Sending messages to this app has been turned off" 在 App Home 下启用 Messages Tab 并允许用户发送消息,随后重新点击 Reinstall to Workspace。
Slack 中机器人在频道被 @提及 时无响应
确保机器人已被邀请加入该频道(/invite @bot-name),且 message.channels 已添加在 Event Subscriptions 中。修改事件或权限后请重新安装应用。
Discord 中机器人无响应
确认机器人已开启 Message Content Intent,且在频道中拥有 Send Messages 和 Read Message History 权限。
网关收到消息后未输出任何内容
使用 --output-format human 运行以查看所有事件,并检查 ~/.ante/logs/ 中的详细错误信息。