ToolJet 开源全栈解读:低代码内部工具平台与 AI 原生能力的结合
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
ToolJet 是一个面向内部工具、数据看板、业务应用与工作流的低代码开源平台,也是 ToolJet AI 的开放式基础(open-source foundation)。本文基于本仓库(GitHub_Trending/to/ToolJet)的 README 与源码结构,系统梳理其功能边界、技术架构、快速启动方式、部署矩阵与扩展机制,帮助读者快速判断如何在自己团队中落地、自托管或进行二次开发。
ToolJet 是什么:定位与版本格局
从仓库根目录的 README.md 可以看出,ToolJet 的官方定位是"构建和部署内部工具、工作流与 AI Agent 的 AI 原生平台的社区开源基础"。它并非只提供拖拽 UI 的传统低代码工具,而是把可视化搭建、数据连接、工作流自动化以及面向企业级的多环境管理与权限体系整合在一起的平台底座。
围绕这一基础,仓库代码实际由三种运行时版本构成(相关描述见 CLAUDE.md):
- CE(Community Edition):社区版代码位于
server/src/modules/与frontend/src/,即本仓库公开的主体; - EE(Enterprise)/ Cloud:企业能力以
server/ee/、frontend/ee/子模块方式存在; - 运行时代次切换:通过环境变量
TOOLJET_EDITION(取值为ce/ee/cloud)控制加载哪套实现,cloud本质上是 EE 代码上叠加云端行为的部署配置。
换言之,README 中"Community Edition + ToolJet AI(Enterprise)"的功能划分,对应到工程上即"CE 主代码 + EE 子模块扩展"的同一套产品线。
功能矩阵:社区版与 AI 企业版的边界
README 用两个章节分别罗列了社区版与 ToolJet AI(企业版)的能力清单,这也是评估"哪些能力开箱即用、哪些需要企业授权"的最直接依据。
Community Edition(CE)开源自带能力(见 README.md):
| 能力 | 说明 | 仓库佐证 |
|---|---|---|
| 可视化应用构建器 | 60+ 响应式组件(表格、图表、表单、列表、进度条等) | 组件代码集中在 frontend/src/_ui,App Builder 相关模块位于 frontend/src/AppBuilder |
| ToolJet 数据库 | 内置无代码数据库 | 官方文档 platform-overview 说明其构建于 PostgreSQL 之上;前端管理界面位于 frontend/src/TooljetDatabase |
| 多页面应用与多人协作编辑 | 支持复杂应用协同开发 | 后端服务与 AppVersion 模型见server/src/modules/ |
| 80+ 数据源 | 连接数据库、API、云存储与 SaaS 工具 | 官方插件位于 plugins/packages,第三方插件市场位于 marketplace/plugins |
| 灵活部署 | Docker、Kubernetes、AWS、GCP、Azure 等 | 见下文"部署方式矩阵" |
| 协作工具 | 行内评论、@提及、细粒度访问控制 | 评论相关迁移与模块见server/migrations/、server/src/modules/ |
| 可扩展性 | 通过 ToolJet CLI 创建插件与连接器 | CLI 实现见 cli/src/commands,官方插件以 Lerna 单体仓库组织在 plugins/packages |
| 随处写代码 | 应用内运行 JavaScript 与 Python | 后端 RunPy 相关数据迁移1676545162064-BackfillRunpyDatasources.ts可佐证 Python 执行历史 |
| 安全设计 | AES-256-GCM 加密、数据仅经代理流转、SSO 支持 | 加密实现见下文"安全设计"一节 |
ToolJet AI(Enterprise)在 CE 之上追加(见 README.md):AI 应用生成、AI 查询构建器、AI 调试、Agent Builder、SOC 2/GDPR 合规就绪、RBAC 与自定义用户组、多环境管理、GitSync 与 CI/CD、白标与自定义主题、行/组件/页面/查询级细粒度权限、应用嵌入以及企业级支持等。仓库根目录的 flowchart.png 即对这套"应用构建器 + AI + LLM 集成 + 数据源 + 安全与访问控制"整体能力做了可视化呈现:
说明:上述企业能力对应的是私有子模块代码,本公开仓库仅提供 CE 实现;如需在企业环境验证完整能力,请通过官方渠道获取对应版本。
单体仓库结构与技术栈速览
README 与 CLAUDE.md 共同勾勒出本仓库的多包工程形态,主体目录如下:
server/ # NestJS + TypeORM + PostgreSQL 后端(CE 主代码在 src/modules/) frontend/ # React + Webpack 前端(App Builder、ToolJet Database 界面等) plugins/ # 官方数据源连接器(Lerna 单体仓库,40+ 包) marketplace/ # 第三方市场插件 cli/ # ToolJet CLI(npm 包 @tooljet/cli 的源码) cypress-tests/ # Cypress 端到端测试 docs/ # Docusaurus 文档站源码 deploy/ # Kubernetes、Helm、EC2 等部署编排 docker/ # 各版本的 Dockerfile后端为 NestJS + TypeORM + PostgreSQL,前端为 React + Webpack。前端通过 webpack 别名(@/指向src/,@ee/、@cloud/指向对应子模块)配合NormalModuleReplacementPlugin实现"低版本编译期隔离",因此 CE 代码中不允许直接 import EE/Cloud 模块。运行时则通过 frontend/src/modules/common/helpers/_registry 下的注册表解析具体版本对应的组件与模块。这些工程约束让"同一个仓库支撑三个版本"成为可能,也解释了为什么 README 会把 CE 与 AI 企业版放在同一份文档中描述。
快速上手:Docker 一键体验
README 的 Quickstart 提供了三种路径:
- 托管云版:在 ToolJet Cloud 注册账号直接使用(免运维);
- 本地 Docker 快速试跑:直接拉取官方镜像,命令如下(来源 README.md):
docker run \ --name tooljet \ --restart unless-stopped \ -p 80:80 \ --platform linux/amd64 \ -v tooljet_data:/var/lib/postgresql/13/main \ tooljet/try:ee-lts-latest该命令将 80 端口映射到容器、将数据持久化到名为tooljet_data的 Docker volume(PostgreSQL 13 数据目录),并启用unless-stopped重启策略。README 同时给出明确建议:已有历史版本的用户升级时应优先选择 LTS 版本,因为 LTS 提供生产级 bug 修复、安全补丁与性能优化,稳定性和可靠性优先于最新功能。
- 源码自托管:如果希望从源码构建而不是使用镜像,仓库根目录的 docker-compose.yaml 给出了开发环境的完整服务编排。其核心服务与端口如下:
| 服务 | 镜像/构建 | 端口 | 说明 |
|---|---|---|---|
plugins | docker/plugins.Dockerfile.dev | — | 挂载./plugins并执行npm run --prefix plugins start |
client | docker/client.Dockerfile.dev | 8082 | 前端开发服务器,WEBPACKER_DEV_SERVER_HOST=0.0.0.0 |
server | docker/server.Dockerfile.dev | 3000 | NestJS 后端,TOOLJET_EDITION=ce,读取根目录.env |
postgrest | postgrest/postgrest:v12.2.0 | 3001→3000 | 为 ToolJet 数据库提供 REST API 层 |
postgres | postgres:13 | 5432 | 主数据库,通过.env注入POSTGRES_USER/POSTGRES_PASSWORD |
redis | redis:7-alpine | 6379 | 开启 appendonly 持久化,用于队列/缓存 |
生产镜像与入口脚本可参考 docker/ce-production.Dockerfile、docker/ce-entrypoint.sh,以及 LTS 系列的 docker/LTS。后端开发环境依赖的关键运行命令(start:dev、db:migrate等)在根 package.json 的 scripts 中均有一一对应的 npm 脚本。
部署方式矩阵:从 Docker 到多集群环境
README 的 Self-hosted 章节列出十余种部署目标。仓库为其中的主流部署形态都准备了真实的编排文件,这里把 README 提及的 Provider 与仓库内可验证的配置对应起来:
| 部署形态 | 仓库内资源 |
|---|---|
| Docker Compose(开发) | docker-compose.yaml |
| Docker Compose(仅数据库) | deploy/docker/docker-compose-db.yaml |
| Docker Compose(完整) | deploy/docker/docker-compose.yaml |
| AWS EC2 | deploy/ec2 |
| Kubernetes(通用) | deploy/kubernetes/deployment.yaml、deploy/kubernetes/service.yaml |
| GKE | deploy/kubernetes/GKE |
| AKS | deploy/kubernetes/AKS |
| OpenShift | deploy/openshift/deployment.yaml |
| Helm | deploy/helm(含 values.yaml 与 templates) |
| 客户端前端独立部署 | 前端 Nginx 模板见 frontend/config/nginx.conf.template |
| 子路径(Subpath)部署 | 文档见 docs/docs/setup 下 24 篇 setup 文档 |
平台还同时上架了 AWS Marketplace 与 Azure Marketplace,方便在公有云内一键订阅部署(详见 README.md 的 Marketplace 章节)。需要注意的是,各 Provider 的分步教程、环境变量清单与前提条件在外部文档站维护,本仓库的对应文档源码位于 docs/docs/setup,其中既有按云厂商(ec2、kubernetes、helm 等)划分的部署说明,也有"Deploying ToolJet client"这类面向单一前端组件的专项指南。
数据与安全设计:加密与数据流原则
README 在安全项中给出了三条关键承诺:AES-256-GCM 加密、数据仅经代理流转(proxy-only data flow)、SSO 支持。其中加密实现可以直接在源码中得到验证:
- 文件 server/src/modules/encryption/service.ts 中,加密路径在第 34 行使用
crypto.createCipheriv('aes-256-gcm', key, nonce),解密路径在第 50 行对应crypto.createDecipheriv('aes-256-gcm', key, nonce),即服务端对敏感凭据(如数据源密码、OAuth 密钥)采用 Node.js 内置 crypto 模块实现的标准 AES-256-GCM 对称加密。
从代码结构看,这一加密服务被大量数据源/凭据相关模块复用:仓库中上百个 TypeORM schema 迁移与数据迁移(server/migrations、server/data-migrations)持续演进着凭据与配置存储模型,例如1709618105785-EncryptValuesForExistingOrganizationConstants.ts、1752749046662-EncrpyGoogleCalendarClientSecret.ts等迁移文件表明加密能力也覆盖组织常量与第三方服务的 client secret。
SSO 相关的支持则散见于用户体系的数据模型中(如AddSSOIdToUser、OrganizationsInheritSSO等迁移),README 与官方文档都强调其支持 Okta、Google、Azure AD、OpenID Connect 等常见 IdP,企业版还追加审计日志与更细粒度的访问控制。想进一步理解平台权限体系演进的读者,可以顺着server/migrations中 2024 年后的"组权限/细粒度权限"系列迁移(如1714015564318-AddGranularPermissionsTable.ts)追溯。
数据源生态与插件扩展机制
"80+ 数据源"与"可扩展连接器"是 ToolJet 的核心卖点之一,仓库从两个层面支撑这一能力:
- 官方插件(plugins/packages):以 Lerna 单体仓库组织,内含 40+ 个官方连接器包,覆盖 PostgreSQL、MySQL、MongoDB、Redis、Elasticsearch、S3、Stripe、Slack、Twilio、BigQuery、ClickHouse 等常用服务,每个包都带统一的 manifest、operations schema 与 TS 实现;
- 市场插件(marketplace/plugins):以同样结构组织的第三方/官方扩展,例如 OpenAI、Anthropic、Gemini、AWS Bedrock、Salesforce、HubSpot 等,并配套 marketplace/scripts 做构建与发布;
- 插件脚手架:
plugins/_templates/plugin与marketplace/_templates/plugin提供新连接器的生成模板,结合 cli 下的 ToolJet CLI 命令即可快速创建自定义数据源插件。
值得关注的是,这些插件同时承载了 AI 时代的 LLM 集成:仓库的流程图与插件目录都显示 OpenAI、Hugging Face、Anthropic、Gemini、Cohere、Portkey、Mistral 等 LLM 服务均以标准数据源形式接入,这与"ToolJet AI 基于 CE 开放基础叠加 AI 能力"的定位一脉相承。
贡献与工程规范
README 的工程治理信息对潜在贡献者同样重要,仓库内均有对应落地:
- 分支模型:采用 git-flow。基础分支为
develop;需要稳定版本时切换到main或v1.x.x之类的 tag。 - 贡献指南:CONTRIBUTING.md 描述 bug 修复、功能建议与本地构建/测试流程;同时仓库还提供了 CODE_OF_CONDUCT.md、SECURITY.md 与 SECURITY-INCIDENT-RESPONSE.md。
- 开发上下文:CLAUDE.md 面向 AI 编程助手与人类开发者,记录了版本机制、目录约定、常用命令(如
cd server && npm run start:dev、cd server && npm run db:migrate)以及"EE 服务继承 CE 基类"等架构不变量;根目录的 UBIQUITOUS_LANGUAGE.md 是领域术语词典,明确指出Organization(代码实体)= Workspace(用户界面用语)、Widget(旧称)= Component这类容易踩坑的概念映射。 - 测试资产:仓库保留了大量 Cypress 端到端测试(cypress-tests)以及后端单测目录 server/test,可作行为参考。
文档与后续学习路径
README 中大量指向外部文档站的链接,其内容源即本仓库的 Docusaurus 站点目录 docs:
- 平台总览与"4 步构建应用"的工作方式说明,见 docs/docs/getting-started/platform-overview.md;
- 从零构建一个"员工目录"应用的图文教程,见 docs/docs/getting-started/quickstart-guide.md;
- 组件(Widget)参考文档按名称散落在 docs/docs/widgets,共 60+ 篇;
- 数据源参考文档见 docs/docs/data-sources;
- 部署、用户管理、ToolJet 数据库、工作流等主题分别在 docs/docs/setup、docs/docs/user-management、docs/docs/tooljet-db、docs/docs/workflows 下独立成篇。
许可证与版权
README 明确声明:ToolJet © 2023 ToolJet Solutions Inc,以GNU Affero General Public License v3.0(AGPL v3.0)发布,仓库根目录的 LICENSE 与 THIRD-PARTY-NOTICES 提供了完整的法律文本与第三方组件声明。AGPL 的传染性条款意味着基于其源码做二次分发/网络服务时需要格外关注合规义务,这也与"CE 开源、AI 企业能力闭源子模块"的双轨商业模型相呼应。
总结
本仓库的 README 实际上描绘了一幅"以低代码 CE 为底座、以 AI 与合规能力为增值层"的产品蓝图:技术侧你可以拿到 NestJS + React 的完整可运行源码、40+ 官方连接器与可扩展的插件 SDK;运维侧它覆盖从docker run单命令体验到 Kubernetes/Helm/多云编排的全谱系部署资产;开发侧则有清晰的 git-flow 分支模型、贡献指南与面向 Agent 的工程文档。若你的团队恰好需要一套可自托管、可深度定制的内部工具/看板/工作流平台,这正是一个值得重点评估的开源候选。
【免费下载链接】ToolJetOpen-source foundation of ToolJet AI - the enterprise app generation platform for internal tools, dashboards, business applications, workflows and AI agents. Build visually, from a prompt, or from Claude Code, Codex and Cursor over MCP 🚀项目地址: https://gitcode.com/GitHub_Trending/to/ToolJet
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考