一个人,带着一群 AI:一个 10 年前端如何做出几十个团队在用的在线文档
去年有人问我:AI 这么猛,你一个写前端的还卷得动吗。我没正面答,因为那阵子我正忙着用 AI 帮我写代码------写出来的东西,现在公司内部几十个团队、上千号人每天在上面写需求、记周报、搭知识库。
它叫零一文档。这篇文章不是来给它做广告的(虽然也顺手放个地址),更像一次坦白局:一个干了十来年前端的人,这两年是怎么跟 AI 搭伙干活的,以及我越来越觉得重要的几件事------技术、还有咱们这行的人,到底值钱在哪。
我是谁,以及我为什么慌过
我写前端大概十年出头了。从 jQuery 一把梭、自己拼组件,写到 React + TypeScript 的工程化,再写到 monorepo、微前端那一套。前端最乱和最体面的年头我都赶上了。
前几年我们卷的是框架、是工程化、是谁的构建快;这两年画风突变,变成 AI 直接上手替你写代码。我得承认,有一阵我是慌的。不是怕失业那种慌,是怕自己辛苦攒了十年的那点"熟练度"------什么 API 记得熟、什么坑踩过、什么脚手架闭眼都能搭------突然就不值钱了。
后来想通一件事,反而踏实了:AI 写得快,不等于 AI 知道该写什么。它缺的不是手速,是"为什么要做这个、做到什么程度算对、出事了谁负责"。这些恰恰是我干了十年攒下来的东西。
于是我换了个活法:不再跟 AI 比谁代码敲得快,而是坐到"提需求 + 验收"的位置上,让它替我把那些我懒得干、但必须干的活儿干掉。
零一文档,就是这么被我"催"出来的。
这东西是怎么来的
起因特别朴素,甚至有点窝火。
我们有几个团队,天天要写文档、记需求、存知识库。需求方就一句话:"要能多人一起改、数据不能出公司、最好别花钱。"
市面上的方案我挨个看了一遍:SaaS 要么贵,要么数据得出域(合规一票否决);能私有部署的,报价单长得吓人,还是"联系销售"那套;自己从零撸一个协同编辑器?光是协作冲突、离线合并这几个点,就能耗掉一个季度,还未必稳。
换作以前,这事到我这儿基本就黄了------一个人哪做得动一个"在线文档系统"。但那阵我已经用上 AI 编码工具一段时间,心里有个判断:实现的成本降了一大截,剩下难的其实是架构和取舍,那恰好是我该干的。
我就这么开始了。不是先写个漂亮计划,是边用边写:先解决自己团队记周报的痛,再补协同,再加知识库,后来看团队都在折腾 Agent,又把 MCP 接了进来。
现在它跑在公司内部,几十个团队在上面真用。说"真用"是因为每天都有人在那吵架改需求、贴截图、写周报------一个没人用的系统是不会这么热闹的。
我为什么非要让它能私有部署
做着做着,我越来越确信一件事:文档不是文档,文档就是数据。 而且是一家公司最值钱、也最敏感的那部分数据------需求、合同、周报、客户资料、还没上线的产品方案,全在里头。
可现实是,这些东西大多躺在别人的 SaaS 里。AI 时代这个矛盾比过去更尖了:一边是大伙都在用大模型、都在让 Agent 读自己的文档库;另一边是数据出域的合规红线越收越紧。金融、政企这类客户,根本不允许把资料往第三方云上放,合规上一票否决。
我自己做过几年内部系统,太清楚这种两难:要么花钱买能私有部署的商业方案,报价单能吓退人,还得低头求着厂商;要么自己从零撸一个,成本又扛不住。很多团队最后选了"先凑合用 SaaS",等于把最核心的数据交了出去。
所以零一文档有个我死守的底线:它必须能私有化部署。 不是"联系销售拿方案"那种私有化,而是你拉下代码、Docker 一行命令就能跑在自己的服务器上,数据从头到尾都在你自己的数据库里,不经过任何第三方。
这件事就是我做这个项目的根。前面说的协同、MCP、多维表,都是为实现它服务的------让一个团队,不依赖任何外部厂商,也能拥有自己的文档系统,把数据攥回自己手里。AI 越发达,这一点越重要:你可以用最好的模型、最聪明的 Agent,但你的底稿,得在你自己能掌控的地方。
说句公道话:哪些是我干的,哪些是 AI 干的
这一点我想讲清楚,因为它正关系到"技术人员定位"。网上太多"我用 AI 一天做个 XX"的爽文,看着热闹,其实误导人。我的真实分工是这样的:
我干的活:
- 定架构。monorepo 怎么拆------核心引擎(
core-*)和编辑器(editor-*)分开,应用层(web/admin/server)各自独立。这个拆法决定了后面能不能维护得动。 - 定最难的技术选型。比如实时协作到底用 CRDT 还是 OT,我拍的板;什么该开源、什么留作商业,这条线也是我划的。
- 验收和判断。AI 给我的代码,我要 review、要跑、要测。不对就打回去让它重写,来回几轮是常事。很多时候它第一次交出来的东西,离"能用"还差得远。
AI 干的活:
- 大概 80% 的样板代码、重复组件、增删改查接口。这些我也能写,但写起来烦,它写得快。
- 测试用例的初稿、文档的初稿(包括仓库里你现在看到的大段注释,不少是它先写的,我再改顺)。
- 某些我不熟的领域,比如某段底层算法,先让它出个初版,我再往里塞业务逻辑、改边界。
一句话总结我的体感:AI 像个手脚很快、但不太会思考的实习生;我是那个得为结果负责、并且在关键路口能做取舍的人。 它替我干掉了体力活,但方向盘一直在我手里。
这也是我后来越想越觉得重要的事,放后面单独聊。
它现在到底能干什么
光说我一个人干,你可能觉得我在吹。说点具体的,它现在跑起来、真有人用的东西是这样:
| 模块 | 现在能做什么 | 状态 |
|---|---|---|
| 多维表格 | 多种字段类型、多视图(表格 / 日历 / 看板 / 甘特 / 画廊)、公式引擎、条件格式、仪表盘 | 已开源,能跑 |
| 思维笔记 / 导图 | Canvas 引擎、主题、节点样式、大纲视图 | 已开源,能跑 |
| 白板 | 自由画布、连接线、形状、可嵌入思维图 | 已开源,能跑 |
| 富文本文档 | 标题、列表、表格、代码块、Markdown / Mermaid、大纲导航 | 还在写 |
| 问卷 | 表单设计、数据收集与分析 | 还在写 |
几个实在话:
- 多维表格是我花最多心思的。团队现在主要拿它管需求、排期、跟进度,多视图切换和公式都齐了。
- 思维笔记和白板是 Canvas 引擎画的,不重,但日常够用。
- 富文本文档和问卷还没写到能拿出手的程度,没捂着,就是还没写完。
- 核心那几项------实时协作、导入导出(DOCX / XLSX / Markdown)、知识库、还有上面说的 MCP------都已经开源,你能直接把代码拉下来看。
- AI 助手和 RAG 这块目前是商业授权,不在开源部分。提前说清楚,免得你拉下来跑,发现某块功能要授权才懵。
还有一点,它不只是个能打开的网站。核心引擎我拆成了 npm 包,你想给自己产品嵌个表格或者思维导图,直接引就行:
bash
npm install @lingyi-doc/core # 核心引擎(无 UI 依赖)
npm install @lingyi-doc/editor # React 编辑器组件
npm install @lingyi-doc/mind-map # 纯 Canvas 思维导图引擎
技术上的几个决定(给同行看的)
如果你是写代码的,下面这几段可能比前面有用。我把几个关键决定和踩过的坑讲一下。
实时协作:为什么是 CRDT,不是 OT
多人同时改同一个格子、断网改了一半再连上、两台设备各改各的------这些才是协同编辑真正的坑,不是"能同时打字"就完事。
我一开始也考虑过 OT(操作变换),但 OT 要在服务端跑一套转换逻辑,状态机复杂,运维也重。后来选了 CRDT(无冲突复制数据类型)+ HLC(混合逻辑时钟),配合 WebSocket 做实时同步。CRDT 的好处是冲突在数据结构这一层就消解了,前端也能 hold 住,不用后端背着一套复杂的转换包袱。
踩过的真实坑:早期离线编辑后再合并,偶尔会丢内容。根因是 HLC 的时钟回退没处理好,离线期间的本地操作时间戳跟服务端对不上,合并时被当成旧数据丢了。后来把本地操作先缓存成待同步队列、重连后带因果序补齐,才算稳。
说白了,协同这块我建议别自己造轮子,直接复用现成的思路。零一文档的协作引擎是开源的,架构文档我也都放进仓库了,照着看比自己琢磨省事。
让 Agent 读得懂我的文档:MCP
先说清,做这个系统最大的动力真不是 MCP------这个留到后面单独聊。MCP 是中途被需求"逼"出来的:团队都在搞 AI Agent,可自家的文档库没有标准接口。数据虽然在自己手里(上一节说的),Agent 却读不到------Agent 想"读一下上周的需求文档""往知识库写份周报",全得人工 copy,特别拧巴。
于是我给零一文档实现了 MCP(Model Context Protocol,2024-11-05 规范),支持 Streamable HTTP。Cursor、Claude Desktop、自建 Agent、甚至 CI 流水线,都能用标准协议来读我的知识库和文档。
端点很简单:
http
POST /api/v1/mcp
Authorization: Bearer mcp_<token>
Content-Type: application/json
MCP-Protocol-Version: 2024-11-05
权限用 Scope 控制,而且 MCP 的 Token 跟登录用的 JWT 是完全分开的两套------这点我特别坚持,因为 Agent 的凭证不能跟人的账号混在一起。
| Scope | 说明 |
|---|---|
kb:read / kb:write |
知识库与目录节点的读 / 写 |
doc:read / doc:write |
文档的读 / 写(含多维表写入) |
ai:rag |
向量语义检索与索引 |
在 Cursor 里接进来,就一段配置:
json
{
"mcpServers": {
"lingyi-doc": {
"url": "https://your-domain.com/api/v1/mcp",
"headers": { "Authorization": "Bearer mcp_xxxxxxxx" }
}
}
}
接上之后一个典型工作流就通了:list_knowledge_bases → create_kb_document → update_document(写 Markdown)→ embed_document(建索引)→ search_knowledge(验证检索)。你的 Agent 从此能自己写文档、自己建索引、自己检索,不用再人工搬运。
MCP 的完整设计(Token 怎么签、Scope 怎么划、有哪些 Tools / Resources、审计怎么做)我都公开在仓库的 docs/design/mcp-module-design.md,欢迎照着改、照着提 PR。
能自己跑起来:Docker 自托管
这点对政企和金融机构特别关键------数据不能出域,SaaS 直接出局。所以我没把"私有部署"做成付费服务,而是直接做成了开源能力,目标是一行命令能起来。
bash
cp deploy/docker/.env.example deploy/docker/.env
npm run docker:up -- --with-mysql --migrate
# Web:http://127.0.0.1/ 管理后台:http://127.0.0.1/admin/
环境要求就三样:Node.js 18+、MySQL 8 / PostgreSQL 15、Redis 6+。没别的依赖了。
聊点虚的:10 年前端,在 AI 时代到底值钱在哪
前面说了协同、MCP、私有部署这些实的,但得回到我最开始说的那句话------我做这个系统、写这篇东西,最大的动力,其实不是哪一个技术多酷,而是想借它弄清楚一件事:AI 时代,像我这样一个写十年的前端,价值到底在哪。
你如果只想看技术可以划走,但我觉得这比技术重要。也正是这件事,才让我愿意一个人带着一群 AI,把这么个系统从 0 熬到真有人用。
我干了十年,清楚地记得以前前端拼的是什么:手速、记 API、熬夜、踩坑经验。这些东西,现在 AI 比你快、比你全、还不知疲倦。
那咱们的个人价值去哪了?这两年我跟 AI 搭伙干活,慢慢有点体会:
第一,从"写代码"变成"定义问题"。 一个模糊的需求丢过来,能把它拆成清晰方案的人,稀缺。AI 再强,也得有人告诉它"我要的是什么、边界在哪、做到什么程度算对"。定义问题的能力,AI 现在还替代不了。
第二,从"实现"变成"判断"。 AI 能给你十个方案,但你得选对的那个,还得说清为什么。这种取舍、这种"我知道这里该妥协、那里不能让步"的直觉,是十年踩坑换来的,不是 prompt 能催出来的。
第三,从"单兵"变成"对结果负责"。 部署挂了、用户骂了、数据错了,最后找的还是你。AI 不会半夜被叫起来救火,也不会为这个系统的死活承担责任。能扛事的人,永远值钱。
常有人问:一个人加 AI,能顶一个团队吗?
我的答案是:能顶"把东西做出来",顶不了"把东西兜底好"。真正能用的产品,背后得有人为它负责,得有人去做那些没人愿意做、但必须做的事------部署、运维、回用户消息、在几个都说得通的方案里拍板。AI 帮我把 80% 的体力活干掉了,但剩下那 20% 的决定权,我建议还是握在自己手里。
说到底,个人价值可能不再是"你会多少框架、记多少 API",而是:你能不能把一个东西,从 0 真的做成 1,并且让它真的被用起来。
收个尾
零一文档已经开源了。它不完美------多维表格、思维笔记、白板现在能跑能玩,富文本和问卷还在补;MCP 模块的设计文档我全公开了。它是我一边用、一边被用户(也就是那几十个团队)催着改出来的,不是什么精心包装的 demo。
开源地址:github.com/James-Nie/l...
在线体验(登录即用):lingyidoc.com
写这篇不是想说服你用什么,而是想找个地方聊聊。如果你也在想------
- 前端在 AI 时代该怎么定位;
- 一个人带 AI 做项目,怎么扛住"既要又要";
- 技术人的个人价值,到底该往哪放;
- 或者你就在搞文档协作 / 私有化部署 / Agent 接知识库,踩过什么坑------
评论区见,咱慢慢聊。不卖课,不私域,就聊点真东西。