docx

数据 已审计 @anthropics
信任分
94/100
兼容 Agent
1
许可证
Proprietary. LICENSE.txt has complete terms
速查档案 只列事实:领域、Agent、信任分、作者、原文章节。装与不装请看下方作者解读。
领域
数据
兼容 Agent
Claude Code
信任分
94 / 100 · 已通过审计
作者 / 版本 / 许可
@anthropics · Proprietary. LICENSE.txt has complete terms
安装命令数
1 条

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

想读作者英文原文? ↓ 滚到正文区切换 · 在 GitHub 查看 ↗

解读由编辑根据原文凝练而成,命令、链接、术语均与作者原文一致;想看完整论述请切到右侧

设计思路

docx 是 Anthropic 出的「程序化 Word 文档读写」skill,定位很硬核:通过直接操作 OOXML(document.xml + 关系文件 + Content_Types)让 LLM 能新建 / 修改 .docx,包括修订追踪 (track changes)评论 (comments)插入图片等高级特性。这些场景普通 python-docx 库支持得不全,OOXML 直写是更可靠的路。

修订追踪(核心难点)

接受他人插入 = 把对方的 <w:ins> 解开成普通 run;拒绝他人插入 = 在对方的 <w:ins> 里再嵌一层自己的 <w:del>恢复他人删除 = 不动对方的 <w:del>,自己另写一个 <w:ins> 跟上同样文字。

<!-- 拒绝 Jane 的插入 -->
<w:ins w:author="Jane" w:id="5">
  <w:del w:author="Claude" w:id="10">
    <w:r><w:delText>their inserted text</w:delText></w:r>
  </w:del>
</w:ins>

评论

跑过 comment.py 之后再往 document.xml 里加标记。关键陷阱<w:commentRangeStart><w:commentRangeEnd><w:r>兄弟节点,永远不要嵌进 <w:r> 里。回复评论用 --parent,标记嵌套在父评论的 range 内:

<w:commentRangeStart w:id="0"/>
  <w:commentRangeStart w:id="1"/>
  <w:r><w:t>text</w:t></w:r>
  <w:commentRangeEnd w:id="1"/>
<w:commentRangeEnd w:id="0"/>
<w:r><w:rPr><w:rStyle w:val="CommentReference"/></w:rPr><w:commentReference w:id="0"/></w:r>
<w:r><w:rPr><w:rStyle w:val="CommentReference"/></w:rPr><w:commentReference w:id="1"/></w:r>

插入图片(四步)

  1. 文件丢进 word/media/
  2. word/_rels/document.xml.rels<Relationship Id="rId5" Type=".../image" Target="media/image1.png"/>
  3. [Content_Types].xml<Default Extension="png" ContentType="image/png"/>
  4. document.xml 里用 <w:drawing> 引用——单位是 EMU,914400 = 1 inch

依赖

  • pandoc:文本提取
  • docx(npm 全局包 npm install -g docx):新建文档
  • LibreOffice:PDF 转换(沙盒环境通过 scripts/office/soffice.py 自动配置)
  • Popplerpdftoppm 转图片

适合谁

  • 自动化生成商务报告 / 合同 / 标书的开发者
  • 有「机器协作 + 人工 review」交替循环的文档流(修订追踪场景刚需)
  • 给 Office 文档做批量操作的脚本作者

何时不该用

  • 只是 Markdown 输出——更简单
  • 只读 .docx 抽文字——pandoc 一句命令搞定,不必走 OOXML

配套

pptx(同套思路,针对 PowerPoint)、xlsx(Excel)、make-pdf(最终导出)。