按频道限定 Archyl 机器人:对的房间,对的项目
当我们在六月把 Archyl 带进 Slack 和 Teams时,机器人在每个频道里都会回答你组织中所有项目的问题。对小团队来说,这是正确的默认值。但对于一个同时有支付团队、贷款团队和平台团队的工作区,这意味着有人在 #payments 里问“什么依赖于账本?”,得到的却是关于贷款平台账本的回答,出现在错误的房间里,而且直到有人据此做出决定之前,没有人会察觉。
从今天起,你可以把频道限定到它应该看到的范围。 管理员把一个 Slack 频道或 Teams 对话限定到一个或多个团队,或一份明确的项目列表。组织中的其他一切对该频道都不可见。没有限定的频道保持组织范围的默认值。
把 #payments 限定到 Payments 团队
假设 Payments 团队拥有三个项目:Checkout、Billing 和 PaymentService。在 Archyl 中打开 组织 → 机器人 → 频道范围,点击 限定频道。三步:
- 频道可见的内容。 选择 Payments 团队。如果频道并不对应某个团队,也可以逐个挑选项目。
- 哪个频道。 选择 Slack 或 Teams,为列表输入一个名称,
#payments。点击 获取命令。 - 在 #payments 中粘贴以下内容。 Archyl 会显示一条命令。把它发到频道里:
@Archyl scope K7Q4M2PX
机器人会在频道中确认它应用的范围,以及解析出的项目:
✅ This channel is now scoped to team "Payments" — Billing, Checkout, PaymentService.
代码一经应用,频道就会立刻出现在 Archyl 的列表中,无需刷新页面。从那时起,#payments 只回答这三个项目的问题,其他一概不答。问它贷款平台的事,它无从作答:那个项目不在它的上下文里,工具也拒绝去获取。
因为范围是一个团队而不是一份项目 ID 列表,所以它跟着团队走。下个季度 Payments 接手第四个项目时,下一次有人提问,频道就已经覆盖它了。绑定是在回答时展开的,而不是在创建时复制的。
为什么是代码而不是按钮
机器人以连接它的管理员的权限作答,而且无法分辨是谁在频道里输入。一条谁都能运行的斜杠命令,会让频道里的任何成员都能扩大或缩小机器人透露的范围。所以限定从 Archyl 开始:代码由组织管理员生成,15 分钟内有效,且只能使用一次。
把它粘贴到频道里,才是告诉 Archyl 你指的是哪个频道,因为机器人同样读不到频道名称。你在第 2 步输入的名称只是列表中的标签。绑定本身指向的是你粘贴命令的那个频道。
在工具层强制执行,而不是在提示词里
被限定的频道确实会得到一条更窄的系统提示词,列明它可以讨论的项目。但那是引导,引导不是边界。边界在更低的一层。
机器人对 Archyl MCP 服务器的每一次调用都携带该频道的项目允许列表,服务器对每次调用都应用它。被要求按 ID 返回某个元素的工具,会查出该元素属于哪个项目,若在范围之外就拒绝。列表类工具以同样的方式过滤结果。在直接模式下,机器人不调用工具而是从上下文包作答,同一份允许列表会收窄这个上下文包。按 ID 索要另一个项目的 container 不会成功,因为拒绝发生在读取任何数据之前。
有两点后果值得了解:
- 组织级的 ADR、文档和 API 契约在被限定的频道里仍然可见。 它们属于组织而不是某个项目,所以项目过滤器不作用于它们。
- 范围是失败即关闭的。 绑定到一个不拥有任何项目的团队的频道,什么都不会回答,并会明确说明,而不是悄悄回退到整个组织。
再次放宽
在 Archyl 的列表中点击频道旁的 清除。下一个问题起,频道就回到组织范围的默认值。
可用范围
Slack 和 Teams 机器人包含在 Business、Scale 和 Custom 计划中,频道限定随之提供。完整的操作指南见文档中的 将频道限定到团队或项目。
如果你的机器人已经在一个共享工作区里,第一个该限定的频道,是答错了代价最高的那个。对大多数团队来说,就是名字里带“payments”的那个。