用 python-pptx 创建一张带标题、背景色和正文文字的幻灯片代码大概长这样frompptximportPresentationfrompptx.utilimportPtfrompptx.dml.colorimportRGBColor prsPresentation()slideprs.slides.add_slide(prs.slide_layouts[1])bgslide.background.fill bg.solid()bg.fore_color.rgbRGBColor(0x1A,0x1A,0x2E)titleslide.shapes.title title.textQ4 Revenue Reportruntitle.text_frame.paragraphs[0].runs[0]run.font.sizePt(36)run.font.boldTruerun.font.color.rgbRGBColor(0xFF,0xFF,0xFF)slide.placeholders[1].textRevenue grew 25% YoYprs.save(report.pptx)20 行还没算错误处理和导包。等效的 OfficeCLI 命令officecli create report.pptx officecliaddreport.pptx /--typeslide\--proptitleQ4 Revenue Report--propbackground1A1A2E officecliaddreport.pptx/slide[1]--typeshape\--proptextRevenue grew 25% YoY\--propx2cm--propy5cm--propcolorFFFFFF--propsize28--propboldtrue3 条命令跨语言跨平台无需理解 pptx 的对象模型。这就是 OfficeCLI 的核心主张把 Office 文件操作变成和curl一样简单的 CLI 调用。OfficeCLI 是什么OfficeCLI 是一个专为 AI Agent 设计的 Office 套件Apache 2.0 开源发布为单个自包含二进制文件支持 macOS、Linux 和 Windows。不需要安装 Microsoft Office不需要 .NET 运行时下载即用。它统一覆盖三种格式Word.docx支持段落、表格、图片、目录、批注、脚注、水印、公式Excel.xlsx内置 150 函数自动计算、透视表、条件格式、图表PowerPoint.pptx支持幻灯片、形状、动画、3D 模型、切换效果、连接符。所有操作通过统一路径寻址访问文档元素例如/slide[1]/shape[2]指向第 1 张幻灯片的第 2 个形状。每个命令都支持--json输出错误也以结构化 JSON 返回包含错误码和修复建议方便 Agent 自动重试。内置渲染引擎是 OfficeCLI 对比其他工具最显著的差异view html生成自包含 HTMLview screenshot输出 PNGwatch启动本地 HTTP 服务并在每次修改后自动刷新浏览器。在 Docker 容器或无显示器的 CI 服务器里也能看到文档的实际渲染结果。场景一让 AI Agent 直接生成并检查文档OfficeCLI 内置 MCP Server一行命令注册到 Claude Code、Cursor 或 VS Codeofficecli mcp claude# 注册到 Claude Codeofficecli mcp cursor# 注册到 Cursorofficecli mcp vscode# 注册到 VS Code注册之后AI Agent 可以直接通过 MCP 协议调用 officecli 的所有操作不需要 shell 权限JSON 输出确定性强。更关键的是看的能力Agent 生成幻灯片后可以调用view screenshot拿到 PNG通过多模态能力检查标题是否溢出、形状是否重叠、对比度是否足够然后自动修正# Agent 生成后截图确认视觉效果officecli view deck.pptx screenshot-o/tmp/slide1.png--page1# 发现标题溢出缩小字号后重新确认officeclisetdeck.pptx/slide[1]/shape[1]--propsize20officecli view deck.pptx screenshot-o/tmp/slide1v2.png--page1这个生成 → 渲染 → 检查 → 修正闭环在纯 python-pptx 方案里完全缺失。Agent 写完代码之后是真的在盲飞不打开 PowerPoint 根本不知道幻灯片长什么样。场景二批量生成文档模板只设计一次从数据库或 API 拿数据批量生成同格式的 Word/Excel/PPT 文档这是 OfficeCLI 最典型的工程应用。Template merge 功能是核心用{{key}}占位符设计一次模板然后批量填充 JSON 数据。# 模板一次设计批量生成 N 份客户报告forfileinclients/*.json;doid$(jq-r.id$file)officecli merge report-template.pptxreport-${id}.pptx$filedone模板只需 AI 生成一次之后的批量渲染是确定性的零 token 消耗。这避免了两个常见问题重复消耗 token以及每次生成格式微妙不一致。多步骤操作可以用批量模式在一次文件 open/save 中执行多个命令大幅减少 I/O 开销echo[ {command:set,path:/slide[1]/shape[1],props:{text:2025 Q4}}, {command:set,path:/slide[1]/shape[2],props:{text:营收 $4.2M}}, {command:set,path:/slide[2]/shape[1],props:{fill:0d47a1}} ]|officecli batch report.pptx--json从 Python 调用也很直接。封装一次之后每个操作都能直接拿到解析好的 JSONimportjson,subprocessdefcli(*args):returnjson.loads(subprocess.check_output([officecli,*args,--json],textTrue))cli(create,deck.pptx)cli(add,deck.pptx,/,--type,slide,--prop,titleQ4 Report)slidecli(get,deck.pptx,/slide[1])场景三在 CI/CD 中自动校验文档质量在发布合同、法律文件、合规报告之前OfficeCLI 可以作为流水线中的一道自动校验门。validate检查 OpenXML 结构合规性view issues检测内容层面的问题包括文字溢出、缺失 alt text、公式错误等。# CI 校验脚本officecli validate contract.docx||exit1issues$(officecli view contract.docx issues--json)errors$(echo$issues|jq[.[] | select(.severityerror)] | length)if[$errors-gt0];thenecho文档存在${errors}个错误阻断发布exit1fi结构化 JSON 输出方便接入任何 CI 系统问题按严重程度分级文档进入发布流程之前自动拦截。和主流工具的对比文档自动化领域的主流选项有三类Python 库python-pptx、python-docx、openpyxl、LibreOffice headless 和 Microsoft Office COM 自动化。python-pptx 系成熟稳定社区资源丰富但有几个共性问题难以绕过语言绑定死非 Python 技术栈无法直接用三种格式需要三个库API 设计不统一没有渲染引擎无法在不安装 Office 的环境里验证视觉结果对 AI Agent 不友好输出不是 JSON错误信息不结构化。它有一个细节优势对 slide master/layout 的继承关系处理比 OfficeCLI 更完整可以拿到主题继承后的实际字体颜色这类值。LibreOffice headless 常用于服务端文件格式转换。缺点是体积大300MB 以上启动慢UNO API 学习曲线陡容器化部署容易遇到字体和渲染环境问题对 AI Agent 几乎没有原生集成。Microsoft Office COM 通过 Windows COM 接口调用 Office 应用渲染结果和手动操作完全一致但只能在 Windows 上运行需要 Office License不能无头运行速度慢稳定性依赖 Office 进程完全不适合 Linux 服务器或容器环境。维度OfficeCLIpython-pptx 系LibreOfficeMS Office COM无需安装 Office是是是否三格式统一 API是否3 个库是是内置渲染引擎是否部分是语言无关是CLI否Python only否UNO否COM/WinAI Agent / MCP 支持是否否否容器 / CI 环境是是复杂否JSON 结构化输出是否否否slide master 继承部分完整完整完整什么时候不适合用 OfficeCLI如果核心需求是从存量文档里提取结构化数据接入 Python 数据管道pandas、数据库写入、特征提取python-pptx 和 openpyxl 更合适。它们直接在进程内拿到 Python 对象无子进程开销批量处理几千个文件也没有性能问题。如果需要精细控制 slide master 和 theme 的继承关系比如这个文字框在当前 layout 下实际应用的字体是什么python-pptx 的对象模型对这套继承关系有完整实现OfficeCLI 在这个层次的支持还不够深。如果项目里已有成熟稳定的 python-pptx 代码库覆盖了大量边缘情况迁移到 OfficeCLI 的成本不一定值得。OfficeCLI 目前只支持 .docx、.xlsx、.pptx 三种现代格式如果需要处理旧格式.doc、.xls、.ppt需要先做格式转换。文档自动化的历史大致分两个阶段手写 Python 操作 XML 对象树的时代以及让 AI Agent 直接理解需求并自动产出文档的时代。OfficeCLI 站在两个时代的交汇处一边对已有工程流水线友好一边为 AI 原生工作流提供完整支撑。文档自动化的终点不是写出更优雅的 Python而是根本不需要写 Python。我是 Yuguo软件设计师正在用 AI 重构自己的开发工作流。踩过的坑、跑通的方案、省下来的时间都记在绿泡泡Feed中。 一起把 AI 真正用起来。