# Package 概览

> 按 Core、History、Thread Comment、Worktree 与 Office Exchange 了解 Collaboration SDK 的公开 package。

- Human documentation: [https://office.univer.ai/zh-CN/collaboration/packages](https://office.univer.ai/zh-CN/collaboration/packages)

- Agent Markdown: [https://office.univer.ai/zh-CN/collaboration/packages.md](https://office.univer.ai/zh-CN/collaboration/packages.md)

- Language: `zh-CN`

- Source file: `content/docs/collaboration/packages.zh-CN.mdx`

- Upstream source: [https://github.com/dream-num/office.univer.ai/blob/main/content/docs/collaboration/packages.zh-CN.mdx](https://github.com/dream-num/office.univer.ai/blob/main/content/docs/collaboration/packages.zh-CN.mdx)

---

本页是 Collaboration SDK 的选包地图。先组装 Core Collaboration，再按产品需求增加扩展模块；不需要
一次安装所有 package。

## Core Collaboration

Core Collaboration 提供浏览器协同、服务端协议、OT、revision 与持久化主链路。

| 运行位置     | Package                                                                                                                    | 主要作用                                 |
| -------- | -------------------------------------------------------------------------------------------------------------------------- | ------------------------------------ |
| Browser  | [`@univerjs-pro/collaboration`](https://www.npmjs.com/package/@univerjs-pro/collaboration)                                 | 注册浏览器协同基础能力                          |
| Browser  | [`@univerjs-pro/collaboration-client`](https://www.npmjs.com/package/@univerjs-pro/collaboration-client)                   | 加载 Unit、提交 changeset 并维持实时同步         |
| Browser  | [`@univerjs-pro/collaboration-client-ui`](https://www.npmjs.com/package/@univerjs-pro/collaboration-client-ui)             | 提供协同状态相关 UI 与样式                      |
| Server   | [`@univerjs-pro/collaboration-transport-node`](https://www.npmjs.com/package/@univerjs-pro/collaboration-transport-node)   | 接收 Node.js HTTP 与 WebSocket 流量       |
| Server   | [`@univerjs-pro/collaboration-endpoint`](https://www.npmjs.com/package/@univerjs-pro/collaboration-endpoint)               | 实现 Client 协议、Session、Room 与 Presence |
| Server   | [`@univerjs-pro/collaboration-service`](https://www.npmjs.com/package/@univerjs-pro/collaboration-service)                 | 管理 Unit、OT、revision 与核心 Service API  |
| Database | [`@univerjs-pro/collaboration-database-memory`](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-memory) | 进程内存储，用于测试、示例和临时开发                   |
| Database | [`@univerjs-pro/collaboration-database-sqlite`](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-sqlite) | SQLite 持久化，用于开发、测试、本地和小规模场景          |

Core Server 需要 Transport、Endpoint、Service 和一个 Database Adapter。Memory 与 SQLite 是同一
Adapter 合同的两种实现，通常只选择其中一个。

## History

History 从 Core 的 Unit 创建和 changeset commit Event 建立版本历史索引。

| 运行位置     | Package                                                                                                                                    | 主要作用                     |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------ |
| Browser  | 复用 Core Client/UI                                                                                                                          | 展示和读取历史入口                |
| Server   | [`@univerjs-pro/collaboration-history-service`](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-service)                 | 建立并查询历史索引                |
| Server   | [`@univerjs-pro/collaboration-history-endpoint`](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-endpoint)               | 向 Client 提供 History 协议能力 |
| Database | [`@univerjs-pro/collaboration-history-database-sqlite`](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-database-sqlite) | 保存 History 派生索引          |

History 数据是可重建的派生索引，Core changeset 仍是 Unit 内容的权威来源。

## Thread Comment

Thread Comment 管理 Sheet 与 Doc 的评论正文、回复和 solved 状态。

| 运行位置     | Package                                                                                                                                    | 主要作用                             |
| -------- | ------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------- |
| Browser  | 复用 Core Collaboration package                                                                                                              | 使用评论 Client 与 UI 能力              |
| Server   | [`@univerjs-pro/collaboration-comment-service`](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-service)                 | 管理评论操作与 `commentCommitted` Event |
| Server   | [`@univerjs-pro/collaboration-comment-endpoint`](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-endpoint)               | 提供评论协议并复用 Unit Room 发布更新         |
| Database | [`@univerjs-pro/collaboration-comment-database-memory`](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-memory) | 评论的进程内存储实现                       |
| Database | [`@univerjs-pro/collaboration-comment-database-sqlite`](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-sqlite) | 评论的 SQLite 持久化实现                 |

Comment Adapter 保存评论数据；随内容变化的 anchor 仍属于 Core snapshot 与 changeset。

## Worktree

Worktree 提供隔离 draft、状态流转与逐 Unit 合入。

| 运行位置     | Package                                                                                                                                      | 主要作用                         |
| -------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- |
| Browser  | [`@univerjs-pro/collaboration-worktree-client`](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-client)                   | 连接 Worktree draft、状态与合入能力    |
| Server   | [`@univerjs-pro/collaboration-worktree-service`](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-service)                 | 管理 draft changeset、状态和 merge |
| Server   | [`@univerjs-pro/collaboration-worktree-endpoint`](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-endpoint)               | 向 Worktree Client 提供协议能力     |
| Database | [`@univerjs-pro/collaboration-worktree-database-memory`](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-memory) | Worktree 的进程内存储实现            |
| Database | [`@univerjs-pro/collaboration-worktree-database-sqlite`](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-sqlite) | Worktree 的 SQLite 持久化实现      |

Worktree Service 最终通过 Core Service 合入 trunk，因此两套 Service 的 Middleware 都需要按边界配置。

## Office Exchange

Office Exchange 是文件转换与 Collaboration Service 的组合工作流，不拥有独立的协同 Database
Adapter。

| 运行位置    | Package                                                                                                      | 主要作用                               |
| ------- | ------------------------------------------------------------------------------------------------------------ | ---------------------------------- |
| Browser | [`@univerjs-pro/exchange-client`](https://www.npmjs.com/package/@univerjs-pro/exchange-client)               | 提供浏览器文件交换基础能力                      |
| Browser | [`@univerjs-pro/sheets-exchange-client`](https://www.npmjs.com/package/@univerjs-pro/sheets-exchange-client) | 提供 Sheet 文件导入导出能力                  |
| Server  | [`@univerjs-pro/exchange-node`](https://www.npmjs.com/package/@univerjs-pro/exchange-node)                   | 在 Node.js 中转换 Office 文件与 Univer 数据 |

导入时由应用把转换结果交给 `createUnitFromSnapshot()`；导出时通过 Core Service 读取 confirmed Unit
revision。文件、任务与业务 API 仍由应用管理。

## 选择规则

1. 从 [Quick Start](https://office.univer.ai/zh-CN/collaboration/quick-start.md) 的 Core package 开始。
2. 在 Memory、SQLite 与自定义实现中选择一个 Core Database Adapter。
3. 只安装产品实际启用的扩展模块 package。
4. 即使多个模块使用同一个 SQLite 文件，也要分别创建各自的 Adapter。

模块关系见[协同扩展模块](https://office.univer.ai/zh-CN/collaboration/extensions.md)，可运行组合见[示例索引](https://office.univer.ai/zh-CN/collaboration/examples.md)。
