novu
novuhq/novu加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象你在做一个带 AI Agent 的运维助手。凌晨两点,Agent 在集群里发现某个订单流水线卡住了,它需要做两件事:把现场细节讲清楚,以及等一个人点头才敢继续往下执行。
传统做法是为 Slack 写一套 webhook、为邮件写一套 SMTP、为手机推送再写一套 SDK,并为每个渠道各写一遍「会话续接、身份识别、线程归属、失败重投」。四五个渠道意味着四五套重复实现,而且每接一个新渠道,重复一遍。
Novu 做的事情是把这一层抽出来:你只写一次集成,Agent 就能在收件箱、邮件、短信、推送、Slack、Microsoft Teams、Telegram、WhatsApp 上同时说话,而且对方回一句话时,Agent 知道这是谁在跟哪一段对话。
Novu 诞生于 2019 年,起手就是一个很朴素的想法:产品要触达用户,就得同时接邮件、短信、推送、应用内消息,每接一个供应商就重写一遍对接代码。团队把它做成了开源通知中台,核心(apps/、packages/、libs/)走 MIT 协议,40k+ star、4500+ fork、539 位贡献者,规模在开源通知赛道属于头部。
但 2025 年之后 AI 改变了这条赛道的形状。通知的本质是单向广播——投递出去就结束,而 Agent 产生的内容是开放式的、不可预测的,且天然需要双向往返。Novu 的判断是:广播型通知不会消失,但它会变成智能体对话的前奏。于是项目新增了 ACI(Agent Communication Infrastructure,智能体通信基础设施)这一层,官方把它放在 MCP 与 A2A 旁边:MCP 是 Agent 与工具对话,A2A 是 Agent 与 Agent 对话,ACI 是 Agent 与人对话。

图:Novu 官方文档中的 ACI 概念图——智能体大脑与各渠道之间的桥接层
传统通知平台像邮局:你写好信、填好地址,它负责准确投递到各家渠道。ACI 更像电话交换局:它不关心你说的是什么内容(那是 Agent 大脑的事),只负责接线路、保持通话状态、识别对面是谁、把你这句话准确送回原来的那根线路上。你可以把同一个 Agent 接到 Slack 和邮箱,它在两边都还是同一个人。
统一会话模型(ACI 的核心):所有渠道的入站消息被规范化成同一个形状,Agent 只需要处理一种格式。桥接层(Bridge)负责 webhook 摄取、身份解析、会话状态维护、历史上下文拼装,然后把一轮对话交给你的 Agent 智能体。
Bring Your Own Agent:Novu 明确声明不碰你的提示词、不碰你的模型、不碰你的密钥。支持 Claude Managed Agents、AI SDK、LangGraph、OpenAI Agents SDK 或纯自定义服务。

图:托管 Agent 的消息流转流程
工具审批闭环:Agent 在执行敏感工具前可以在频道里直接发「Approve / Deny」按钮,人点了之后这一轮对话才继续——这正是把异步 Agent 拉回人类工作流的关键机制。
通知侧能力(老本行,同样完整):统一 API 覆盖 In-App、邮件、短信、Push、Chat 共 20+ 邮件供应商;可视化工作流引擎支持分支与条件;Digest 引擎做消息合并;无代码邮件编辑器;可嵌入的 <Inbox /> 组件与用户偏好中心组件。
多租户与自建:Novu Connect 从第一天就是多租户设计的,平台本身支持工作区隔离、API 密钥加密存储(STORE_ENCRYPTION_KEY)、JWT 签名鉴权。

图:Novu 平台整体架构
最省事的路子是 Docker Compose:docker/community/docker-compose.yml 拉起 MongoDB 8 + Redis + API + Worker + Dashboard + WebSocket 服务,镜像已发布到 ghcr.io/novuhq/novu/*,不用自己编译。但它依赖 MongoDB 与 Redis 两个外部有状态服务,这比纯静态站点重得多。
源码自建门槛偏高:package.json 锁定 Node.js 22 与 pnpm 11.28,14611 个文件的 Nx monorepo,pnpm build 会拉起几十个包的构建图;各服务的 Dockerfile 走 dev → deploy → prod 三段式,本地没有 8G 以上内存会非常吃力。
ACI 的门槛则被刻意压低了:npx novu@latest connect 可以在两分钟内把一个已有的 Claude Managed Agent 挂进 Slack/Telegram/邮箱,不用写服务端。

图:Novu 官方 Quickstart 中的 Slack 渠道接入界面
许可证不是纯 MIT。 GitHub API 返回 NOASSERTION 是准确的:核心走 LICENSE-MIT,但 enterprise/packages 与 enterprise/workers 走 Novu 自有的商业许可证(LICENSE-ENTERPRISE / EE-PACKAGES-LICENSE)。这意味着企业版的多租户治理、部分高级工作流能力在自建时拿不到,评估自建方案时必须先确认所需能力落在 MIT 核心还是 EE 目录。
重。 MongoDB + Redis + 多个 Node 服务,对只想发一封邮件的团队是杀鸡用牛刀,轻量场景下 SendGrid 或 Resend 才是正解。
仍在剧烈演进。 默认分支是 next,40+ 个 GitHub Actions workflow 同时跑 CI、E2E、多包发布与自建版本准备,接口和目录结构变动频繁;官方还明确提示 Novu Connect 尚处早期。
自建并非零运维。 密钥加密、订阅者身份、邮件送达率(发件域 DNS、SPF/DKIM)都得自己盯,官方在社区版文档里也是建议先用云端验证再自建。
Novu 这次转向折射出一个更大的判断:Agent 落地的最后一公里不是模型能力,而是「Agent 如何可靠地触达并与人协作」。行业此前把注意力集中在 MCP 和 A2A 上,而 ACI 把「与人对话」这条腿补齐了——而且 Novu 选了一条更聪明的路:它不造 Agent,它造 Agent 的喉舌和耳朵,把 Agent 智能体留成可替换的部分。
从商业上看,这一步也补齐了它的商业模式闭环:核心 MIT 负责获客与生态,ACI 与 EE 能力负责变现。从技术上看,40k star、539 位贡献者、920 个测试文件、CodeQL 安全扫描与 50+ 供应商适配器构成的代码资产,短期内很难被复制。
如果你正在做带 Agent 的产品,Novu 值得认真评估——但请先想清楚一件事:你是需要一套完整的通知中台,还是只需要一个能让 Agent 开口说话的通道?前者 Novu 是现成答案,后者它可能过重。