首页 › skills-review › docx拆解:改Word先拆包

docx 件拆解:改 Word,先拆包

概述

官方全家桶的文档三连,本栏已经拆过两件:xlsx 件的答案是「公式不自己算」,pdf 件的答案是「最便宜的先上」。这次轮到三连里最重的一件——docx。它面对的是全世界办公室的默认格式,也是对 Agent 最不友好的一种格式:二进制压缩、XML 嵌套、修订批注满天飞。官方 docx 件给出的答案只有一句话:别把 Word 当文档,把它当压缩包。本文按 SKILL.md 逐段拆它的门牌设计、三岔口路由、解包手术链路,最后给出五维评分、替代路线对比和能直接抄走的三招。

一、它在全家桶里的位置

Anthropic 的 Skills 机制从 2025 年 10 月上线至今约十一个月,官方仓库 anthropics/skills 里的 document-skills 家族(docx、pdf、pptx、xlsx)始终是被二创抄袭最多的一个角落——大量社区件的 SKILL.md 写法,源头都能追到这几份文件。

docx 在这个家族里的特殊之处在于工作量分布:

家族成员 核心难题 解题一句话
xlsx 公式算不出来 让 LibreOffice 重算,自己不碰数学
pdf 生成工具太贵太重 从最便宜的工具往上试
docx 改文件 ≠ 重写文件 拆包改 XML,改完再打包

xlsx 和 pdf 的难点在「算」和「生成」,docx 的难点在「改」——用户递来一份合同、一份标书、一篇导师改了八稿的论文,要求在保留全部格式的前提下动其中三段。这才是 Word 工作流的真实主战场,也是这个 Skill 值得拆到每一行的原因。

二、门牌逐行:frontmatter 的触发词设计

SKILL.md 开头是两行 YAML 门牌:name: docx,加一段 description。Skill 机制的原理决定了这段 description 是全局常驻上下文的——模型随时能看到它,但 SKILL.md 正文只有被命中后才加载。所以这一段是「召回器」,写法上极讲究。

docx 的 description 核心句是 "Comprehensive document creation, editing, and analysis"(大意:文档的创建、编辑与分析全覆盖),随后用编号枚举把场景一个一个列全,大意是:(1)从零创建新文档;(2)修改或编辑既有文档内容;(3)处理修订(tracked changes);(4)添加批注(comments);(5)其他一切文档任务。

这个写法值得逐层看:

  1. 一个动词一张门票。create、edit、analyze 三个动词对应三类完全不同的用户原话(“帮我写个方案” / “改一下这段” / “总结这份文件”)。少写一个动词,就少一类召回。
  2. 编号枚举是防漏网设计。(1) 到 (5) 的清单式写法,把「修订」「批注」这两个冷门但高价值的场景钉死在门牌上。多数人自己写 Skill 只会写“处理 Word 文档”,结果用户说“帮我在修订模式里改”时模型想不起挂载它。
  3. 第 (5) 条兜底。“任何其他文档任务”是一张万能票,避免长尾说法漏召回。这个「枚举 + 兜底」的双层结构,是官方件被抄得最多的写法,没有之一。

门牌下面才是正文,而正文的第一原则是:只放路由,不放细节。

三、三岔口路由:读、造、改,各走各的路

docx 件正文的主干,是把一切 Word 需求先分成三个意图,每个意图配一条完全不同的技术路线:

flowchart TD
    A["用户抛来 docx 需求"] --> B{"先判断意图"}
    B -->|只想看内容| C["pandoc 转 markdown"]
    B -->|从零新建| D["写 docx-js 代码"]
    B -->|修改既有文件| E["unpack.py 拆包"]
    C --> F["纯文本通读 结构尽收"]
    D --> G["node 执行 代码吐文档"]
    E --> H["手工编辑 OOXML"]
    H --> I["pack.py 回卷打包"]
    F --> J["交付结果"]
    G --> J
    I --> J

读:pandoc 先行,成本最低。 只是要看内容,就 pandoc 文件.docx -o out.md,一行命令转成 markdown 通读。要看版式和图表效果,再把渲染结果转成图片看一眼。这条路线的前提判断是:大多数「读」的需求根本不需要理解 OOXML。

造:docx-js,代码即文档。 从零创建时,SKILL.md 不让模型手写 XML,而是让它写一段 JavaScript,用 npm 上的 docx 库(即 docx-js,GitHub 上的 dolanmiu/docx)声明式地拼出 Document、Paragraph、TextRun,然后 node 跑一遍吐出文件。理由很直白:OOXML 冗长且极易写错,代码生成是组合式的、可复用的、错了改代码比重排 XML 便宜得多。

改:拆包手术,正文重头。 这是全 Skill 最核心的一条路,也是它敢自称「编辑」的底气,下一节单独开膛。

路由设计里最聪明的是那两条反向护栏:

docx-js 是「从零生成」取向的库,把一份既有 Word 塞进去再导出,各种冷门格式块很容易丢失;反过来,手写 XML 造新文档则是给自己挖坑。一个工具的强项恰好是另一个工具的禁区,SKILL.md 用两句话把这个坑提前焊死。这种「明确告诉模型别干什么」的写法,比堆十个正确示例都管用。

四、核心手术台:unpack → 改 XML → pack

编辑路线的机制,本质是承认一个多数用户不知道的事实:.docx 就是一个 zip 压缩包,里面装着一堆 XML 文件(这是 ECMA-376 / ISO 29500 标准,不是黑科技)。真正的正文在 word/document.xml 里,样式在 styles.xml,编号在 numbering.xml,批注在 comments.xml。

Skill 目录下配了一对 Python 脚本干机械活:

文件 干的事 为什么必须是脚本
ooxml/scripts/unpack.py 解 zip 到目录,并用 lxml 把 XML 美化缩进 模型自己 unzip + 手动排版又慢又易错
ooxml/scripts/pack.py 把目录按 zip 规范重新打包成 .docx 压缩包结构有讲究,手搓容易打出坏文件
docx-js.md docx-js 用法参考 渐进披露:造文档时才需要读

典型用法就是「进目录、出文件」两个参数:先 unpack.py 合同.docx 合同目录/,改完 pack.py 合同目录/ 合同-改.docx。

拆包之后发生的事,才是这个 Skill 的灵魂——模型做的不再是「编辑文档」,而是「编辑文本」:

flowchart TD
    A["合同.docx"] -->|zip 解包| B["word/document.xml"]
    B --> C["定位目标段落"]
    C --> D["套上 w:ins 修订块"]
    D --> E["被删文字改 w:del"]
    E --> F["pack.py 回卷打包"]
    F --> G["Word 打开 满屏修订记录"]

OOXML 的段落结构是标准的俄罗斯套娃:w:p 是段落,w:r 是文字运行块,w:t 才是真正的文字。模型改字,就是在正确的 w:t 里动字符;要保留修订痕迹,就把新增内容套进 <w:ins> 块、把删除文字改写成 <w:del> 里的 w:delText,作者和时间戳都写在属性里。

这套设计的高明之处在于分工切得极干净:

xml 经过美化缩进后是规整的纯文本,正是语言模型最擅长的疆域。所谓「降维打击」,就是把一个需要 Word 界面、需要鼠标点选的 GUI 问题,压扁成一个 sed 都能参与的文本问题。

五、修订与批注:律师场景的杀手锏

三岔口里最值钱的分支是 tracked changes。审合同、改论文、过法务,全世界的严肃文档协作都开着修订模式——而市面上绝大多数「AI 处理 Word」方案到这里就露馅:要么把修订记录全洗掉直接改文(法务看到会跳起来),要么只能重做一份新的。

docx 件的解法是直接操纵修订标记:新增写 w:ins,删除写 w:del,每处修改自带作者名和时间戳。最终文件在 Word 里打开,就是一份标准的、可以逐条接受或拒绝的修订稿——AI 不是替你改文件,而是像人类协作方一样递交一份修改建议稿。批注同理:往 comments.xml 里写 w:comment,正文里打上锚点,AI 就能在第几段第几行「贴便签」。

这两个能力在 description 门牌里被专门枚举(还记得第 (3)、(4) 条吗),门牌与正文在这里形成了闭环:召回靠这两条,交付也靠这两条。

六、五维评分与替代路线对比

按本栏固定维度给 docx 件打分:

维度 权重 评分 依据
功能完整度 25% ★★★★★ 读、造、改、修订、批注全覆盖,文档任务的完整闭环
设计质量 25% ★★★★★ 三岔口路由 + 双向护栏 + 渐进披露,官方写法教科书
实战效果 20% ★★★★ 编辑链路极稳;但超长文档的 XML 对上下文窗口压力大
上手难度 15% ★★★★ 复制即装;运行时依赖 pandoc、node、python+lxml
社区活跃度 15% ★★★★★ 官方仓库维护,家族写法被社区大量继承
加权总分 4.7 文档三连里设计最完整的一件

再和三条常见的「野路子」比一比,看看绕开这个 Skill 的代价:

路线 新建文档 改既有文件 保留原格式 修订/批注 主要风险
docx 件 ★★★★★ ★★★★★ ★★★★★ ★★★★★ 需要装运行时依赖
手写 python-docx ★★★★ ★★ ★★ ★ 库偏创建取向,改旧文件常丢格式
pandoc 一把梭 ★★★★ ★ ★ 无 转换即有损,改完回不去
让模型凭空描述 Word ★★ ★ ★ 无 产出的 XML 大概率打不开

野路子全部在「改既有文件」这一列塌方——这正是 docx 件存在的理由。

七、什么时候别用它

诚实的拆解要说清边界,四类场景建议换工具:

  1. 画册级排版。精密版式设计不是 OOXML 的强项,走 HTML/CSS 或 pdf 件更合适。
  2. 几百页的大部头。document.xml 美化后可能膨胀到几十万行,通读不现实,必须先 grep 定位再局部读——上下文窗口是硬约束。
  3. 复杂内嵌对象。嵌入图表(chart 部件)的 XML 极其庞杂,pandoc 转读时也会丢信息,这类需求要先降低预期。
  4. 只想写 markdown。如果你的一切产出终点是 .md,这个 Skill 一辈子不会被触发,装了纯属占目录。

八、能抄走的三招

不管你下个 Skill 想做什么,docx 件有三处写法可以直接搬:

  1. 枚举式门牌。description 里一个动词一张门票,冷门高价值场景单独编号列出,最后加一条兜底。召回是 Skill 的生死线,正文写得再好,门牌没写全就一切免谈。
  2. 意图路由 + 反向护栏。正文先按用户意图分岔,每条岔路给「该用的工具」的同时,明确写「别用的工具」。禁令比示例便宜,一条禁令顶十个范例。
  3. 哑脚本 / 灵模型分工。把一切机械、确定、易错的环节(解包、打包、格式转换)下沉成脚本,模型只负责判断和编辑。你的 Skill 里如果有一段「每次都要重复操作的命令」,它就该变成脚本,而不是一段提示词。

九、安装与试用

# 方式一:skills CLI 一键装全家族
npx skills add anthropics/skills

# 方式二:手动克隆,只取 docx 一件
git clone https://github.com/anthropics/skills
cp -r skills/document-skills/docx ~/.claude/skills/docx

装完在 Claude Code 里新开会话(技能列表启动时扫描),直接丢一份真实文档试三条路各一遍:

1.「读一下这份合同,总结各方义务」        → 应走 pandoc 路线
2.「帮我起草一份项目周报模板,带表格」    → 应走 docx-js 路线
3.「在修订模式下把第 3 条的违约金改掉,并加批注说明理由」
                                          → 应走拆包手术路线

第 3 条是试金石:如果返回的文件在 Word 里显示为规范的红色修订记录,这件 Skill 就是真金白银;如果它悄悄洗掉了修订痕迹,那就是仿品。

推荐排行榜

文档三连拆完,官方件的家族基因也看全了:xlsx 不算数学,pdf 不买贵的,docx 不开 Word。三件的共同哲学是同一句——把 GUI 软件的问题降维成文本问题,然后把文本问题交给最会读写的那个东西。

参考来源

  1. anthropics/skills — 官方 Skills 仓库 — document-skills/docx 所在仓库,本文拆解对象的本体
  2. docx SKILL.md 原文(raw) — 门牌与三岔口路由的原始出处
  3. Equipping agents for the real world with Agent Skills — Anthropic Engineering — 渐进披露与描述常驻机制的设计背景
  4. docx — npm — 创建路线所用的 docx-js 库
  5. Pandoc — 读取路线所用的万能转换器

[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。

51学通信知识星球海报-扫码加入