CopilotKit/OpenTag

OpenTag: The Channels SDK starter application, a self-hosted AI on-call triage bot for Slack and Microsoft Teams, built with AG-UI and LangGraph. Fork it and ship your own.

OpenTag – 面向 Slack 和 Teams 的自托管 AI 知识工作助手

是什么 – OpenTag 是一个开箱即用的开源「知识工作代理」。它通过 CopilotKit 的 Channels SDK 将基于 LangGraph 的 Python 代理(由大语言模型驱动)连接到 Slack 和 Microsoft Teams。该仓库包含完整的 Node + Python 堆栈、几个可在 Slack/Teams 内部渲染的 UI 组件,以及适用于 Railway 或 AWS 的部署脚本。

核心组件

组件 作用
agent/ (Python) 使用 LangGraph 构建的深度代理,可与 OpenAI 通信、执行网络研究,并调用可选工具(GitHub、Linear、Notion 等)
app/ (Node/TS) CopilotKit 运行时,托管一个管理型 Channel,将 AG-UI 协议转换为 Slack/Teams 格式,并渲染图表、表格和审批卡片
Channels SDK 抽象化 Slack/Teams 适配器的库,处理消息传递、状态管理和重连
部署配置 Railway(.railway/railway.ts)和 AWS ECS-Fargate 设置,以及 Docker 镜像 opentag-agent 和 opentag-runtime

工作原理

  1. 创建 Channel – 运行 CopilotKit CLI(channels setup 或 channels add)注册一个由 CopilotKit Intelligence 管理的 Channel。这将创建一个指向 CopilotKit 托管请求 URL 的 Slack 应用清单。
  2. 启动运行时 – 执行 pnpm dev 启动 Node 运行时和 Python LangGraph 代理。运行时会打开一个出站 WebSocket 连接到 CopilotKit Intelligence;Slack 消息将通过此连接转发。
  3. 用户交互 – 在 Slack/Teams 中,用户提及 @OpenTag 或使用斜杠命令。运行时通过 AG-UI 协议将消息转发给 Python 代理。
  4. 代理响应 – 代理可能:
    • 生成纯文本回答,
    • 从上传的 CSV 生成原生 Slack 图表,
    • 创建 Linear 问题或 Notion 页面(附带确认卡片),
    • 并行执行网络研究并返回带引用来源的表格。
  5. 渲染 – Node 端将结果格式化为 Slack 块或 Teams 卡片,显示图表、表格或交互式审批按钮。

核心功能

  • 原生 Slack UI – 图表、表格和交互式卡片可直接在对话中显示。
  • 写入确认 – 修改外部工具(Linear、Notion)的操作会暂停,等待用户确认按钮后才继续。
  • 工具集成 – 可选连接 GitHub、PostHog、Linear、Notion 和 Composio 工具包。
  • 自托管 – 您运行 Python 代理和 Node 运行时;CopilotKit 服务器上除管理 Channel 的基础架构外,不存储任何代码。
  • 可部署 – 一键部署至 Railway,或使用 AWS Fargate 配方;Docker 镜像已发布至 GitHub Container Registry。

快速上手

  1. 安装 Node 22+、pnpm、Python 3.12 和 uv。
  2. 运行 pnpm install。
  3. 使用 CopilotKit CLI 创建管理 Channel(或使用您自己的 Channels SDK 运行器)。
  4. 将 .env.example 复制为 .env,并填写您的 OpenAI 密钥、CopilotKit API 密钥和 Slack 凭据。
  5. 执行 pnpm dev 启动两个服务;在 Slack 中使用 /invite @OpenTag 邀请机器人。

自定义 – 多数方面仅需修改单个文件或目录:

  • 人物设定与系统提示 → agent/prompts/system.py
  • 代理逻辑 → agent/agent.py
  • 工具 → agent/tools.py
  • UI 组件 → app/components/
  • Channel 触发器 → app/channel.tsx
  • 部署拓扑 → .railway/railway.ts

适用人群 – 希望在本地部署 AI 助手以自动化日常知识工作(如汇总电子表格、获取研究资料、创建工单)但又希望数据和凭证完全由自己掌控的团队。

相关

  • 项目
  • 项目
  • Dispatch
  • 项目
  • 项目