跳到主要内容

网关模式

网关模式(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​

  1. 访问 api.slack.com/apps → From scratch 创建应用。
  2. Settings → Socket Mode:开启 Socket Mode 并创建一个拥有 connections:write 权限的 App-Level Token。复制 xapp-… Token —— 作为 app_token。
  3. Features → OAuth & Permissions → Bot Token Scopes:添加 chat:write、app_mentions:read、channels:history、im:history、im:write 权限。
  4. Features → Event Subscriptions:开启事件订阅并订阅 message.channels 和 message.im。
  5. Features → App Home:启用 Messages Tab 并允许用户直接发送消息。
  6. Settings → OAuth & Permissions → Install to Workspace。复制生成的 xoxb-… Bot User OAuth Token —— 作为 bot_token。
  7. 在每个需要机器人的频道中运行:/invite @your-bot-name。
export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_APP_TOKEN="xapp-..."

在 Slack 中使用机器人: 在频道中 @提及 机器人,或直接发送私聊 DM。机器人的回复始终汇总在讨论串(thread)中。

备注

任何时候修改了权限(Scopes)或事件订阅后,必须点击 Reinstall to Workspace 重新安装才能生效。

配置 Discord​

  1. 访问 discord.com/developers/applications → New Application 创建应用。
  2. Bot:复制 Token —— 作为 bot_token。在 Privileged Gateway Intents 下开启 Message Content Intent(必选)。
  3. 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渠道配置文件的路径
--connectunix:~/.ante/run/serve.sockAnte 宿主端点:unix:<path>、ws://<addr>、wss://<addr> 或 stdio。可通过 ante serve --sock 启动宿主
--model—请求的模型(未指定时使用宿主设置)
--provider—请求的提供商(未指定时由宿主解析)
--output-formatminimal网关 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/ 中的详细错误信息。