)
如何把AI同事请进SlackOpenDots托管渠道接入完整指南含白名单安全设置【免费下载链接】OpenDotsYour always-on AI coworkers that move between text, calls, and Slack.项目地址: https://gitcode.com/gh_mirrors/op/OpenDotsOpenDots是一个开源的「常驻 AI 同事」模板你可以克隆它、定义自己的 DotAI 同事、为每个同事配置角色和权限并让它们在你与它们之间自由切换——文字聊天、语音通话以及Slack 渠道。本指南将带你用最安全的托管渠道managed channel方式把 AI 同事请进 Slack不写一行 Webhook 服务器代码同时通过workspace/user 白名单严格控制谁能唤醒这位 AI 同事。为什么用 OpenDots 接入 Slack大多数 AI 机器人接入 Slack要自己写 Webhook 服务、管理 Socket Mode 连接、处理签名校验。OpenDots 走的是另一条更省心的路托管渠道模式基于 CopilotKit 的 Channels SDKcopilotkit/channels由 Intelligence 托管 Slack 适配与消息投递应用端只声明「渠道 专家 Agent」参考实现见 src/server/platform.ts零自建消息服务器不需要单独的 Slack webhook 服务或 Socket Mode 连接显式白名单安全Slack workspace ID 用户 ID 双重白名单身份在服务端严格校验详见 src/server/slack-channel.ts完全自托管MIT 协议数据存本地 SQLite凭据全部留在服务端先认识一下你的 AI 同事每个 DotAI 同事都有自己的名字、角色指令和权限。它不只是聊天——每个 Dot 还可以拥有自己的「电脑」独立浏览器、持久化文件、终端在聊天里实时展示工作过程 正是因为它能在 Slack 线程里继续干「重活」把 AI 同事接入团队日常最常用的 Slack价值才真正体现出来。前提准备完成基础四步Slack 渠道依赖会话服务所以要先让 OpenDots 跑起来使用Node.js 24 npm克隆仓库并安装git clone https://gitcode.com/gh_mirrors/op/OpenDots cd OpenDots npm ci cp .env.example .env npm run dev打开 http://127.0.0.1:5173 确认应用可运行在.env中填入会话与模型凭据变量说明见 docs/SETUP.md变量作用INTELLIGENCE_API_KEY会话持久化项目凭据Slack 渠道必需OPENAI_API_KEY/OPENAI_MODEL模型凭据与模型标识OWNER_ID本部署的对话身份保持稳定至少创建一个 DotAI 同事后面要把它绑定到 Slack 渠道一键创建 Slack 托管渠道CLI选择与应用相同的 Intelligence 项目然后创建命名唯一的托管渠道完整步骤见 docs/SETUP.md Slack 小节npx --yes copilotkitlatest project select npx --yes copilotkitlatest channels add --name opendots --display-name OpenDots --adapter slack --json接着按 CLI 返回的nextAction操作即可用生成的 manifest 在 Slack 控制台创建应用通过托管设置流程填入 Slack 凭据bot token、signing secret运行 CLI 给出的resumeCommand完成激活⚠️ 三个注意点保持 Socket Mode 关闭托管渠道不需要它返回blocked表示还差 Slack 控制台步骤failed必须先解决再继续多套部署请用不同的渠道名避免互相争抢投递白名单安全设置4 个环境变量打开应用服务端的.env变量解析见 src/server/index.ts与模型凭据放在一起配置SLACK_CHANNEL_NAMEopendots SLACK_TEAM_IDT_REPLACE_WITH_WORKSPACE_ID SLACK_USER_IDSU_REPLACE_WITH_YOUR_USER_ID SLACK_DOT_IDREPLACE_WITH_DOT_ID变量说明SLACK_CHANNEL_NAME必须与托管渠道声明名完全一致不是#general这类 Slack 会话名SLACK_TEAM_IDSlack workspace ID限制「哪个团队」可用SLACK_USER_IDS逗号分隔的 Slack 用户 ID限制「哪些人」可用SLACK_DOT_ID指定响应 Slack 的 Dot省略时默认使用初始 DotID 可在/api/workspace响应中查到改完环境变量后重启 OpenDots并在Settings setup页面确认渠道状态变为激活状态逻辑见 src/server/platform-config.ts。渠道激活完成后才能开始发消息测试。白名单是怎么生效的OpenDots 在 slack-channel.ts 中做严格身份校验一条消息要触发 AI 同事必须同时满足✅ 来自slack平台且 workspace 匹配SLACK_TEAM_ID✅ 发言者必须是human机器人、应用、系统消息一律忽略✅ 用户 ID 在SLACK_USER_IDS白名单内✅ 消息操作类型是created——编辑消息补加 不生效请发新消息✅ 是首次 机器人或该线程已被订阅线程内后续消息才会继续触发这与 SECURITY.md 的原则一致显式映射 Slack 身份绝不把显示名或客户端自报的 ID 当作身份证明。在 Slack 里唤醒 AI 同事并验证在机器人可访问的频道中 提及该 bot它会在同一线程回复在该线程内继续发消息对话保持连续同一专家 Agent用白名单外的用户测试应无法触发在 OpenDots 里暂停Pause助理白名单用户收到「已暂停」提示而非执行结果实现见 slack-channel.ts 完整验证清单含检查连接失败状态见 docs/SETUP.md 的Verify your deployment小节。安全细节别忽略的 3 件事错误信息不泄露凭据渠道失败时只上报安全化的错误名如Error (HTTP 401)提供商原始报文不会进入日志或 Slack 回复防止凭据泄漏见 safeFailure单所有者映射模板把白名单内的 Slack 用户统一映射到同一个 OpenDots owner回复对该 Slack 会话的所有成员可见——所以请提前收好该 Dot 的Space 访问权限和工具权限这不是多用户身份模型并发串行化渠道以concurrency: serial运行同一线程的请求排队处理不会互相踩踏见 createSlackChannel这些行为都有对应测试覆盖tests/slack-channel.test.ts 验证了白名单拦截、线程订阅语义与错误隔离tests/slack-channel-wiring.test.ts 验证渠道注册方式。常见坑位清单现象原因与解决改完.env没反应Slack 配置只在启动时读取必须重启OpenDots渠道一直setup_requiredSLACK_CHANNEL_NAME与SLACK_TEAM_ID必须与托管声明一致且SLACK_USER_IDS非空编辑旧消息补 无效设计如此编辑/删除不触发请发送新消息多个部署互抢消息每套部署使用唯一的渠道名SLACK_DOT_ID报错该 ID 必须指向已存在的 Dot否则服务启动会失败✅ 完成以上步骤你就把一位受白名单约束、带自己电脑的 AI 同事正式请进了 Slack。后续还想让它拥有持久化「电脑」浏览器 文件 终端可继续参考 docs/COMPUTERS.md。【免费下载链接】OpenDotsYour always-on AI coworkers that move between text, calls, and Slack.项目地址: https://gitcode.com/gh_mirrors/op/OpenDots创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考