学习是劳动,是充满思想的劳动。——乌申斯基

Twenty:社区驱动的“现代 Salesforce 替代品”,一位把 CRM 做成开源作品的理想主义者

Twenty 走进来时,先把名片递给你:

Building a modern alternative to Salesforce, powered by the community.

它不是冷冰冰的销售系统,更像一位有脾气、有追求的“客户关系管家”:
不想再让 CRM 变成昂贵的牢笼,也不愿意让用户的数据被锁在黑箱里。它想做的是——用开源和社区把 CRM 这件事重新写一遍。

它还会抬起头,认真地补一句身份宣言:

The #1 Open-Source CRM


Why Twenty:它为什么非要“重做 CRM”?

Twenty 讲理由时不绕弯,三句话,像三根钉子钉在桌面上。

1)CRMs 太贵了,而且用户被困住了

传统 CRM 的套路太熟练:把客户数据锁住,然后涨价。
Twenty 不认这个理,它的态度是:不该这样。

2)体验需要一次真正的“重启”

Twenty 觉得老世界的 CRM 已经背了太多历史包袱。
它要一个 fresh start,去重新打磨一种更一致、更现代的体验——灵感甚至来自 Notion、Airtable、Linear 这些新一代工具的 UX 习惯。

3)开源与社区不是口号,是增长方式

它相信开源,更相信社区一起把它“养大”。
它已经在和数以百计的开发者共同建设;而它想象的未来是:当插件能力真正到位,一个围绕 Twenty 的生态会自己长出来。


Installation:让 Twenty 在你的机器上“醒过来”

Twenty 在 README 里很干脆:安装请看文档,两条路——自托管 or 本地开发。

Twenty 像个很有职业素养的工程师:
“我给你方向,路径我都写在文档里,你照着走就行。”


What You Can Do With Twenty:它能帮你把 CRM 做成“你自己的样子”

Twenty 不喜欢“功能列表式的炫耀”,它更像在邀请你一起生活:
“你有什么需求,直接去提 Issue。先告诉我你想怎么用我。”

但它也会把自己已经练好的本事摆出来,让你放心把业务交给它:

  • 个性化布局:过滤、排序、分组、看板(Kanban)和表格视图(Table Views)
  • 自定义对象与字段(数据模型由你塑形)
  • 权限与角色(用自定义角色管理权限)
  • 工作流自动化(触发器 + 动作)
  • 邮件、日历事件、文件,以及更多(它不想只做“名单管理器”)

个性化布局:过滤 / 排序 / 分组 / 看板 / 表格

Twenty 像一个桌面整理大师:
同一批数据,你可以让它变成看板,也可以让它变成表格;你可以按阶段走,也可以按负责人分组;你想怎么看,它就怎么摆。

自定义对象与字段:你的业务语言,它来学

很多 CRM 最让人难受的是:你必须用它的词汇描述你的世界。
Twenty 的态度更像:“你说你的,我来适配。”

对象、字段、数据模型,你可以自己定义,让 CRM 按你的业务结构生长。

自定义角色与权限:它是门卫,也是秩序

Twenty 会认真地给每个角色发钥匙:
谁能看、谁能改、谁能触发什么动作,它都能用角色与权限体系管得清清楚楚。

工作流:触发器与动作,让它自己跑起来

Twenty 不满足于“记录发生了什么”,它更想“推动接下来发生什么”。
你可以配置触发器(Triggers)和动作(Actions),让流程自动走,让事情自己动。

邮件、日历事件、文件……它想做的是“工作台”

当邮件、日历、文件、协作都能在同一个 CRM 里被理解、被连接,CRM 才会真正变成生产力工具,而不是一张静态的客户表。


Stack:Twenty 的骨骼、肌肉与神经

Twenty 的技术栈像一支训练有素的团队,各司其职,配合默契:

  • TypeScript
  • Nx
  • NestJS(配 BullMQ、PostgreSQL、Redis)
  • React(配 Jotai、Linaria、Lingui)

它像一个大型城市:
后端负责秩序与交通(NestJS + 队列 + 数据库 + 缓存),
前端负责街道与灯光(React + 状态管理 + 样式方案 + 国际化),
Nx 负责把整个城市的建设节奏统一起来。


用 Twenty 的“官方脚手架”快速起步:Create Twenty App

Twenty 不止想让你“用它”,它还想让你“在它之上建东西”。

它有一个官方脚手架 CLI:Create Twenty App
目标很明确:让你快速生成一个可以跑的项目,并配好 twenty-sdk

它的自我介绍很像一句承诺:

The official scaffolding CLI for building apps on top of Twenty CRM.
Sets up a ready-to-run project with twenty-sdk.

Quick start(直接跑起来)

1
2
3
npx create-twenty-app@latest my-twenty-app
cd my-twenty-app
yarn twenty dev

这三行命令就像敲门三次——
第一次:把项目骨架搭出来;
第二次:走进项目里;
第三次:让它跑起来。

脚手架会做这些事:

  1. 创建一个 TypeScript 项目,带 lint、测试,并预配置 twenty CLI
  2. 可选:启动一个本地 Twenty server(Docker)
  3. 打开浏览器完成 OAuth 认证

常用参数:让它按你的方式长大

Flag Description
--example <name> 从示例初始化
--name <name> 设置 app 名称(跳过交互)
--display-name <displayName> 设置展示名(跳过交互)
--description <description> 设置描述(跳过交互)
--skip-local-instance 跳过本地 server 设置提示

比如你想从更丰富的示例开始:

1
npx create-twenty-app@latest my-twenty-app --example hello-world

示例来自这里:
https://github.com/twentyhq/twenty/tree/main/packages/twenty-apps/examples

脚手架文档入口

完整文档在:


关于 CLI:twenty-cli 已经退场,twenty-sdk 接棒

Twenty 的仓库里也很坦诚地写了:

Deprecated: twenty-cli
Please install and use twenty-sdk instead.

如果你之前装过 twenty-cli,它会建议你这样迁移:

1
2
npm uninstall twenty-cli
npm install -g twenty-sdk

它像个把交接文档写得很清楚的老同事:
“我退了,但你别慌,接班人已经站好了。”


Join the Community:Twenty 喜欢人多热闹,更喜欢你动手

Twenty 的社区邀请清单像一张“入场券”,你想用什么方式加入都行:

它的语气像在说:
“我们不是在做一个产品,我们在一起养一个世界。”


Twenty 的结尾语气:它不是要替代谁,它是要打开门

Twenty 从不掩饰它想做的事:
做一个现代 Salesforce 替代品,但不是靠封闭和捆绑,而是靠社区、开源、体验与可扩展性。

它像一位把 CRM 从“昂贵的高墙”里拆出来的人,
把砖一块块摆在阳光下,然后说:

来,一起建。