乐于分享
好东西不私藏

开源命令行让AI自己建、改Office文档,还能看到渲染结果自查自纠.

开源命令行让AI自己建、改Office文档,还能看到渲染结果自查自纠.

上个月我让 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 协议)。