伪装成熟悉电子表格的关系型数据库
每位开发者最终都会遇到这样的情况:业务或管理人员需要一个便捷的数据操作界面。通常选择很有限。要么部署一个笨重的管理面板(如 Django Admin 或 Forest Admin),要么把所有东西都交给 Google Sheets,但一周之内公式就会出错、数据类型混乱,通过外键关联两个表会变成一场噩梦。
最近我发现了 grist-core — 一个试图桥接两个完全不同世界的开源引擎:关系型数据库和灵活的电子表格。
https://github.com/user-attachments/assets/fe152f60-3d15-4b11-8cb2-05731a90d273
深入了解
深入了解后,Grist 与标准的 Excel 克隆版完全不同。在传统电子表格中,每个单元格是独立的:一列中的某行可能是数字,下一行是字符串,再下一行是公式。而在 Grist 中,列是严格类型化的,像 SQL 表中的字段一样工作。
同时,每个文档只是一个普通的 SQLite 文件。这意味着你的数据不会被锁定在专有存储中。任何能读取 SQLite 的工具都可以直接打开导出的 .grist 文件。从备份和服务器间迁移的角度来看,这种方式大大简化了操作:拿走文件,就等于拿走了整个数据库。
有趣的是,法国政府机构(ANCT 和 DINUM)积极投资该代码库,因此项目持续收到与无障碍访问、本地化以及企业安全相关的提交。
Python 替代宏和公式方言
对于任何会写代码的人来说,主要的杀手级功能是用纯 Python 进行计算。没有受限的语法或奇怪的扩展。单元格公式接受标准 Python 语法及其标准库。
例如,你可以自由使用列表推导式、字符串切片、正则表达式,或 datetime 模块。如果你习惯使用 SUM 或 AVERAGE 这样的表格函数,这里也有,但当逻辑变得复杂时,切换到 Python 可以省去很多麻烦。
代码在隔离的沙箱中执行。根据环境不同,你可以配置隔离方式:Linux 上用 gVisor、macOS 上用原生 sandbox-exec,或者在 Windows 上通过 WebAssembly 使用 Pyodide。
如果你不想手动编写公式,可以使用内置的 AI 助手。它可以连接到 OpenAI 或通过 OpenRouter 配置其他模型,包括 Claude 3.7 Sonnet 或通过 LM Studio 使用本地 LLM。
数据关联和可视化仪表盘
在 Airtable 或 Notion 中,你经常无法在同一屏幕上正确配置关联视图。在 Grist 中,工作区被分成多个可以相互链接的卡片或小组件:
- 左侧的客户表会过滤右侧的订单列表。
- 选择一个订单会立即更新详情卡片,显示 Markdown 描述和附件文件。
- 内置的日历、图表和汇总表小组件可以在不创建中间隐藏工作表的情况下对指标进行分组。
双向引用(two-way references)开箱即用:将任务链接到冲刺——冲刺会自动将任务添加到其关联任务列表中。
细粒度访问控制
许多开源无代码工具在安全性方面存在不足,只能提供"全有或全无"的访问方式。在 grist-core 中,访问规则在单个表、行和列的级别定义。
访问条件也可以通过公式设置:
- 经理只能看到其邮箱与
user.Email字段匹配的 Deals。 - 工资列只对具有特定 SSO 属性的用户可见。
- 如果设置了
Status == 'Closed'字段,则阻止编辑已归档的记录。
对于企业部署,支持 OIDC、SAML 以及通过代理进行转发认证(如 Traefik 或 Authentik),同时支持通过 SCIM 进行用户配置。
Docker 快速启动
只需一条命令,就可以在几分钟内在本地试用该引擎:
启动后,在浏览器中打开 http://localhost:8484。容器会在控制台输出生成的启动密钥用于初始管理员设置。如果想跳过向导并获得一个无需额外问题的单实例,只需传递 -e GRIST_IN_SERVICE=true 环境变量即可。
与外部系统的集成通过标准 REST API 和出站 Webhook 实现。此外,Webhook 还可以灵活配置:你可以只在特定列更改时或满足给定逻辑条件时触发事件。
版本对比与限制
grist-core 代码库采用 Apache 2.0 许可证分发。基础 Docker 镜像 gristlabs/grist 包含可选的企业功能专有代码,默认禁用。如果你严格需要完全免费的软件,不包含任何第三方代码,开发者会构建一个单独的镜像 gristlabs/grist-oss。
部分功能从纯核心 grist-core 移到了商业版本中。例如,流式审计日志、内置邮件自动化链以及用于 AI 客户端的原生 MCP 服务器。不过,这并不妨碍你通过标准 REST API 使用社区适配器连接相同的 Claude。
界面翻译由 Weblate 社区管理:
谁将从这个项目中受益
如果你正在寻找一个可以替代 Airtable 的自托管方案,且不想受行数限制和按用户订阅费用的约束,Grist 看起来是一个很好的选择。
它完美覆盖了内部 CRM、库存追踪器、财务登记系统和简单的后台管理面板等需求。你可以获得完整的关系数据模型、Python 脚本的灵活性,以及在自有服务器上对 SQLite 文件的完全控制。
源代码和文档可在官方仓库 gristlabs/grist-core 中获取。
相关项目