offipy
offipy 是一个 Windows-only 的 Office COM 自动化库:会话式驱动 Word / Excel / PowerPoint,外加 HTML→可编辑 PPTX 的转换管线。它把 Office 应用当成 一个「会话」,跨进程复用同一实例,并提供 server / CLI / MCP 三个一致的入口。
特性
- 会话式:跨进程复用同一 Office 实例,
ActiveWorkbook/ActiveDocument/ActivePresentation实时定位目标。 - 多文档(P2-2):每个应用维护文档表,
doc_id显式路由,activate/list_docs管理活动目标;多 server 实例按端口隔离。 - 三入口一致:HTTP server(127.0.0.1:8890,Bearer token)、CLI(
offipy <app> <op>)、 MCP 工具,全部从schema.py单一来源派生。 - 领域异常:
InvalidArgumentError/TargetNotFoundError/FileConflictError/ComOperationError/ProtocolError统一继承OffipyError,RPC 带error_code。 - HTML→PPTX 管线:Chromium 渲染 HTML 布局 → 可编辑 PPTX,支持图表、图标、主题。
- diagram-design skill 接入(Agent 原生):
offipy diagram build把宿主 agent 按 产物契约设计的 Mermaid / draw.io 图转成可编辑 PPTX;offipy diagram install_skill安装设计指引 + 契约桥 skill 到宿主 agent 技能目录。
安装
py -m pip install "offipy[all]" # office + deck + mcp
py -m playwright install chromium # 仅 OSS/开发环境;商业安装包自带 Chromium
按用途拆分:offipy[office](仅 COM 自动化)、offipy[deck](HTML→PPTX)、
offipy[mcp](MCP server)。
快速开始
offipy excel new_book # 返回 "book<hex>"(高熵 doc_id)
offipy excel set_cell --sheet 1 --cell A1 --value 42 --follow-active
offipy excel read_range --sheet 1 --range_addr A1:A1 # [[42.0]]
offipy excel quit
MCP 接入 Claude Desktop:参考 README 的 MCP 配置段,指向 offipy mcp。
文档导航
- 快速上手:会话、多文档、CLI / server / MCP 的完整用法。
- API 参考:全部操作(由 schema 自动生成)。
- 异常契约:策略 A 领域异常与 RPC
error_code映射。 - 协议:HTTP 协议、token、
/shutdown、协议版本握手。 - 商业 1.0 范围:Formal / Advanced / Experimental 承诺边界与首发验收矩阵。
- 兼容矩阵:Windows / Office / Python / extras 支持情况。
- 弃用政策:弃用流程与响应
warning字段。 - 迁移指南:0.9 → 0.10 破坏性变更与迁移步骤。
- 资源系统:
asset://图标 / 纹理 / 原生图元,provider 与assets.json溯源。
构建文档
uv run --with mkdocs-material mkdocs build
docs/api/ 由 scripts/gen_api_ref.py 从 schema.py 自动生成,修改操作后重跑即可。