共享 Slack 机器人路由
使用同一个共享的 Slack 身份,同时让每个频道分发给拥有各自模型、指令、工作区和触发条件的 Agent。
共享 Slack 机器人让一个 Slack 应用可以服务多个 AgentConnect Agent。人们邀请和提及的是同一个机器人身份,而 AgentConnect 会把每个频道的消息发送给配置为该频道默认分发的 Agent。
当不同频道需要不同的模型、仓库、工具或行为,而你又不想为每个 Agent 单独安装一个 Slack 应用时,这种方式很有用。
这是多 Agent 工作模式中的按上下文路由:一条入站消息只选择一个 Agent,而不是广播给所有 Agent。
| Slack 对话 | 默认分发 | 触发条件 | 示例角色 |
|---|---|---|---|
#engineering | engineering-agent | 所有消息 | 实现与仓库工作 |
#security | security-agent | @ 提及 | 威胁分析与敏感评审 |
#support | support-agent | 所有消息 | 产品问题与 Issue 分诊 |
开始之前
你需要:
- 两个或更多在线的 Agent;
- 在 Slack 工作区中创建或安装 Slack 应用的权限。
在 AgentConnect Cloud 上,由 Relay(中继)支撑的 Slack 投递已经可用。共享机器人使用 HTTP (Events API);Socket 模式的机器人归 Daemon 所有,无法在多个 Agent 之间共享。
AgentConnect OSS 的运维人员应在创建应用之前先配置公开的 Relay URL。
1. 创建按频道划分的 Agent
为你需要的每种行为创建一个 Agent。在 Agent 页面上配置其模型、指令、工作区、工具和权限。
把差异体现在 Agent 本身。避免用一个根据频道名称分支的大提示词;共享机器人的频道路由应当选择已经专门化的 Agent。
例如:
engineering-agent使用编码模型,并拥有主仓库的写入权限;security-agent使用推理能力更强的模型,只读访问,并配以聚焦安全的提示词;以及support-agent使用快速模型,并配备产品文档工具。
2. 让 Slack 机器人可共享
AgentConnect Cloud
从内置应用开始:
- 在内置的
agentconnectAgent 上,选择集成 → 添加集成 → Slack → 添加到 Slack,并批准工作区安装。如果已经连接,跳过这一步。 - 打开集成 → 消息应用 → Slack。
- 为内置的 AgentConnect 机器人开启可共享。
Cloud 应用已经使用 HTTP 投递,因此不需要配置回调 URL、签名密钥或传输方式。
自定义应用或自托管部署
在第一个 Agent 上,打开集成 → 添加集成 → Slack:
- 使用配置令牌或 manifest 流程创建一个 Slack 应用。
- 把投递方式设为 HTTP (Events API)。
- 启用共享机器人——允许多个 Agent 使用此机器人。
- 完成 Slack 安装并把它连接到该 Agent。
使用配置令牌流程时,AgentConnect 会自动获取签名密钥。使用 manifest 流程时,请粘贴 Slack 应用设置中显示的机器人令牌和签名密钥。
把该应用邀请到它应当服务的每个频道:
/invite @your-botSlack 上报机器人的成员身份后,这些频道会出现在 AgentConnect 中。
3. 把同一个应用连接到其他 Agent
对其余每个 Agent:
- 打开集成 → 添加集成 → Slack。
- 选择使用已有机器人。
- 选择你创建的共享机器人。
- 把它连接到该 Agent。
不要再创建另一个 Slack 应用。现在每个已连接的 Agent 都使用同一个 Slack 机器人身份和凭证,同时各自运行在自己的 Daemon 位置上。
4. 分配每个频道
打开集成 → 消息应用 → Slack并展开共享机器人。为每个频道选择其默认分发 Agent。如果想按对话挑选 Agent,选择或按决策选择,用一个决策来路由。
然后在任意一个已连接 Agent 的 Slack 集成中设置频道触发条件。触发条件属于这个共享机器人和频道,因此 AgentConnect 会把同样的有效设置复制到每个成员 Agent 的行上:
- @ 提及——仅在机器人被提及时运行;在 Agent 已加入的线程(thread)中,未提及的后续消息会继续交给它。
- 所有消息——对该频道中的每条消息都运行默认 Agent。
- 关闭——屏蔽该共享机器人在此频道中的所有入站路由,包括提及、已有线程以及回退到同级或默认 Agent 的情况。受限 Agent 也会以关闭状态开始,直到编辑者启用该对话。
每个活跃的共享机器人频道都恰好有一个默认分发 Agent。在控制台中更改所有者不会影响该频道的触发条件。
路由行为
- 频道的默认分发和触发条件决定新消息交给哪个 Agent。
- 线程一旦分配给某个 Agent,未提及的后续消息就留在该 Agent。
- 回复使用同一个 Slack 应用身份。启用回复页脚后,页脚会标明实际的 AgentConnect Agent、Runtime 和模型。
- Agent 永远不会重新触发自己:AgentConnect 会在每个 Agent 自己的消息即将回流的位置将其丢弃。
频道中一条未指名的新消息只会选择一个 Agent,即该频道的默认分发。共享机器人是在一个身份背后为多个按频道划分的 Agent 做路由;它不是让每个 Agent 都回答的广播。
如果有人刻意把另一个共享机器人的 Agent 带入同一线程,两个 Agent 都会保留各自的会话和配置。如果这些 Agent 还需要直接相互委派,请使用 Agent 可见范围。
故障排查
| 症状 | 检查 |
|---|---|
| 可共享不可用 | 使用 HTTP 投递并有在线的 Relay;Cloud 已预先配置好 |
| 缺少某个频道 | 邀请或重新邀请机器人;等待成员身份同步 |
| 回答的 Agent 不对 | 检查默认分发和频道触发条件 |
| 后续消息仍由之前的 Agent 处理 | 开启新线程或切换会话 Agent |