)
把数据分析Agent接入团队SlackDash对接Slack完整指南附Manifest清单与故障排查【免费下载链接】dashA self-learning data agent built with systems engineering principles. It grounds answers in 6 layers of context and improves with every query.项目地址: https://gitcode.com/gh_mirrors/dash62/dashDash 是一个自学习数据分析 Agent基于系统工程原则构建用 6 层上下文为答案接地并且每处理一次查询都会变得更聪明。这篇完整指南将带你把它接入团队 SlackDM 直聊、提及、线程追问都能直接用还能让 Dash 主动向频道推送定时任务结果。跟着做10 分钟内即可完成对接。1. Dash 在 Slack 里的两种角色 接入后Dash 与团队的交互分为接收和发送两个方向方向能力触发方式接收消息用户与 Dash 对话DM 直聊、频道 提及、线程回复发送消息Dash 主动发言定时任务结果推送、用户请求一个关键设计每个 Slack 线程对应一个独立的会话 IDsession ID。也就是说同一个线程内的每条追问都自动携带完整对话上下文无需反复 Dash。2. 前置条件与运行环境准备开始前请确认两件事Dash 已在本地运行docker compose up -d --build或已部署到公开地址如 Railway 生产域名拥有一个可安装应用install apps的 Slack workspace本地启动 Dash 的完整流程见 README.md 的 Quick Start 章节环境配置模板在 example.envgit clone https://gitcode.com/gh_mirrors/dash62/dash cd dash cp example.env .env # 填入 OPENAI_API_KEY docker compose up -d --build3. 第一步为 Dash 准备一个公网 URLSlack 需要通过公网地址把事件推送给 Dash这是整个对接中最容易被忽略的一步生产环境直接使用你的部署域名例如 Railway 的https://dash-production-xxxx.up.railway.app本地开发使用 ngrok 内网穿透# Docker Compose 方式 ngrok http 8000 # 裸 AgentOS 方式python -m app.main ngrok http 7777复制生成的https://地址如https://abc123.ngrok-free.app它就是后文的base URL。4. 第二步用 Manifest 一键创建 Slack 应用 ⚡传统方式要在 Slack 后台逐项勾选权限Dash 直接提供了 Manifest 清单粘贴即得打开api.slack.com/apps点击Create New App → From a manifest选择你的 workspace切换到JSON视图粘贴下方 Manifest把YOUR_URL_HERE替换为你的 base URL点击Create{ display_information: { name: Dash, description: Self-learning data agent that delivers insights, not just SQL results, background_color: #1a1a2e }, features: { app_home: { home_tab_enabled: false, messages_tab_enabled: true, messages_tab_read_only_enabled: false }, bot_user: { display_name: Dash, always_online: true } }, oauth_config: { scopes: { bot: [ app_mentions:read, assistant:write, channels:history, channels:read, chat:write, chat:write.customize, chat:write.public, files:read, files:write, groups:history, im:history, im:read, im:write, search:read.public, search:read.files, search:read.users, users:read, users:read.email ] } }, settings: { event_subscriptions: { request_url: YOUR_URL_HERE/slack/events, bot_events: [ app_mention, message.channels, message.groups, message.im ] }, org_deploy_enabled: false, socket_mode_enabled: false, token_rotation_enabled: false } } 注意settings.event_subscriptions.request_url必须以/slack/events结尾这是 Dash 侧监听事件的路由。5. 第三步安装应用并获取 Bot Token在侧边栏进入Install App点击Install to Workspace授权所需权限后复制Bot User OAuth Tokenxoxb-...开头进入Basic Information → App Credentials复制Signing Secret这两个值就是 Dash 需要的全部凭据SLACK_TOKENxoxb-your-bot-token SLACK_SIGNING_SECRETyour-signing-secret本地开发把两个变量写入.env然后重建容器docker compose up -d --buildRailway 生产环境把变量写入.env.production再同步并重新部署./scripts/railway_env.sh ./scripts/railway_redeploy.sh⚠️ 生产部署RUNTIME_ENVprd默认启用 RBAC 鉴权需先在 os.agno.com 生成JWT_VERIFICATION_KEY并加入.env.production否则所有请求会被拒绝。详见 README.md 的 Security 章节。6. 第四步验证事件订阅最常见的静默失败Slack 在创建应用时会向你的 Request URL 发一个challenge验证请求。如果那一刻 Dash 没有运行验证会静默失败之后所有事件都不会送达——这是对接失败的第一大原因。打开 Dash 应用设置 →Event Subscriptions若 Request URL 显示 Your URL didnt respond点击Retry确认显示Verified绿色对勾点击Save Changes7. 验证测试清单3 种玩法全过一遍 ✅测试项操作预期效果DM 直聊给 Dash bot 发一条私信Dash 正常回复频道 提及在频道输入Dash whats our MRR?Dash 在频道中回答线程追问在 Dash 的回复线程内直接追问无需再 Dash 带着上下文继续对话三个都通过说明接收与上下文链路已完全打通。8. 故障排查速查表现象原因解决方法Slack 里 Dash 无任何反应Event Subscriptions 未验证成功到 Event Subscriptions 页点Retry确认 Verified 后 Save Changes验证一直失败创建应用时 Dash 未运行 / ngrok 隧道已断开先启动 Dash 和 ngrok再点 Retry消息能收到但 Dash 不回复环境变量未生效确认SLACK_TOKEN、SLACK_SIGNING_SECRET已写入.env并执行docker compose up -d --build改了 Manifest 权限后不生效权限未重新安装到Install App点击Reinstall to Workspace本地换机器后失效ngrok 临时域名已变重新 ngrok并更新 Manifest 中的request_url后重新验证想只发不收如仅推定时报告接口与工具是两个独立开关只设SLACK_TOKEN即可启用发送类工具两者都设才开启接收9. 进阶Slack Interface 与 SlackTools 的区别 这是新手最容易混淆的一点Dash 源码里其实分成了两块模块位置作用依赖Slack Interfaceapp/main.py接收Slack 事件DM、提及、频道消息SLACK_TOKENSLACK_SIGNING_SECRETSlackToolsdash/team.py让 Team Leader发送消息、搜消息、查用户仅需SLACK_TOKEN在 app/main.py 中Slack Interface 是条件注册的只有两个环境变量都配置了Dash 才会监听 Slack 事件if SLACK_TOKEN and SLACK_SIGNING_SECRET: interfaces.append(Slack(teamdash, streamingTrue, ...))而 dash/team.py 中只要设置了SLACK_TOKENLeader 就会获得 7 个发送类工具send_message、list_channels、send_message_thread、get_channel_info、get_thread、get_user_info、search_messages。事件处理机制由 Dash 依赖的 Agno Slack interface 承担事件校验每个入站事件都会用 signing secret 验证签名杜绝伪造请求消息路由提及、DM、频道与群组消息统一路由给 Dash Team Leader线程会话每个 Slack 线程的时间戳就是会话 ID线程内回复自动复用上下文流式输出回答实时流式推送到 Slack而不是憋一大段用户身份识别借助users:read权限Dash 知道是谁在问另外dash/instructions.py 还内置了未配置时的兜底话术——如果有人问 Dash 发 Slack 而环境未配好它会明确提示Slack isnt set up yet而不是乱调用工具。10. 权限清单对照表Bot Scopes 参考如果需要裁剪或调整权限以下是 Manifest 中每个 scope 的用途Scope用途app_mentions:read响应 提及assistant:writeSlack AI assistant 能力channels:history/channels:read读取频道历史 / 发现公共频道chat:write系列发消息含自定义格式、免加群发公共频道files:read/files:write读取频道文件 / 上传报告与导出groups:history读取私有频道历史im:history/im:read/im:write读取 DM 历史 / 查看 DM / 发送 DMsearch:read.*搜索公共消息、文件、用户users:read/users:read.email查看用户资料与邮箱写在最后至此Dash 已经从终端里跑出来的数据 Agent变成了团队 Slack 里随叫随到的数据伙伴问 MRR、查流失、看趋势一条 提及即可定时任务的结果还会主动推送到频道。核心路径回顾官方 Slack 对接文档docs/SLACK_CONNECT.md环境配置模板example.env项目架构与部署说明README.md 小贴士Slack 只是 Dash 的入口之一REST API 和 AgentOS 网页端同样可用——同一套 Agent 定义多个使用界面这正是它接口工程层的设计思路。【免费下载链接】dashA self-learning data agent built with systems engineering principles. It grounds answers in 6 layers of context and improves with every query.项目地址: https://gitcode.com/gh_mirrors/dash62/dash创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考