genspark-ai/genoffice

GitHub: genspark-ai/genoffice

GenOffice 是一款跨平台 AI 原生办公套件,将 AI 深度集成到文档、表格、演示和 PDF 编辑工作流中,并以字节级文件往返保证格式完整性。

Stars: 169 | Forks: 32

# GenOffice 一款面向 macOS 和 Windows 的 AI 原生办公套件:文字处理、电子表格、 演示文稿和 PDF —— 五个 Electron 应用共享同一个 engine 层,其设计 以 AI 编辑作为一等公民工作流,而非外挂式的聊天框。 ## 下载 基于 `main` 分支构建的已签名安装包: - **macOS** (Apple Silicon): [GenOffice-0.4.110-arm64.dmg](https://github.com/genspark-ai/genoffice/releases/download/v0.4.110/GenOffice-0.4.110-arm64.dmg) - **Windows** (x64): [GenOfficeSetup-v0.4.110.exe](https://github.com/genspark-ai/genoffice/releases/download/v0.4.110/GenOfficeSetup-v0.4.110.exe) 其他版本请查看 [Releases](https://github.com/genspark-ai/genoffice/releases) 页面。 ## 应用 | App | 产品 | 简介 | | ------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `apps/docs` | **GenOffice Docs** | `.docx` 文字处理软件。字节级保留的往返处理:仅重新生成脏段落(段落 patch),原始文件中的其他内容均保持字节级一致,因此打开和保存操作绝不会破坏 Word 中的布局。分页视图的行度量标准可精确重现原始文档的布局,此外还支持修订追踪、批注、样式、公式和墨迹。 | | `apps/sheets` | **GenOffice Sheets** | `.xlsx` 电子表格。UI 基于开源的 [Univer](https://github.com/dream-num/univer) 核心 (Apache-2.0) 构建,并包含大量自研扩展层;xlsx 导入/导出通过自研的 Rust sidecar(calamine + IronCalc)运行,图表为自研渲染(Konva),此外还包括数据透视表、切片器、条件格式和公式追踪。 | | `apps/slides` | **GenOffice Slides** | `.pptx` 演示文稿。自研的 pptx 解析/渲染/编辑 engine,支持母版、图表、裁剪、墨迹和文本塑形(HarfBuzz 度量)。 | | `apps/pdf` | **GenOffice PDF** | 基于 pdf.js + pdf-lib 的 PDF 查看器/编辑器:批注、表单、大纲、图章、签名、页面操作和打印。 | | `apps/shell` | **GenOffice** | 套件主界面:主屏幕、四个编辑器的标签页托管和自动更新。 | 每个应用都嵌入了相同的 AI 面板:在文档中支持具有版本快照和差异对比的 block 级别 AI 编辑,在其他应用中则提供针对 workbook/slide/PDF 状态的 tool-calling agent。 **AI 提供商。** 这些应用通过登录 Genspark 账户并经由 Genspark 服务端路由模型调用;本地不存储任何 model API key。 ## Engine 包 全部为纯 TypeScript 实现,不依赖 Electron,经过单元测试(UI kit 除外): - `packages/docx-engine` — docx 解析 → block tree(包含 `docxIndex` anchor 和 passthrough),OOXML 片段生成,字节级段落 patch。 - `packages/pptx-engine` / `packages/pptx-render` — pptx 模型与渲染。 - `packages/file-parse` — 用于 AI 附件的文本提取(office 格式, 文本格式)。 - `packages/agent-core` — 每个应用共享的 AI agent 循环和技能组合。 - `packages/ai-provider` — 模型后端的 provider 抽象与流式传输。 - `packages/ai-search` — Genspark 认证 + 网页/图片搜索工具。 - `packages/i18n`, `packages/ui`, `packages/project-store`, `packages/electron-utils` — 共享的 i18n 核心、React UI kit、最近打开的文件存储以及 Electron 主进程 helper。 ## 开发说明 ``` npm install npm run fixtures # generate test .docx fixtures npm test # engine + app unit tests (docs/sheets/slides need no display) npm run typecheck # tsc --noEmit across every workspace npm run dev # all four editors + shell against Vite dev servers npm run dev:docs # a single app (same pattern works per workspace) npm run dist:mac # package macOS dmg (regenerates third-party notices) npm run dist:win # package Windows nsis installer ``` sheets 应用还需要 Rust 工具链来构建其 xlsx sidecar (`cargo` 需要在 PATH 中);`npm run build -w @genoffice/sheets` 会自动编译它。 本地 UI/e2e 驱动脚本(Playwright + Electron,用于本地验收测试, 默认不提交)位于 [`scripts/drivers/`](scripts/drivers/README.md) 中。 ## 架构说明(docx 往返) ``` open docx ─► archive original by hash (never touched) ─► docx-engine parses word/document.xml top-level elements (w:p / w:tbl / …) ─► Block tree, each block anchored by docxIndex + original XML slice ─► TipTap streaming editor (manual + AI editing, dirty tracking) save ─► dirty blocks → OOXML fragments (referencing existing styles only) ─► splice into original document.xml (untouched blocks keep original bytes) ─► repack zip; all other entries copied byte-for-byte ``` 在 sheets 和 slides 中也秉持相同的理念:原始文件是 唯一事实来源,编辑内容作为狭窄的 patch 应用,编辑器未触及的所有内容在往返过程中保持原样。 ## 安全 请参阅 [SECURITY.md](SECURITY.md) 了解进程安全态势(renderer 沙箱化、IPC 校验、外链管控)以及 AI 生成内容的威胁模型。 ## 第三方声明 `npm run notices` 会重新生成打包的第三方许可证摘要 (`tools/gen-third-party-notices.mjs`);所有运行时依赖均为 MIT/Apache-2.0/OFL,并且打包的字体(Liberation、Carlito、Caladea、Noto CJK 子集)为 OFL/Apache 许可证。 ## 许可证 GenOffice 采用 [Apache License 2.0](LICENSE) 授权,但有一个 例外:`ee/` 目录保留用于未来的企业模块,并受 [GenOffice Enterprise License](ee/LICENSE) 约束。 GenOffice 和 Genspark 的名称及徽标是 Mainfunc, Inc. 的商标。 Apache-2.0 许可证未授予使用它们的权限(见第 6 节); fork 项目应使用各自的品牌。
标签:AI原生, Electron, PDF, 办公软件, 可视化界面, 文字处理, 演示文稿, 特征检测, 电子表格, 自动化攻击