未来真正出色的企业,将是能够设法使各阶层人员全心投入,并有能力不断学习的组织。——彼得·圣吉

Univer:为 AI Agent 准备的一体化 Office 运行时

项目地址:https://github.com/dream-num/univer

当表格、文档、演示文稿不再只是静静躺在桌面上的文件,而是开始参与应用交互、服务端处理、自动化流程与 AI Agent 的工作链路时,一个更底层的问题便浮现出来:能否拥有一套可嵌入、可组合、可扩展的 Office 能力底座?

Univer 给出的答案,是把电子表格、文档、演示文稿、结构化数据体验、画板以及 PDF 相关能力收拢到同一个运行时思路中。它并不把自己定位成一个单纯的文件查看器,也不试图将开发者锁进固定的产品形态,而是将 Office 应用拆解为可以自由组织的构件,让开发者在自己的产品中搭建生产力界面。

它像一座可拆装的工作台:需要表格,就装上表格能力;需要文档,就接入文档模块;希望在浏览器中呈现可编辑界面,或者在 Node.js 中完成无界面处理,也可以沿着同一套架构继续前进。

不止是编辑器,更是一套构建生产力界面的 SDK

Univer 是一个开源 Office SDK,目标是帮助开发者在自己的产品中创建 Office 应用体验。

它所覆盖的方向包括电子表格、文档、演示文稿、Bases、Boards,以及仍在推进中的 PDF 能力。这里的重点并不只是“打开一个文件”或“展示一张表格”,而是让这些内容成为产品内部可以编辑、计算、组织与扩展的工作表面。

对于 SaaS 产品、内部工具、BI 工作流和 AI 应用而言,嵌入表格或文档编辑能力,往往意味着需求会不断生长。最初也许只是展示数据,随后可能需要支持公式、范围选择、格式设置、筛选排序、批注、搜索替换,甚至让自动化任务直接参与内容处理。

Univer 的定位正是为这样的生长预留空间。它希望开发者能够从需要的能力出发,逐步拼装出自己的 Office 体验,而不是被一个不可拆分的大型应用牵着走。

一个运行时,两种工作姿态

Univer 的一个核心特征,是浏览器与 Node.js 之间的同构设计。

在浏览器里,它可以支撑可交互的 Office 应用界面;在 Node.js 中,它又可以承载工作簿和文档的无界面处理。界面与服务端处理并不是两套彼此陌生的世界,而是围绕同一套架构展开。

这让很多工作流可以自然延伸:

  • 在产品界面中嵌入电子表格或文档编辑
  • 在服务端执行工作簿和文档处理
  • 进行公式计算与自动化任务
  • 让 AI Agent 检查、修改和验证 Office 内容
  • 让浏览器中的交互界面与 Node.js 中的处理逻辑协同工作

Office 内容因此不再只能由用户手动操作,也能够进入程序化处理的轨道。

插件优先,让能力按需抵达

Univer 的架构以插件为中心。

每一种能力都可以作为可组合的插件出现。开发者可以添加、移除、替换、延迟加载或扩展功能,而不必把整个技术栈一次性搬进应用。这种方式让 Office 能力不再像一整块封闭的巨石,而更像一组可以按产品需求排列组合的模块。

当产品希望快速拥有一个可用的工作表体验时,可以使用预设集合。预设模式将所需的插件、Facade API 注册与样式整理为更短的接入路径。

当产品需要更细粒度的控制时,则可以使用插件模式。开发者可以自行决定加载哪些包、如何组织依赖、如何引入样式、如何合并语言包,以及怎样配置运行时。

两种方式并不冲突。

预设模式像一条已经铺好的道路,适合尽快进入应用集成;插件模式则像一套更精细的施工工具,适合希望深入参与每一个组成部分的场景。

从复杂工作表到大面积编辑界面

表格和文档最容易被低估的地方,在于它们并不是普通的页面组件。

一个工作簿中可能有公式、数值格式、筛选、排序、数据验证、条件格式、超链接、评论、查找替换、注释、绘图等不同层次的行为。一个可编辑的文档表面,也需要面对富文本模型、列表、超链接、评论、快速插入与绘图集成等内容。

Univer 通过基于 Canvas 的渲染方式与专用公式引擎,为复杂工作簿和大型可编辑表面提供支撑。渲染层可被不同文档类型共享,公式能力则成为表格逻辑的重要部分。

这套组合关注的并不只是把内容“画出来”,还包括让复杂内容在编辑过程中保持响应。

在主题层面,Univer 的 UI 组件与渲染引擎能够适应明亮和深色主题。对于需要融入现有产品设计体系的开发者而言,Office 区域不必成为视觉上突兀的一块孤岛。

Facade API:让操作拥有统一的入口

Office 功能往往横跨很多对象:工作簿、工作表、区域、公式、文档、命令、事件。

Univer 提供 Facade API,希望用更高层、更一致的 API 表面来组织这些能力。无论运行在浏览器还是 Node.js,开发者都可以围绕统一的入口处理工作簿、范围、公式和文档。

这意味着,业务层不必始终面对最底层的模块拼接细节。

例如,在完成 Univer 实例与插件注册后,可以创建一个空工作簿:

1
2
3
const univerAPI = FUniver.newAPI(univer)

univerAPI.createWorkbook({})

这段代码很短,却揭示出一个清晰的方向:复杂能力可以在底层保持模块化,而上层使用体验则尽量拥有统一的表达方式。

AI Agent 走进 Office 工作流

Univer 在项目描述中将自己称为面向 AI Agent 的 Office Harness。

这里的重点,是让 AI Agent 不只是生成一段文字或返回一份结论,而能够进入 Office 内容的处理过程。Agent 可以通过结构化 API 检查和修改 Office 内容,也可以通过内容检查、渲染截图与布局诊断来验证输出结果。

这使得 AI 的工作不止停留在“生成”,而开始接近“操作”和“校验”。

README 中描述了这样的协作方向:

  • Agent 通过结构化 API 检查和修改 Office 内容
  • Agent 可以通过内容检查、渲染截图与布局诊断验证结果
  • Agent 可以在隔离的草稿环境中处理内容
  • 人们可以审阅 Agent 所做的改动,并决定是否合并

对于需要兼顾自动化处理与人工审阅的 Office 场景,这样的工作流让机器与人的职责更加清楚。Agent 负责执行、检查和准备结果,人则保留审核与合并决策的角色。

从快速接入开始

如果希望使用预设模式快速创建 Sheets 核心能力,可以安装预设包:

1
pnpm add @univerjs/presets @univerjs/preset-sheets-core

随后创建 Univer 实例,并加载 Sheets 核心预设:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'
import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'

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({})

页面中需要提供对应的容器:

1
<div id="app" style="height: 100vh"></div>

预设模式将必需的 Facade API 注册和样式纳入集合中,适合希望以较少配置获得 Sheets、Docs 或 Node.js 运行配置的场景。

深入组合时,插件模式提供更细的掌控力

当产品需要严格控制包依赖、配置依赖、延迟加载或自定义运行时组合时,插件模式会成为更直接的选择。

在插件模式下,开发者可以分别引入核心能力、设计系统、文档插件、表格插件、公式引擎、渲染引擎、UI 插件以及对应的语言包和样式资源。随后通过注册插件的方式,把需要的功能逐步装配到 Univer 实例中。

1
2
3
4
5
6
7
8
9
10
11
univer.registerPlugin(UniverRenderEnginePlugin)
univer.registerPlugin(UniverFormulaEnginePlugin)
univer.registerPlugin(UniverUIPlugin, { container: 'app' })
univer.registerPlugin(UniverDocsPlugin)
univer.registerPlugin(UniverDocsUIPlugin)
univer.registerPlugin(UniverSheetsPlugin)
univer.registerPlugin(UniverSheetsUIPlugin)
univer.registerPlugin(UniverSheetsFormulaPlugin)
univer.registerPlugin(UniverSheetsFormulaUIPlugin)
univer.registerPlugin(UniverSheetsNumfmtPlugin)
univer.registerPlugin(UniverSheetsNumfmtUIPlugin)

这种组织方式让产品可以把能力的边界握在自己手中。需要什么,就注册什么;希望怎样组合,就怎样组合。

可构建的能力版图

在开源能力范围内,Univer 覆盖了多个 Office 产品表面。

Sheets 方向包含工作簿、工作表、范围、选择、公式、数值格式、筛选、排序、数据验证、条件格式、超链接、评论、查找替换、注释、表格与绘图等能力。

Docs 方向包含富文档模型、编辑 UI、列表、超链接、绘图集成、评论、快速插入与共享文档架构。

Slides 方向拥有正在积极开发中的演示文稿数据模型和 UI 包。

Bases 方向则提供了在插件、命令与模型架构之上构建自定义结构化数据体验的路径。

运行时层面,Univer 支持浏览器应用、Node.js 无界面使用、Web Worker 与 RPC 模式、多实例使用以及面向服务端的自动化。

集成层面,它可以与 React、Vue、Web Components、框架模板、主题系统、本地化能力和自定义插件结合。

其中,Sheets 是目前最成熟的产品表面。Docs 与 Slides 则在同一套 SDK 架构中持续演进。

开源核心与商业扩展的边界

Univer 仓库包含开源核心与第一方开源插件,并以 Apache-2.0 许可证发布。

核心 SDK、插件系统、渲染引擎、公式引擎、Facade API、主题、国际化与框架适配器,都属于开源基础能力的一部分。项目也明确区分了开源能力与 Univer Pro 的商业扩展层。

这种边界让开源包的能力范围更加清晰。公开的 @univerjs/* 包可以独立使用,Univer Pro 是可选扩展,而不是使用公开 SDK API 的前提。

对于希望从开源基础能力出发搭建产品的团队而言,这种分层让技术选择更容易落在可理解、可组合的范围内。

面向浏览器、Node.js 与工程化环境

Univer 的浏览器运行时以 Chrome 88 为编译目标,并面向 Edge 88 及以上、Firefox 90 及以上、Chrome 88 及以上、Safari 14.1 及以上和 Electron 12 及以上环境。

它依赖 Intl.Segmenter。当目标浏览器或运行时未提供该能力时,需要引入相应的 polyfill。

在构建工具方面,README 推荐 Vite、esbuild 或 Webpack 5。对于不支持 package.jsonexports 字段的构建工具,可能需要额外的路径映射。

视图层构建在 React 18 之上,支持 React 18 与 React 19,并为 React 16.9 及以上版本和 React 17 提供最小兼容支持。

在服务端运行方面,Headless Univer 支持 Node.js 18.17.0 及以上版本。若需要参与该单仓库的开发,则需要 Node.js 22.18 及以上版本与 pnpm 11 及以上版本。

一座为生产力应用准备的单仓库

Univer 的仓库结构将核心包、示例、共享工具、测试项目和文档放在同一片工程空间中。

  • packages 承载核心包、引擎、文档类型、UI 插件与功能插件
  • examples 提供用于本地浏览器开发的一体化 Vite 工作台
  • common 存放共享内部工具、Storybook 与通用工具
  • tests 存放额外的集成测试项目
  • docs 存放架构说明、图片与仓库级文档

本地开发环境准备好后,可以安装依赖并启动开发工作台:

1
2
pnpm install
pnpm dev

仓库中也提供了面向构建、测试、类型检查、代码检查和 UI 组件开发的命令:

1
2
3
4
5
pnpm build
pnpm test
pnpm typecheck
pnpm lint
pnpm storybook:dev

其中,pnpm dev 用于启动包含 Sheets、Docs 与 Slides 的一体化工作台,并使用 Vite 的开发能力与热更新。

结语

Univer 所呈现的,不是一张单独的表格,也不是一个孤立的文档编辑器。

它更像是一套面向产品构建的 Office 基础设施:用插件拆分能力,用 Canvas 承载大型编辑表面,用公式引擎支撑表格逻辑,用 Facade API 统一操作入口,用浏览器与 Node.js 的同构设计连接交互界面和服务端处理,并将 AI Agent 的程序化编辑、验证和人工审阅纳入同一条工作流。

当 Office 内容开始从静态文件变成可计算、可编辑、可自动化、可协作的产品能力时,Univer 提供了一种值得展开的构建方式。