OfficeCLI:让 AI 智能体像操作文本文件一样掌控 Office 文档

一句话概括:OfficeCLI 是全球首款专为 AI 智能体设计的 Office 文档处理工具。它用一个单一可执行文件,让任何 AI 都能创建、读取、修改 Word、Excel 和 PowerPoint 文档——无需安装 Microsoft Office,无需依赖 Python 环境,一行命令就能启动。


为什么我们需要重新思考 Office 自动化?

如果你曾经尝试让 AI 帮你批量生成 100 份格式统一的报告,或者从 Excel 中提取结构化数据,你可能已经踩过这些坑:

传统方案的问题很现实。 用 Python 的 python-docxopenpyxl 处理文档,你需要先装 Python、再装 pip、再解决依赖冲突。50 行代码能写完的功能,调试环境可能要花半小时。更麻烦的是,AI 智能体在生成文档后看不见自己的产出——它不知道标题有没有溢出,也不知道两个形状是不是重叠了。

Microsoft Office 的自动化门槛更高。 COM 接口只在 Windows 上跑得好,macOS 和 Linux 基本绝缘。LibreOffice 的 UNO API 学习曲线陡峭,而且在 CI/CD 容器里部署 Office 套件本身就是个”重量级”操作。

OfficeCLI 的出现,本质上是在回答一个问题:如果 AI 智能体要处理 Office 文档,工具本身应该长成什么样?

答案是一个单一可执行文件——内置 .NET 运行时,零依赖,跨平台,输出确定性 JSON,自带渲染引擎让 AI 能”看见”文档。


OfficeCLI 是什么?适合谁用?

OfficeCLI 是一个命令行工具,支持三种典型用户:

用户类型 典型场景 使用方式
AI 智能体开发者 让 Claude、Cursor、GitHub Copilot 自动读写 Office 文档 一行 curl 安装技能文件,智能体立即获得文档操作能力
普通用户 用自然语言生成 PPT、修改 Word 合同、分析 Excel 数据 安装 AionUi 桌面应用,或直接用命令行
开发者/运维 在 CI/CD 流水线中自动生成测试报告、批量处理文档 下载二进制文件,通过脚本调用

它支持三种核心格式:Word (.docx)Excel (.xlsx)PowerPoint (.pptx),覆盖创建、读取、修改、验证全生命周期。


安装:比你想象的更简单

OfficeCLI 的安装设计遵循一个原则:不要让用户在”安装工具”这件事上消耗意志力。

方法一:AI 智能体一键安装(推荐)

如果你正在使用 Claude Code、Cursor、Windsurf 或 GitHub Copilot,直接把下面这行粘贴到对话框:

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

技能文件会自动教 AI 如何下载二进制、配置环境,并掌握所有命令。智能体不需要你手动写配置文件。

方法二:命令行一键安装

macOS / Linux 用户:

curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash

Windows 用户(PowerShell):

irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex

方法三:手动下载

如果你偏好手动控制,直接从 GitHub Releases 下载对应平台的二进制文件:

平台 文件名
macOS Apple Silicon officecli-mac-arm64
macOS Intel officecli-mac-x64
Linux x64 officecli-linux-x64
Linux ARM64 officecli-linux-arm64
Windows x64 officecli-win-x64.exe
Windows ARM64 officecli-win-arm64.exe

下载后,运行 officecli install 即可完成 PATH 配置和 AI 工具自动检测。验证安装是否成功:

officecli --version

小贴士:OfficeCLI 会后台自动检查更新。如果你在某次脚本执行中不想被更新检查打断,可以设置环境变量 OFFICECLI_SKIP_UPDATE=1,或者通过 officecli config autoUpdate false 永久关闭。


30 秒亲眼看到效果:从空白到实时预览

安装完成后,用最短路径验证它是否工作:

# 1. 创建一个空白 PowerPoint
officecli create deck.pptx

# 2. 启动实时预览,浏览器自动打开 http://localhost:26315
officecli watch deck.pptx

# 3. 在另一个终端窗口,添加一页幻灯片
officecli add deck.pptx / --type slide --prop title="Hello, World!"

当你执行第 3 步时,浏览器会即时刷新,显示新添加的幻灯片。这个”渲染 → 看 → 改”的循环,是 OfficeCLI 区别于其他工具的核心体验。


核心能力:不只是”能打开文档”

OfficeCLI 的能力可以分成几个维度来理解。我们不用罗列功能清单,而是回答几个实际工作中会遇到的问题。

问题一:AI 生成的文档,AI 自己能检查排版吗?

可以。 OfficeCLI 内置了一个Agent 友好渲染引擎,从零实现,不依赖 Office 软件。

这意味着什么?AI 智能体在生成 .docx.xlsx.pptx 后,可以立即将其渲染为 HTML 或 PNG,然后”看”到自己的产出。它能发现标题文字溢出文本框、两个形状重叠、表格列宽不对等问题,并自动修复。

三种渲染模式覆盖不同场景:

模式 命令 用途
HTML 预览 officecli view deck.pptx html 生成独立 HTML 文件,资源内联,任何浏览器打开即看
截图检查 officecli view deck.pptx screenshot 按页生成 PNG,供多模态 AI 读图审查
实时监听 officecli watch deck.pptx 本地 HTTP 服务,每次 add/set/remove 自动刷新浏览器

为什么这很重要? 没有可视化能力,生成 PPT 的 AI 就是在”盲跑”。它能读取文档结构,但分辨不出两个形状是否重叠、标题是否溢出。因为渲染引擎内嵌在二进制里,这个循环在 CI 服务器、Docker 容器、无头环境里都能跑——只要二进制能执行的地方,AI 就能看见自己的产出。

问题二:Excel 公式写入后,能立即读到计算结果吗?

能。 OfficeCLI 内置了公式与透视引擎,支持 150 多个 Excel 函数写入即自动求值。

当你写入 =SUM(A1:A2) 后,直接用 get 命令读取单元格,返回值已经计算完毕。不需要回到 Excel 里按 F9 重算。覆盖的函数包括:


  • 动态数组函数FILTERUNIQUESORTSEQUENCE_xlfn. 前缀自动添加)

  • 查找函数VLOOKUPINDEXMATCH

  • 日期与文本函数DATETEXTCONCATENATE

数据透视表同样支持原生 OOXML 生成。一条命令就能从源数据范围创建透视表,包含多字段行/列/筛选器、10 种聚合方式、showDataAs 多种计算模式、日期分组、计算字段、Top-N 筛选等。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' \
  --prop showDataAs=percentOfTotal

问题三:如何批量生成格式统一的报告,而不每次都烧 token?

用模板合并(Merge)。 这是 OfficeCLI 解决”规模化生成”问题的关键设计。

工作流程很简单:

  1. 设计阶段(一次性,高成本):人工或 AI 设计一份模板文档,在其中插入 {{key}} 占位符。
  2. 填充阶段(重复 N 次,低成本):用 JSON 数据替换占位符,生成最终文档。

支持替换的位置包括段落、表格单元格、形状文本、页眉页脚、图表标题等。

# 单条数据填充
officecli merge invoice-template.docx out-001.docx '{"client":"Acme","total":"$5,200"}'

# 批量填充,从 JSON 文件读取
officecli merge q4-template.pptx q4-acme.pptx data.json

这个模式避免了”每份报告都从头生成”导致的版式不一致问题,也避免了每次生成消耗大量 token。

问题四:怎么让 AI 学习现有文档的排版风格?

用 Dump 往返(Dump → Batch)。 这是打通”我有一份现成模板”和”给我生成 100 份变体”之间的链路。

dump 命令把任意 .docx 文档——可以是整个文档,也可以是任意子树(比如单段、单表、样式定义、主题、设置)——序列化为可重放的 batch JSON。AI 智能体读取的是结构化规格,而不是原始的 OOXML XML,理解成本大幅降低。修改后,用 batch 命令重放回去。

# 导出整个文档的结构规格
officecli dump existing.docx -o blueprint.json

# 只导出第一张表格的规格
officecli dump existing.docx /body/tbl[1] -o table.json

# 在新文档中重放规格
officecli batch new.docx --input blueprint.json

三层架构:从简单开始,按需深入

OfficeCLI 的命令设计遵循”渐进式复杂度”原则。你不需要第一天就学会所有东西。

层级 用途 典型命令
L1:读取层 查看内容的语义视图,适合快速理解文档结构 view(text、outline、annotated、stats、issues、html、svg、screenshot)
L2:DOM 层 对结构化元素进行精确操作 getquerysetaddremovemoveswap
L3:原始 XML 层 直接操作 OOXML,作为通用兜底方案 rawraw-setadd-partvalidate

L1 层示例——快速了解文档内容:

# 查看 Word 文档的带注释文本
officecli view report.docx annotated

# 查看 Excel 前 50 行,只关注 A-C 列
officecli view budget.xlsx text --cols A,B,C --max-lines 50

# 检查 PPT 存在的问题
officecli view deck.pptx issues --json

L2 层示例——精确操作元素:

# 查找包含 "TODO" 的所有文本片段
officecli query report.docx "run:contains(TODO)"

# 在 Excel 中添加新工作表
officecli add budget.xlsx / --type sheet --prop name="Q2 Report"

# 把 Word 第 5 段移到文档开头
officecli move report.docx /body/p[5] --to /body --index 1

L3 层示例——当 L2 不够时直接操作 XML:

# 查看第一张幻灯片的原始 XML
officecli raw deck.pptx '/slide[1]'

# 在文档第一段末尾注入自定义 XML
officecli raw-set report.docx document \
  --xpath "//w:p[1]" --action append \
  --xml '<w:r><w:t>Injected text</w:t></w:r>'

格式支持深度:Word、Excel、PowerPoint 各能做什么?

OfficeCLI 对三种格式的支持不是”能打开就行”,而是深入到专业文档制作的各个细节。

Word 文档 (.docx)


  • 国际化与 RTL 支持:按脚本字体槽位、BCP-47 语言标签(lang.latin/ea/cs)、复杂脚本粗体/斜体/字号级联、direction=rtl 在段落/文本/表格/样式/页眉页脚间级联、印地语/阿拉伯语/泰语/中日韩本地化页码。

  • 段落与文本:完整支持段落属性、文本片段(run)样式、表格(含嵌套表格)、样式定义。

  • 页眉页脚:独立或关联的页眉页脚,支持奇偶页不同。

  • 媒体与公式:PNG/JPG/GIF/SVG 图片插入、OMML 公式、OLE 对象。

  • 文档结构:批注、脚注、尾注、书签、目录(TOC)、超链接、节(section)属性。

  • 高级功能:水印、表单域、内容控件(SDT)、22 种零参数域代码(以及 MERGEFIELD、REF、PAGEREF、SEQ、STYLEREF、DOCPROPERTY、IF 等)、文档属性管理。

Excel 电子表格 (.xlsx)


  • 单元格操作:支持音标/振假名输入、150+ 内置函数自动求值、动态数组函数。

  • 工作表管理:可见性控制(visible/hidden/veryHidden)、打印边距、打印标题行/列、RTL 视图、级联感知的工作表重命名。

  • 数据组织:表格(Table)、排序(多键、附属感知)、条件格式、命名范围、数据验证。

  • 可视化:图表(含箱线图、帕累托图自动排序+累计百分比、对数轴)、迷你图(Sparkline)、形状、图片(PNG/JPG/GIF/SVG,双重表示回退)。

  • 高级分析:数据透视表(多字段、日期分组、showDataAs、排序、总计、分类汇总、三种布局、计算字段)、切片器(Slicer)。

  • 其他:批注(RTL 支持)、自动筛选、OLE 对象、CSV/TSV 导入、$Sheet:A1 单元格寻址。

PowerPoint 演示文稿 (.pptx)


  • 幻灯片管理:页眉/页脚/日期/页码切换、隐藏幻灯片。

  • 形状与媒体:形状(图案填充、模糊效果、超链接)、图片(填充模式:stretch/contain/cover/tile,亮度/对比度/发光/阴影)、表格、图表、视频/音频。

  • 动画与过渡:动画效果、Morph 过渡、3D 模型(.glb 格式,通过 Three.js 渲染)。

  • 交互功能:幻灯片缩放(Zoom)、连接线、组合(Group)。

  • 备注与批注:备注(RTL、lang 支持)、批注(RTL)。

  • 其他:公式、主题、占位符(按 phType 添加/设置)、OLE 对象。

AI 集成:为什么智能体在 OfficeCLI 上”如鱼得水”?

OfficeCLI 从设计之初就把 AI 智能体当作第一用户。以下是几个关键设计决策:

1. 确定性 JSON 输出

每条命令都支持 --json 参数,返回一致的 schema。智能体不需要用正则表达式解析 stdout,也不需要处理不可预测的人类可读格式。

单个元素输出示例:

{
  "tag": "shape",
  "path": "/slide[1]/shape[1]",
  "attributes": {
    "name": "TextBox 1",
    "text": "Hello"
  }
}

错误输出示例:

{
  "success": false,
  "error": {
    "error": "Slide 50 not found (total: 8)",
    "code": "not_found",
    "suggestion": "Valid Slide index range: 1-8"
  }
}

错误码标准化(not_foundinvalid_valueunsupported_property 等),并且属性名支持自动纠错——拼错时会返回最接近的匹配建议。

2. 基于路径的元素寻址

每个元素都有稳定路径,比如 /slide[1]/shape[2]。智能体不需要理解 XML 命名空间就能导航文档。OfficeCLI 使用 1-based 索引和元素本地名,直观且符合人类习惯。

3. 自愈式工作流

当智能体执行了无效操作时,OfficeCLI 不会只是报错退出。它会返回结构化错误信息,包含建议修正有效范围。智能体可以自行查询可用元素并修正路径,无需人工介入。

# 智能体尝试访问不存在的路径
officecli get report.docx /body/p[99] --json
# 返回 not_found 错误,附带有效范围建议

# 智能体查询可用子元素
officecli get report.docx /body --depth 1 --json
# 返回可用子元素列表,智能体选择正确路径重试

4. MCP 服务器支持

OfficeCLI 内置了 MCP (Model Context Protocol) 服务器,通过 JSON-RPC 暴露所有文档操作,无需 shell 访问。

一条命令注册到 AI 工具:

officecli mcp claude       # Claude Code
officecli mcp cursor       # Cursor
officecli mcp vscode       # VS Code / Copilot
officecli mcp lmstudio     # LM Studio
officecli mcp list         # 查看注册状态

5. 自动安装与技能文件

OfficeCLI 能自动检测系统中已安装的 AI 工具(Claude Code、Cursor、Windsurf、GitHub Copilot 等),并将技能文件安装到对应配置目录。如果自动检测失败,也可以手动安装:

# 直接获取技能文件内容
curl -fsSL https://officecli.ai/SKILL.md

# 安装为 Claude Code 本地技能
curl -fsSL https://officecli.ai/SKILL.md -o ~/.claude/skills/officecli.md

驻留模式与批量执行:性能优化

当需要执行多条命令时,反复打开和保存文件会产生不必要的开销。OfficeCLI 提供两种优化模式:

驻留模式(Resident Mode)

文档保持在内存中,通过命名管道通信,延迟接近零。

officecli open report.docx
officecli set report.docx /body/p[1]/r[1] --prop bold=true
officecli set report.docx /body/p[2]/r[1] --prop color=FF0000
officecli close report.docx

批量模式(Batch Mode)

在一次打开/保存周期内原子化执行多条操作。支持从 stdin、--input 文件或 --commands 参数读取 JSON 指令。

# 从 stdin 批量执行
echo '[{"command":"set","path":"/slide[1]/shape[1]","props":{"text":"Hello"}},
      {"command":"set","path":"/slide[1]/shape[2]","props":{"fill":"FF0000"}}]' \
  | officecli batch deck.pptx --json

# 内联 batch,无需标准输入
officecli batch deck.pptx --commands '[{"op":"set","path":"/slide[1]/shape[1]","props":{"text":"Hi"}}]'

# 使用 --force 跳过错误继续执行
officecli batch deck.pptx --input updates.json --force --json

实用工作流:从创建到交付的完整示例

一个典型的 AI 智能体工作流——创建演示文稿、填充内容、验证并修复问题——全程无需人工干预:

# 1. 创建空白演示文稿
officecli create report.pptx

# 2. 添加内容
officecli add report.pptx / --type slide --prop title="Q4 Results"
officecli add report.pptx '/slide[1]' --type shape \
  --prop text="Revenue: $4.2M" --prop x=2cm --prop y=5cm --prop size=28
officecli add report.pptx / --type slide --prop title="Details"
officecli add report.pptx '/slide[2]' --type shape \
  --prop text="Growth driven by new markets" --prop x=2cm --prop y=5cm

# 3. 验证结构
officecli view report.pptx outline
officecli validate report.pptx

# 4. 检查并修复问题
officecli view report.pptx issues --json
# 根据输出修复,例如统一字体:
officecli set report.pptx '/slide[1]/shape[1]' --prop font=Arial

常用模式速查

以下是日常工作中最高频的操作模式:

替换 Word 中所有 Heading1 的文本:

officecli query report.docx "paragraph[style=Heading1]" --json
officecli set report.docx /body/p[1]/r[1] --prop text="New Title"

导出所有幻灯片内容为 JSON:

officecli get deck.pptx / --depth 2 --json

批量更新 Excel 单元格:

officecli batch budget.xlsx --input updates.json --json

导入 CSV 到 Excel:

officecli add budget.xlsx / --type sheet --prop name="Q1 Data" --prop csv=sales.csv

交付前质量检查:

officecli validate report.docx && officecli view report.docx issues --json

在 Python 中调用:

import json, subprocess

def cli(*args):
    return json.loads(subprocess.check_output(["officecli", *args, "--json"], text=True))

cli("create", "deck.pptx")
cli("add", "deck.pptx", "/", "--type", "slide", "--prop", "title=Q4 报告")
slide = cli("get", "deck.pptx", "/slide[1]")
print(slide["attributes"]["text"])

单位与颜色:灵活的输入格式

OfficeCLI 接受多种常见格式,减少记忆负担:

类型 支持的格式 示例
尺寸 厘米、英寸、磅、像素,或原始 EMU 2cm1in72pt96px914400
颜色 十六进制、命名色、RGB、主题色 #FF0000FF0000redrgb(255,0,0)accent1
字号 纯数字或带 pt 后缀 1414pt10.5pt
间距 磅、厘米、英寸,或倍数/百分比 12pt0.5cm1.5x150%

工具对比:OfficeCLI 站在什么位置?

能力 OfficeCLI Microsoft Office LibreOffice python-docx / openpyxl
开源免费 ✓ (Apache 2.0) ✗(商业授权)
AI 原生 CLI + JSON
零安装(单一可执行文件) ✗(需 Python + pip)
任意语言调用 ✓ (CLI) ✗ (COM/Add-in) ✗ (UNO API) 仅 Python
基于路径的元素访问
原始 XML 兜底 部分支持
内置 Agent 友好渲染引擎
无头 HTML/PNG 输出 部分支持
跨格式模板合并
Dump → Batch JSON 往返
实时预览(编辑后自动刷新)
无头 / CI 环境支持 部分支持
跨平台 Windows/Mac
Word + Excel + PowerPoint 统一工具 需要多个库

常见问题(FAQ)

Q: OfficeCLI 需要安装 Microsoft Office 吗?
A: 完全不需要。OfficeCLI 是自包含的原生二进制文件,内置 .NET 运行时和独立的文档处理引擎。它在没有安装 Office 的 Docker 容器、CI 服务器、Linux 主机上都能正常运行。

Q: 它跟 Python 的 python-docx / openpyxl 有什么区别?
A: Python 库需要 Python 环境和依赖管理,且功能分散在多个库中(python-docx 处理 Word,openpyxl 处理 Excel,python-pptx 处理 PPT)。OfficeCLI 是一个单一可执行文件,支持三种格式,提供确定性 JSON 输出、内置渲染引擎、模板合并和 AI 原生集成。

Q: AI 智能体怎么”看见”自己生成的文档?
A: 通过 officecli view ... htmlofficecli view ... screenshot 命令。OfficeCLI 内置渲染引擎将文档转为 HTML 或 PNG,AI 可以读取这些输出并检查排版问题,然后执行修正命令。

Q: 支持哪些操作系统?
A: macOS(Apple Silicon 和 Intel)、Linux(x64 和 ARM64)、Windows(x64 和 ARM64)。

Q: 如何关闭自动更新检查?
A: 运行 officecli config autoUpdate false 永久关闭,或在单次命令前设置环境变量 OFFICECLI_SKIP_UPDATE=1

Q: 写入 Excel 公式后,能立即得到计算结果吗?
A: 可以。OfficeCLI 内置公式引擎,150+ 函数写入即自动求值。读取单元格时返回的是计算后的值,而不是公式字符串。

Q: 支持从 CSV 导入数据吗?
A: 支持。使用 officecli add ... --prop csv=data.csv 即可将 CSV 数据导入为新的工作表。

Q: 如果命令执行出错,AI 能自己修复吗?
A: OfficeCLI 的错误信息包含结构化错误码(如 not_foundinvalid_value)和修正建议(如有效范围)。AI 可以读取这些信息,查询可用元素,然后自动修正路径或参数重试。

Q: 如何获取某个命令的详细帮助?
A: 使用分层帮助系统。例如:


  • officecli pptx set —— 查看所有可设置元素和属性

  • officecli pptx set shape —— 查看 shape 元素的详细说明

  • officecli pptx set shape.fill —— 查看 fill 属性格式和示例

pptx 替换为 docxxlsx,动词可以是 viewgetquerysetaddraw

Q: 这个项目是开源的吗?
A: 是的,基于 Apache License 2.0 开源。代码托管在 GitHub 上,欢迎提交 Issue 和贡献代码。


总结:什么时候应该选择 OfficeCLI?

如果你符合以下任意场景,OfficeCLI 很可能是目前最优的选择:

  1. 你在构建 AI 应用,需要让智能体读写 Office 文档——OfficeCLI 的 JSON 接口、路径寻址、MCP 服务器和自愈式错误处理是专门为这个场景设计的。
  2. 你在 CI/CD 或容器环境中自动化文档处理——单一二进制、零依赖、跨平台的特性让它比 Office 自动化或 Python 方案部署更简单。
  3. 你需要批量生成格式统一的报告——模板合并功能让”设计一次,填充 N 次”成为现实,避免重复消耗 token。
  4. 你需要让 AI 检查自己生成的文档排版——内置渲染引擎提供了其他工具不具备的可视化反馈能力。

OfficeCLI 不是试图取代 Microsoft Office 或 LibreOffice 作为人类用户的桌面办公套件。它的定位非常清晰:成为 AI 智能体和自动化系统操作 Office 文档的标准接口。


相关资源