恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
如何将OpenTag部署到Railway:双服务生产架构完整教程
首页
资讯中心
/
如何将OpenTag部署到Railway:双服务生产架构完整教程
如何将OpenTag部署到Railway:双服务生产架构完整教程
发布时间:2026/10/14 15:59:06
【免费下载链接】OpenTagOpenTag: 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.项目地址https://gitcode.com/gh_mirrors/open/OpenTag点击查看免费下载OpenTag 是一个可自托管的 Slack 和 Microsoft Teams AI 知识库工作机器人基于 AG-UI 与 LangGraph 构建。本文将带你完成 OpenTag 部署到 Railway 平台的完整流程理解它的 agent runtime 双服务架构、配置环境变量、执行部署并验证上线最终在聊天频道里拥有一个真正可用的 AI 助手。一、先认识 OpenTag部署前你需要知道什么OpenTag 不是一个单体应用而是由两个职责明确的服务组成。部署前理解这个边界能避免绝大多数配置错误服务语言职责端口健康检查agentPython LangGraphAI 大脑推理、工具调用、联网研究8123/healthruntimeNode.js CopilotRuntime频道接入层连接 Slack/Teams、渲染原生 UI3000/api/copilotkit/info消息流向是Slack/Teams → CopilotKit Intelligence托管连接→runtime→ AG-UI 协议 →agent。runtime 通过 Railway 内网访问 agent不需要任何公网隧道或 Socket Mode。部署完成后它会这样工作二、部署前准备5 分钟清单 ✅在动手之前确认你已具备CopilotKit 账号一个 Intelligence 项目和 API KeyINTELLIGENCE_API_KEY免费方案即可OpenAI API Keyagent服务必需Slack 工作区能安装应用且已完成 Channel 创建务必先创建 Channel 再建 Slack 应用详见 README.md 的 Quick startRailway 账号已连接你的代码仓库⚠️ 一个关键提醒Channel 名称是认领制的。如果你 fork 了 OpenTag请给你的部署分配独立的 Intelligence 项目、API Key 和 Channel 名称否则多个 runtime 会为同一条消息互相竞争投递。三、OpenTag 部署步骤Railway 双服务上线 1. 克隆仓库并检查依赖git clone https://gitcode.com/gh_mirrors/open/OpenTag cd OpenTag pnpm install2. 阅读部署拓扑定义文件整个 Railway 拓扑以代码形式声明在.railway/railway.ts中只有两个服务、约 100 行agent 服务源目录agent/启动命令uvicorn main:app --host --port ${PORT:-8123}健康检查/health失败重启最多 5 次runtime 服务仓库根目录构建时执行pnpm exec playwright install chromium富 UI 渲染需要 Chromium启动命令pnpm runtime内网联动runtime 的AGENT_URL指向 agent 的 Railway 私有域名跨服务通信不出公网如果你想部署到自己的仓库或分支只需修改该文件中的REPO和BRANCH常量。3. 本地验证部署配置部署前先在本地评估配置确认两个服务的变量声明无误node node_modules/railway/dist/iac/bin.js仓库自带一份针对这份部署图的契约测试 app/railway.test.ts它会严格断言每个服务携带哪些环境变量、健康检查超时300 秒、重启策略甚至启动命令引用的脚本在 package.json 里真实存在。4. 执行 Railway 部署安装 Railway CLI 后执行railway init railway upIaC 文件会自动在 Railway 上创建agent和runtime两个服务并触发构建。5. 为每个服务配置环境变量这是最容易出错的一步。两份服务的变量不是随便放的设计逻辑是凭证跟着用它的服务走。agent 服务必填变量说明OPENAI_API_KEY唯一必填项模型访问凭证INTELLIGENCE_CHANNEL_NAME固定为open-tag同时是共享工具的默认 user_idLINEAR_API_KEY、GITHUB_PERSONAL_ACCESS_TOKEN等可选按需开启对应数据源runtime 服务必填变量说明INTELLIGENCE_API_KEYIntelligence 连接凭证AGENT_AUTH_HEADER与 agent 服务完全一致的共享密钥INTELLIGENCE_CHANNEL_NAME同样固定为open-tag⚠️两个高频坑AGENT_AUTH_HEADER必须在两个服务上手动设置成相同的非空值——Railway 不会替你同步不一致会导致所有 runtime 请求 agent 时返回 401Slack 应用务必关闭 Socket Mode并在 OAuth 页执行 Reinstall to Workspace否则会出现安装成功但收不到任何消息的假象完整的环境变量契约参考 setup.md 的 Railway 章节。四、部署验证三步确认真的上线了 服务全绿只是第一步真正可用要过这三关用真实人类账号发送机器人提问OpenTag what changed in the last deploy?—— 应收到有内容的回复同线程不 追问—— 应继续回复 即订阅了该线程新对话不 发消息—— 应该没有回复若回复了说明触发规则配错了最后把机器人拉进频道/invite OpenTagSlack 不会向机器人不存在的频道发送 mention 事件。上传一份 CSV它还会直接在 Slack 里渲染成原生图表并给出结论如果验证失败按顺序排查npx --yes copilotkitlatest channels status --json LOG_LEVELdebug pnpm runtime更严格的验证方式是用仓库自带的 Slack 实时测试框架说明见 e2e/README.md。五、常见问题与故障速查症状原因解法Slack 装好了但毫无反应Socket Mode 开着或没 Reinstall关掉 Socket ModeReinstall 并更新 Signing Secretruntime 请求 agent 返回 401两端AGENT_AUTH_HEADER不一致两边设为相同非空值收到终端没见过的回复Channel 名称冲突别处 runtime 抢走了投递为部署分配独立的 Channel 名称部署反复重启启动命令与脚本对不上参考 app/railway.test.ts 的断言核对渲染图表/图片失败runtime 缺少 Chromium 或系统库确认RAILPACK_DEPLOY_APT_PACKAGES构建变量生效六、延伸阅读部署拓扑源码.railway/railway.ts完整环境变量契约与 Railway 说明setup.md运行时入口与生命周期server.ts环境默认值如 Intelligence 端点app/env.ts频道行为与触发规则app/channel.tsx协作开发约定AGENTS.mdAWS 部署替代方案ECS Fargate Secrets Managerdeployment/aws/README.md双服务架构 声明式 IaC 契约测试让 OpenTag 的 Railway 部署既清晰又可审计。Fork 它换上你自己的 agent 与工具就能拥有专属的 AI 值班助手。赞分享【免费下载链接】OpenTagOpenTag: 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.项目地址https://gitcode.com/gh_mirrors/open/OpenTag点击查看免费下载相关推荐终极指南:trackerslist 一键解决 BT 下载速度慢、连接不稳定的完整方案终极指南:trackerslist 一键解决 BT 下载速度慢、连接不稳定的完整方案 是不是常遇到这种场景:BT 下载速度只有几百 KB,连接数死活上不去,进度从零到生产Text2Video-Zero零样本视频生成模型部署全指南从零到生产Text2Video Zero零样本视频生成模型部署全指南 Text2Video Zero是ICCV 2023 Oral收录的创新项目它突破性地将CloudForestGo语言中的高性能随机森林库完全指南CloudForestGo语言中的高性能随机森林库完全指南 CloudForest是Go语言中一个功能强大的高性能随机森林库专为机器学习任务设计。这个库实现机器学习创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考