# 套件概覽

> 了解 Collaboration SDK 中 Core、History、Thread Comment、Worktree 與 Office Exchange 的公開套件。

- Human documentation: [https://docs.univer.ai/zh-TW/server/collaboration/packages](https://docs.univer.ai/zh-TW/server/collaboration/packages)

- Agent Markdown: [https://docs.univer.ai/zh-TW/server/collaboration/packages.md](https://docs.univer.ai/zh-TW/server/collaboration/packages.md)

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

- Source: [collaboration/packages.zh-TW.mdx](https://github.com/dream-num/documentation/blob/dev/content/server/collaboration/packages.zh-TW.mdx)

---

本頁協助選擇 Collaboration SDK 套件。先組合核心協同，再加入產品需要的擴充模組，無需安裝所有套件。

## Core Collaboration

核心協同提供瀏覽器協同、伺服器協定、OT、修訂版本與持久化的主要流程。

| 執行環境       | 套件                                                                                                                           | 主要職責                                              |
| ---------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| 瀏覽器        | [**@univerjs-pro/collaboration**](https://www.npmjs.com/package/@univerjs-pro/collaboration)                                 | 註冊瀏覽器基礎協同能力                                       |
| 瀏覽器        | [**@univerjs-pro/collaboration-client**](https://www.npmjs.com/package/@univerjs-pro/collaboration-client)                   | 載入 Unit、提交變更集並維持即時同步                              |
| 瀏覽器        | [**@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、修訂版本與核心 Service API                    |
| 資料庫        | [**@univerjs-pro/collaboration-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-memory) | 用於測試、範例與臨時開發的程序內儲存                                |
| 資料庫        | [**@univerjs-pro/collaboration-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-sqlite) | 適用開發、測試、本機及小規模使用的 SQLite 持久化                      |
| Multi-node | [**@univerjs-pro/collaboration-cluster-redis**](https://www.npmjs.com/package/@univerjs-pro/collaboration-cluster-redis)     | 基於 Redis 的 pub/sub 介面卡與 Session Ticket 儲存，用於多節點部署 |

核心伺服器需要 Transport、Endpoint、Service 與一個 Database Adapter。Memory 與 SQLite 實作相同契約，通常擇一使用。多節點部署時，還需要一個 pub/sub 介面卡與一個共用的 Session Ticket 儲存。兩者的契約（`IPubSubAdapter`、`ISessionTicketStore`）由 Endpoint 定義，SDK 提供 Redis 實作。

## History

History 根據核心 Unit 建立與變更集提交事件建立版本歷史索引。

| 執行環境   | 套件                                                                                                                                           | 主要職責                   |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- |
| 瀏覽器    | 重用核心 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 協定 |
| 資料庫    | [**@univerjs-pro/collaboration-history-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-database-sqlite) | 儲存衍生的 History 索引       |

歷史資料是可重建的衍生索引，Unit 內容仍以核心變更集為準。

## Thread Comment

Thread Comment 管理 Sheets 與 Docs 的留言本文、回覆及解決狀態。

| 執行環境   | 套件                                                                                                                                           | 主要職責                          |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| 瀏覽器    | 重用核心協同套件                                                                                                                                     | 使用 Comment Client 與 UI 能力     |
| Server | [**@univerjs-pro/collaboration-comment-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-service)                 | 管理留言操作與 `commentCommitted` 事件 |
| Server | [**@univerjs-pro/collaboration-comment-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-endpoint)               | 提供留言協定，透過 Unit Room 發布更新      |
| 資料庫    | [**@univerjs-pro/collaboration-comment-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-memory) | 程序內留言儲存                       |
| 資料庫    | [**@univerjs-pro/collaboration-comment-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-sqlite) | SQLite 留言持久化                  |

Comment Adapter 儲存留言資料。隨內容移動的錨點仍屬於核心快照與變更集。

## Worktree

Worktree 提供隔離草稿、狀態轉換與逐 Unit 合併。

| 執行環境   | 套件                                                                                                                                             | 主要職責                    |
| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
| 瀏覽器    | [**@univerjs-pro/collaboration-worktree-client**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-client)                   | 接入 Worktree 草稿、狀態與合併能力  |
| Server | [**@univerjs-pro/collaboration-worktree-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-service)                 | 管理草稿變更集、狀態與合併           |
| Server | [**@univerjs-pro/collaboration-worktree-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-endpoint)               | 提供 Worktree Client 協定能力 |
| 資料庫    | [**@univerjs-pro/collaboration-worktree-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-memory) | 程序內 Worktree 儲存         |
| 資料庫    | [**@univerjs-pro/collaboration-worktree-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-sqlite) | SQLite Worktree 持久化     |

Worktree Service 最終透過 Core Service 合併到主幹，因此兩個 Service 邊界都須設定 Middleware。

## Office Exchange

Office Exchange 是結合檔案轉換與 Collaboration Service 的應用程式流程，沒有獨立的協同 Database Adapter。

| 執行環境   | 套件                                                                                                             | 主要職責                              |
| ------ | -------------------------------------------------------------------------------------------------------------- | --------------------------------- |
| 瀏覽器    | [**@univerjs-pro/exchange-client**](https://www.npmjs.com/package/@univerjs-pro/exchange-client)               | 提供瀏覽器基礎檔案交換能力                     |
| 瀏覽器    | [**@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 讀取已確認修訂版本。檔案、任務及業務 API 仍由應用程式管理。

## 選擇原則

1. 從[快速開始](https://docs.univer.ai/zh-TW/server/collaboration/quick-start.md)的核心套件開始。
2. 選擇 Memory、SQLite 或自訂 Core Database Adapter 其中之一。
3. 多節點部署時，加上 Redis 的 pub/sub 介面卡與 Session Ticket 儲存。
4. 只安裝產品實際使用的擴充套件。
5. 即使共用同一 SQLite 檔案，各模組也應建立獨立 Adapter。

模組關係請參閱[協同擴充模組](https://docs.univer.ai/zh-TW/server/collaboration/extensions.md)，可執行組合請參閱[範例索引](https://docs.univer.ai/zh-TW/server/collaboration/examples.md)。
