乐于分享
好东西不私藏

AI 生成 Office 文件终于不是盲打了:OfficeCLI 给 Agent 装了一双能看见排版的眼睛

AI 生成 Office 文件终于不是盲打了:OfficeCLI 给 Agent 装了一双能看见排版的眼睛

前言

你有没有让 AI 帮你做过 PPT?它一顿操作,扔给你一个 .pptx,你打开一看——标题溢出、图表叠在一起、字体东倒西歪。你跟它说「标题太大了」,它改完又说「现在又太小了」。来回五六轮,你放弃了,自己动手调。

这不怪 AI 笨。问题在于:AI 操作 Office 文件时是个瞎子。它能看到 XML 结构、能改属性,但它看不到渲染后的样子。就像一个设计师蒙着眼睛用代码画图——画完了揭开眼罩才知道画成什么样。

OfficeCLI 就是来解决这个问题的。这玩意给 AI Agent 装了一双眼睛。

OfficeCLI

给 AI Agent 用的 Office 全套——Word、Excel、PPT 都能读、能写、能改。单文件二进制,不依赖 Microsoft Office,一条命令装上就能用。

         帮我用 python-docx 生成一份 Q4 报告,标题用蓝色加粗,正文加一张图表      
 👤
🤖          好的,让我写 50 行 Python 代码,导入 pptx、设置 Inches、操作 slide layouts……然后你打开看效果,有问题我再改代码❌ 过去(用传统库时)
         帮我生成一份 Q4 报告,标题蓝色加粗,正文放一张图表      
 👤
🤖          搞定。我先渲染成 HTML 看了一下——标题没溢出,图表位置也对,颜色 OK。文件已经保存好了🟢 现在(接上 OfficeCLI 后)

核心思路很简单:OfficeCLI 内置了一套 HTML 渲染引擎,能把 .docx.xlsx.pptx 原样渲染成网页或截图。Agent 操作完文件,view screenshot 一看——哦标题溢出了,调一下字号;哦两个形状叠了,移开一点。这个「改完→看一眼→再改」的闭环,以前只能人类来做,现在 Agent 自己就能搞定。

而且这玩意不挑环境。渲染引擎是自研的,不依赖 Office 也不依赖 LibreOffice,Docker 里能跑,CI 里能跑,没显示器的服务器上也能跑

怎么装?

一行搞定,Agent 自己就会装:

curl -fsSL https://officecli.ai/SKILL.md

把这个喂给 Claude Code、Cursor、Codex 等任意 Agent,它读完 Skill 文件就知道怎么下载二进制、怎么用所有命令。也支持 brew 和 npm:

brew install officeclinpm install -g @officecli/officecli

不止是「能改」,是「能看懂」

大多数 Office 操作库只能改——你告诉它改什么它就改什么,但它不知道改完之后看起来什么样。OfficeCLI 三层架构让 Agent 从「看」到「改」有一条清晰的升级路径:

L1 看 — view 命令给出多种视图:纯文本提取、带注释的结构树、大纲模式、HTML 渲染、PNG 截图。Agent 先看清文档长什么样,再决定怎么改。

L2 改 — getsetaddremovemove,用路径定位元素。比如 officecli set report.docx /body/p[1]/r[1] --prop bold=true 把第一段第一段文字加粗。不需要理解 XML namespace,路径就是文档结构的自然映射。

L3 裸 XML — 当前两层不够用时(比如改一个 L2 还没支持的属性),直接 raw / raw-set 上 XPath,什么都能改。

Agent 默认从 L1 开始,搞不定了才往下走,节省 token 也减少出错。

Excel 公式引擎——写完就算完了

这是我觉得最骚的部分。OfficeCLI 内置了 350+ 个 Excel 函数的计算引擎。你在单元格里写 =SUM(A1:A10),OfficeCLI 当场给你算出结果。不需要等 Excel 打开重新计算。

支持动态数组函数(FILTERSORTUNIQUELAMBDA)、金融函数(XIRRPRICEYIELD)、统计函数(NORM.DISTT.TESTLINEST)……基本上日常会用到的都在。

更绝的是透视表——一条命令从数据源建好,Excel 打开就是现成的:

officecli add sales.xlsx '/Sheet1' --type pivottable \  --prop source='Data!A1:E10000' --prop rows='Region,Category' \  --prop cols=Quarter --prop values='Revenue:sum'

模板合并——设计一次,填 N 次

让 Agent 设计布局是贵的(费 token),但填充数据是便宜的。OfficeCLI 的 merge 命令就是干这个的:Agent 做好一个带 {{key}} 占位符的模板,然后你扔一个 JSON 进去,批量生成 100 份报告。每份排版一致,零 token 消耗。

还有个更骚的:dump → batch 往返

你手里有一份人类做的精美文档,想让 Agent 模仿它生成 100 份变体?dump 把整个文档序列化成一份可重放的 JSON 蓝图,Agent 读完这个结构化描述(不是原始 OOXML XML!),改几个参数,batch 回放就出来了。相当于把「我有一个模板」和「帮我批量生成」中间那座桥搭好了。

能派上用场的地方

  • 自动生成报告:从数据库拉数据 → Agent 排版 → OfficeCLI 渲染检查 → 交付。全自动,不用人盯
  • 批量文档处理:100 份合同要把甲方的公司名全换掉,传统做法是雇人手动改两天,现在 Agent + OfficeCLI 跑 10 分钟
  • CI/CD 文档质检:每次提 PR 自动生成文档预览截图,检查格式有没有崩
  • 非技术人员操作 Office:不会用 Excel 透视表?告诉 Agent「帮我把销售数据按地区汇总,算一下同比增长」,它搞定

最后

OfficeCLI 3 月才新建,到现在 9.4k Star,198pts 上 HN 首页,社区已经在用它做了不少东西。同团队还做了 AionUi——一个桌面端的 AI 办公助手,29k Star,底层就是 OfficeCLI。

说到底,Office 文件是 AI 落地绕不过去的坎。大多数人的工作产出最后都是 .docx.xlsx.pptx,但之前的 AI Agent 操作这些文件时是个睁眼瞎。OfficeCLI 给 Agent 装上了眼睛,让「生成→检查→修正」的循环不再是人类的专利。

⚠️ 注意事项:OfficeCLI 是 C# 写的单文件二进制,渲染引擎自研所以不需要 Office。但它还不是 100% 覆盖所有 Office 特性——复杂的 VBA 宏、某些冷门图表类型、加密文件暂不支持。模板合并时 {{key}} 是纯文本替换,不支持循环和条件逻辑。另外 Windows 上如果杀毒软件报毒,是单文件自解压打包的误报,加白名单即可。

同类工具

python-docx / openpyxl / python-pptx

Python 生态里最常用的 Office 操作三件套,加一块大概 20k ⭐。功能很全,但它们是不是工具——你得写代码调用,Agent 也得写代码调用。没有渲染能力,Agent 改完不知道自己改成了什么样。OfficeCLI 跟它们的关系不是替代,是升维:把「写代码操作 Office」变成「用自然语言操作 Office」,中间加了一层 Agent 能看懂的视觉反馈。

harness-anything

910 ⭐,MIT。一个 AI Agent 控制中枢,能操作 WPS、MS Office、Zotero、Photoshop 等十几个工具。它的 Office 能力是通过驱动 WPS 或 MS Office 实现的——需要本机装好 Office 软件。OfficeCLI 走的是另一条路:自研渲染引擎,零依赖,纯二进制搞定。前者覆盖面广,后者在 Office 这件事上做得更深。

三者的关系:python-docx 是给程序员用的库,harness-anything 是给 Agent 用的遥控器(驱动现有 Office),OfficeCLI 是给 Agent 用的原生 Office 引擎——不用装 Office,自带眼睛,从渲染到底层读写全自己来。

相关资源

  • 📦 iOfficeAI/OfficeCLI:https://github.com/iOfficeAI/OfficeCLI
  • 🌐 官网 + Skill 文件入口:https://officecli.ai
  • 🔌 MCP 集成方式:officecli mcp claude / officecli mcp cursor 一键注册
  • ☁️ AionUi 桌面端(同团队):https://github.com/iOfficeAI/AionUi

💡 点个关注,带你一起围观最前沿的 Agent 工具生态!