上个月我让 AI 把一堆季度数据整理成 PPT。它很配合,唰唰吐出五十多行 python-pptx 代码,跑完打开一看:标题压着图表,第三页的文字直接溢出到页面外头。
我把截图发回去,它道了个歉,又给我一版盲写的代码。来回三轮,我放弃了,版式还是自己动手排的。
那天我想明白一件事:AI 写代码有报错兜底,写网页有截图可看,唯独做 Office 文档的时候,它是个闭着眼睛干活的裁缝。
所以最近翻到 OfficeCLI 这个项目,我基本是一口气把 README 读完的。一个专门给 AI Agent 设计的 Office 套件,开源,Apache 2.0 协议,GitHub 上已经 17.7k star。它解决的恰好就是「闭眼干活」这个问题。
一个二进制,把 Word、Excel、PPT 全包了
先说形态。OfficeCLI 是单文件二进制,.NET 运行时直接打包在里面,机器上不用装 Office,也不用 pip 装一堆库,macOS、Linux、Windows 都有对应版本。
# macOS / Linux 一行装好
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash
# 或者走包管理器
brew install officecli
npm install -g @officecli/officecli
操作方式是命令行加路径寻址:文档里每个元素都有一个稳定路径,比如 /slide[1]/shape[2] 就是第一页里的第二个形状。AI 不用理解 OOXML 那堆命名空间,就能精确定位到任何一个元素。
# 新建一个 PPT,加一页
officecli create deck.pptx
officecli add deck.pptx / --type slide --prop title="Q4 Report"
# 看大纲
officecli view deck.pptx outline
# → Slide 1: Q4 Report
# 实时预览,每改一笔浏览器跟着刷新
officecli watch deck.pptx
以前用 python-pptx 要写五十行的活,现在一条命令。每个命令都支持 --json 输出,结构稳定,Agent 拿到直接解析,不用拿正则去抠 stdout。
对人类它也顺手,但它的第一用户,官方明确写着是 AI。
装完跑一句 officecli install,它会自动扫描机器上的 AI 编程工具,Claude Code、Cursor、Copilot 这些,检测到就把技能文件装进去,Agent 立刻学会全套用法。不想走命令行的还有内置 MCP server,一条命令完成注册。
AionUi 里 AI Agent 用 OfficeCLI 对话式搭 PPT(图片来自项目官方演示)
最值钱的是那双眼睛
如果只是把 python-pptx 换成命令行,这个项目不值得单写一篇。真正的分水岭是它内置了一个从零写的 HTML 渲染引擎。
view html 把文档渲染成单文件网页;view screenshot 直接出每一页的 PNG,多模态模型拿来就能看;watch 起一个本地预览服务,每改一个元素浏览器实时刷新。
这就把「渲染、看一眼、修」的闭环打通了。Agent 生成一版 PPT,自己截图看一眼,发现标题溢出了、两个色块叠在一起了,改完再看,直到顺眼为止。以前这个环节,是人肉在干的。
官方那句话说得挺准:没有可视化,生成幻灯片的 Agent 就是在盲飞。
渲染引擎的覆盖面也够狠:图表、瀑布图、LaTeX 公式,连 .glb 格式的 3D 模型都能渲。整个引擎就在二进制里,所以 CI、Docker、没显示器的服务器上照样能跑。
官方演示里由 AI 全程生成的 PPT 成品页,无模板、无人工修改
Excel 这部分比我预想的扎实
我原以为这种全家桶工具,Excel 多半是个能读能写的半成品。结果它内置了公式引擎,350 多个函数,写入的时候就自动算好。
你写一个 =SUM(A1:A2) 进去,紧接着 get 这个单元格,值已经在了,不用开 Excel 重算一遍。动态数组 FILTER、SORT、UNIQUE,查表的 XLOOKUP,财务的 XIRR、YIELD,统计检验 T.TEST,都在函数列表里。
透视表也是一条命令的事:多字段行列、日期分组、计算字段都支持,数据缓存直接写进 OOXML,Excel 打开文件时聚合结果已经躺在那了。
officecli add sales.xlsx '/Sheet1' --type pivottable \
--prop source='Data!A1:E10000' \
--prop rows='Region,Category' --prop cols=Quarter \
--prop values='Revenue:sum,Units:avg'
官方演示里 AI 搭出来的十年期 DCF 财务模型
模板合并,才是拿去生产的正确姿势
这个设计我想单独说,因为它戳中了自动化报表的一个老大难。
让 AI 每份报告都从头生成,一百份出来一百个版式,token 也烧得肉疼。OfficeCLI 的思路是把这事拆成两段:Agent 精心设计一次模板(贵),生产代码用 merge 命令批量填充 N 次(便宜、结果确定、零 token)。
# 模板里埋好 {{client}} {{total}},一条命令填充
officecli merge invoice-template.docx out-001.docx \
'{"client":"Acme","total":"$5,200"}'
占位符可以埋在段落、表格、形状、页眉页脚甚至图表标题里。再配合 dump 命令,能把现成文档序列化成可回放的 JSON,改一改再批量重放。「我手头有个现成模板」和「给我来一百份变体」之间的桥,就是这么搭起来的。
官方演示里 AI 写的长篇 Word 文档,排版、目录、参考文献齐全
哪些地方我先持保留
夸完了,说几句冷静的。
渲染保真度我打个问号。OOXML 的历史包袱多如牛毛,常规文档应该没问题,但那种嵌套表格套艺术字的祖传老文件能还原几成,README 说了不算,得实测。
零依赖的代价是体积,运行时全塞进一个文件,这个文件轻不了。还有,常规操作它的 L1、L2 两层够用,真遇到刁钻需求要下到 L3 直接改 XML 的时候,OOXML 那套知识还是逃不掉。
另外这项目迭代快得吓人,版本号已经跑到 v1.0.136,接口会不会变、小版本之间稳不稳,得让子弹再飞一会。
还有句实话:这篇是我读完文档和官方全部演示后写的分析,完整的上手实测还没来得及做。等真用它出过几十份报表,我再回来补一篇带坑的实测记。
给 AI 配上手和眼睛之后
打个不太准确的比方:过去两年的 AI 像个只动口的顾问,方案讲得头头是道,最后动手排版的还是你。OfficeCLI 这类工具补上的是手和眼睛,AI 第一次能对自己的产出负责。
更有意思的是这个项目的姿态。README 里给 Agent 留了专门入口,SKILL.md 直接喂给 AI 就能自学,连页面源码里都埋了给大模型看的元数据。这可能是头一批把 AI 当成一等用户来做的软件。以后发软件,给人写文档、给 Agent 写技能文件,也许会变成标配。
你现在让 AI 出文档是什么流程?是让它吐 Markdown 你自己排版,还是已经整条链路交给 Agent 了?评论区聊聊。
本文信息独立采编自 OfficeCLI 官方 README 与项目文档,配图取自项目官方演示素材(Apache 2.0 协议)。
夜雨聆风