主题
将 Managed Deep Agent 连接到 Slack
从 Slack 消息启动 Managed Deep Agents 运行,并将响应发送到 Slack 对话。
Slack 频道让人们可以通过应用提及、私信以及活动 Slack 线程中的回复来调用托管 deep agent。Managed Deep Agents 会验证 Slack 事件,将每个对话映射到线程,以解析出的调用者身份运行 agent,并将响应发布回 Slack。
Managed Deep Agents 会创建并配置将 Slack 连接到已部署 agent 的资源。向 agent 项目添加频道声明,然后部署。
NOTE
Managed Deep Agents 处于公开 beta 阶段,仅在 US 区域的 LangSmith Cloud 上可用。
项目结构
text
my-agent/
agent.py
channels/
slack.py添加 Slack 频道
一个托管 deep agent 部署支持一个 Slack 频道。
频道声明位于 channels/slack.py。
要在创建项目时包含 Slack,请传入 --channel slack:
bash
uvx --from managed-deepagents mda init my-agent --channel slack要将 Slack 添加到现有项目,请从项目根目录运行频道初始化命令:
bash
uv run mda channels init slackpython
from managed_deepagents import channels
channel = channels.slack()配置 agent 在 Slack 中的外观
编辑频道声明以控制 agent 在 Slack 中的显示方式。
namestring
agent 在 Slack 中的名称。名称必须包含 1–35 个字符,可以包含字母、数字、空格、下划线、短横线和句点。它不能以空格或短横线开头或结尾。
descriptionstring
agent 功能的描述。描述最多可包含 139 个字符。
iconstring
Slack 中显示的 agent 图标路径,相对于 channels/ 目录。图标必须是 512 × 512 像素的 PNG 文件,且不超过 1 MB。如果省略此参数,Managed Deep Agents 将为你生成一个图标。
background_colorstring
agent 图标背后的背景颜色,为六位十六进制颜色,例如 #1d4ed8。
例如,将图标放在频道声明旁边:
text
my-agent/
agent.py
channels/
slack.py
support-agent.pngpython
from managed_deepagents import channels
channel = channels.slack(
name="Support Agent",
description="Answers customer questions about orders and returns",
icon="support-agent.png",
background_color="#1d4ed8",
)配置哪些消息启动运行
trigger_on_all_messagesbool默认 False
是否每条新频道消息都可以启动 agent 运行。当为 False 时,频道消息仅在提及时启动运行;私信仍会启动运行。
allow_bot_triggersbool默认 False
来自其他 Slack 机器人的消息是否可以启动 agent 运行。
部署 agent
部署期间,Managed Deep Agents 会根据频道声明在 Slack 中预配你的 agent。
Deploy your agent
从项目根目录运行部署命令:
bash
uv run mda deployManaged Deep Agents 会部署 agent,并设置其在 Slack 中显示所需的资源。
Authorize Slack if prompted
如果你之前未授权 LangSmith,CLI 会显示一个 HTTPS 授权链接。打开该链接,选择 Slack 工作区,并批准请求的访问权限。
返回终端并按 Enter。CLI 会再次检查授权并继续预配。如果 Slack 工作区需要管理员批准,请先完成该批准再继续。
Use the agent in Slack
首次部署后,你的 agent 会在 Slack 中向你发送一条私信。回复该消息以启动 agent 运行。最终响应会显示在 Slack 对话中。
NOTE
Slack 中的人工介入请求仅支持 approve 和 reject 决策类型。
如果 Slack 已授权,部署将完成而不会出现授权提示。
在 Slack 频道声明中更改 agent 的名称、描述、图标或背景颜色后,请重新部署 agent 以在 Slack 中应用更改。
与 Slack 交换文件
Slack 频道可以双向传输文件。上传的文件会落在 agent 沙箱的 /workspace/attachments/ 下,agent 通过使用 /workspace 下的路径调用 attach_file 将文件发回。声明 Slack 频道和沙箱就是全部设置。
NOTE
Slack 文件传输需要 managed-deepagents>=0.8.0 和沙箱。没有沙箱时,传入的文件不会被保存,attach_file 也不会提供给模型。
Managed Deep Agents 会在运行前将传入消息上的文件以及同一 Slack 线程中之前共享的文件暂存起来。agent 读取附件状态消息以获取路径,然后使用其沙箱工具打开文件。该状态和文件内容会被标记为数据,而不是指令。
附件从来不会自动附加,因此请在 agent 的指令中说明何时应在回复中包含文件:
markdown
When someone asks for a report, write the report to a file under `/workspace`,
then call `attach_file` with that path so the file arrives in Slack.文件始终限定在它们到达的 Slack 线程内,因为每个线程都有自己的沙箱。私信和频道线程永远不会共享附件。在一个线程内,任何人都可以访问其他人上传的文件,因为传输使用的是机器人的 Slack 访问权限,而不是调用者的权限。
查看传输限制
- 文件大小:每个方向 200 MiB。
- 路径:
attach_file仅接受/workspace下的路径。 - 线程历史:扫描范围涵盖线程中的最近消息。当扫描不足时,附件状态会报告较早的文件可能缺失。
- 跳过的文件:存储在 Slack 之外的文件,以及从 Slack 删除的文件。
- Slack 作用域:因缺少
files:read、files:write或历史作用域而被阻止的传输会报告你需要重新连接 Slack。
另请参阅
- 频道概览:了解频道如何将消息服务连接到 agent。
- Agent 自有的中断:从工具发布 Slack 表单,并在提交时恢复运行。
- 沙箱:为 agent 提供文件传输读写所需的文件系统。
- 部署 agent:配置并部署托管 deep agent。
- CLI 参考:查看 Managed Deep Agents 命令和标志。