
把 Excel、Word、PPT 搬进浏览器不是新闻,Google Docs 十几年前就做到了。真正的新问题是:当企业想让 AI Agent 直接操作表格和文档时,这些为人类交互设计的办公软件几乎都接不上——Agent 拿不到结构化的操作接口,改一个单元格要靠模拟点击,改错了也没法回滚审查。GitHub 上的 dream-num/univer 项目给出了另一个方向的答案:它把整个办公套件做成一套开源 SDK,官方定位是 The Office Harness for AI Agents,一份办公文件的目标用户由单独的人类扩展为人和 Agent 共用。
这个仓库目前约 1.6 万 star,最近一天新增超过一千,成为 GitHub Trending 上增速最快的项目之一。它背后是中国团队 DreamNum——更早之前做过 3 万 star 的表格项目 Luckysheet,Univer 是团队推倒重来的第二代架构。
从 Luckysheet 到 Univer:一次架构重来
Luckysheet 的经验值得先交代,因为它解释了 Univer 的架构选择。Luckysheet 是 2020 年前后流行的开源表格库,目标是把 Excel 的交互体验复刻到网页上, star 数一度涨到 3 万级别。但它的代码结构把数据、渲染、交互绑在一起,开发者很难只取其中一层,想嵌入自己的产品或者跑在服务端都很困难。DreamNum 在官方文档里提供过专门的 Luckysheet 迁移指南,给出的判断是:旧架构无法演进到目标形态,Univer 从第一行代码起就是为可拆分、可嵌入、可在服务端运行设计的。
这套设计在仓库结构里能直接看到。Univer 是一个 pnpm monorepo,packages/ 目录下按层拆分:core 是数据模型与命令系统,engine-render 是 Canvas 渲染引擎,engine-formula 是公式引擎,sheets、docs、slides 是三种文档类型的功能插件,ui、design 承载界面组件。所有能力都以插件形式挂在 Univer 实例上,功能可以按需加载、替换或整个去掉。开发者有两条上手路径:Plugin Mode 手动挑选十几个包精确组装;Preset Mode 用一行预设拿到开箱即用的配置,官方推荐原型阶段用 Preset、产品化阶段切 Plugin。
一段最小可运行的代码长这样(Preset Mode):
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import '@univerjs/preset-sheets-core/lib/index.css'
const { univerAPI } = createUniver({
locale: LocaleType.EN_US,
locales: {
[LocaleType.EN_US]: mergeLocales(UniverPresetSheetsCoreEnUS),
},
presets: [
UniverSheetsCorePreset({ container: 'app' }),
],
})
univerAPI.createWorkbook({})十行代码得到一个带公式引擎的完整表格编辑器。同样的 API 在浏览器和 Node.js 里都能跑,这是 Univer 架构里对 Agent 最关键的一个性质:同构(isomorphic)。
同构运行时:Agent 干活的技术前提
多数办公软件的数据处理逻辑和界面渲染长在一起,想在没有显示器的服务器上让 Agent 批量处理表格,要么起一个完整的浏览器实例,要么退而求其次只做文件格式转换。Univer 的做法是把整套文档模型、命令系统和公式引擎做成不依赖 DOM 的纯 TypeScript 层,浏览器里套上 UI 就是一个编辑器,Node.js 里裸跑就是无头(headless)处理引擎,两条路径共享同一套代码。
官方文档把这个能力归纳为三层 SDK:Web SDK 负责嵌入编辑器,Server SDK 负责协作与文件交换,AI SDK 专门面向 Agent 工作流。AI SDK 是纯 TypeScript 的 Node.js 入口,提供加载、理解、修改、校验 Univer Unit(一个 Unit 就是一份文档实例,比如一个工作簿)的完整能力。它的设计取舍很克制:AI SDK 不定义固定的产品 CLI,命令名、参数、鉴权、输出格式全部由上层应用自己决定,官方只提供可组合的能力包。Agent 操作文档的完整链路是:加载 Unit 到协作运行时 → 通过结构化 Inspection 读内容 → 执行 Univer Facade API 改内容 → 用截图和 Layout Lint 校验渲染结果。
校验这一步值得单独说。LLM 生成表格内容时,结构化数据对了但版式可能溢出、重叠,人眼一眼能看出的问题 Agent 自己看不到。Univer 给 Agent 提供了两条自检通道:Screenshot 把渲染结果变成图片交给多模态模型检查,Layout Lint 直接输出结构化的排版诊断(幻灯片文字超出页面、元素重叠这类问题会被显式报告)。Agent 可以设自己的验证条件,改到满足为止再交付,这比「生成完就交付、错了等人发现」的工作流可靠得多。
Worktree:Agent 改文件的 Git 工作流
Univer 处理 Agent 可信问题的方案借鉴了 Git 的模型。Agent 对文档的所有修改默认发生在一个隔离的 Worktree(工作树)里,原件(Trunk)不动;Agent 在自己的 Worktree 里多轮编辑、自检,完成后标记 ready 并返回一个本地 Viewer URL;人打开链接,在只读的 View 和 Compare 模式里审查变更,然后决定合并、打回还是丢弃。每一步修改都有版本记录,可以恢复到任意版本。
多 Agent 并发也建立在这个机制上:多个 Agent 同时操作同一份文件时各拿各的 Worktree,互不踩踏,产出统一进入人工审查队列。Compare 视图做得相当细:Sheet 对比支持内容与格式独立过滤、公式显示切换,差异以语义化的 insert/delete/update 条目呈现,每条带稳定的属性路径和变更前后的值,Agent 程序读这份 diff 和人看彩色高亮读的是同一份数据。
文件层面同样下了功夫。.univer 文件用 SQLite 存储文档、版本、Worktree 和可重建的历史索引;格式升级走只读识别、逐字节备份、候选校验、原子替换的流程,升级失败不会碰源文件。对一个要被 Agent 高频读写的容器格式来说,这些防御性设计不是多余的。
配套的开源工具已经成体系:univer-cli 给 Agent 一个本地命令行工作台,能创建和编辑 Sheet、Doc、Slide、Base(多维表格)、Board(画布)五种内容,也能直接导入导出 Excel、Word、PPT 格式;univer-mcp 提供 MCP 接口,用自然语言驱动表格;univer-sdk-skills 是给 Agent 用的技能包,一条 npx skills add dream-num/skills -s univer-cli -g 就能把操作 Univer 的能力装进 Claude Code 这类 Agent。README 里还列出了 DeepSeek Harness、WorkBuddy、OpenClaw 等第三方 Agent 的官方 Office 插件。
数字检验:Agent 真会做表格吗
「Agent 能操作办公文档」和「Agent 能把表格做对」是两回事。后者有公开基准可查:SpreadsheetBench 用 912 道来自真实场景的表格操作题评测 Agent,Univer 官方团队的 UniverAgent 在 2025 年 12 月的榜单上以 68.86% 的 pass@1 准确率排到第一,同榜单 Excel 内置的 Copilot Agent Mode 是 57.2%,第三方商业方案 Bluebox 是 62.9%,人类基线是 71.3%。68.86% 意味着每三道真实表格任务仍然会错一道,离「可完全托管」有明确距离,但已经越过了一个可用的门槛。官方同时引用了 OpenAI 的 GDPval 基准(1320 项跨 44 个职业的真实任务,其中 75 项表格类)做持续内部评测。

能力分布上有清晰的边界。开源核心包含表格编辑、公式(500+ 函数,官方标称计算性能对标 Excel、容量上限 1000 万单元格)、数字格式、筛选排序、数据验证、条件格式、批注、查找替换;文档类型中 Sheets 最成熟,Docs 共享同一套架构持续演进,Slides 还在开发期。实时协作、编辑历史、xlsx 高保真导入导出、图表、数据透视表放在商业版 Univer Pro,Apache-2.0 的开源部分单独可用,官方文档明确要求 OSS 章节不得暗示 Pro 能力——这个边界划分在商业化开源项目里算干净。
对开发者的实际意义
如果你的产品需要嵌入表格或文档能力,Univer 提供的是 Luckysheet 想做而没做到的东西:可拆分的插件化 SDK、服务端无头运行、一套 API 覆盖浏览器与 Node.js。这条路上它面对的对手是 OnlyOffice、Handsontable、Luckysheet 自己,Univer 的差异化押注在「Agent 原生」——同构运行时加 Worktree 审查流瞄准的场景正是「人机同文件协作」,传统嵌入场景只是它的基础盘。
如果你在做 Agent 应用,Univer 展示了一种值得参考的工程结构:不给 Agent 发明专有协议,而是把既有办公文档抽象成 Unit,用结构化 API 加截图自检构成闭环,用 Git 式 Worktree 解决「AI 改的东西谁来把关」的信任问题。AI SDK 文档里那句「命令名、鉴权、输出由应用自己拥有」的取舍,比直接提供一个黑盒 Agent 工具更接近工程师的真实集成路径。
仓库地址:https://github.com/dream-num/univer ,Apache-2.0 协议,快速上手文档在 docs.univer.ai。
来源: