.docx -> HTML -> patch -> .docx

让 AI 安全地修改 Word 文档

Docmod 把 Word 文档转换成 Agent 能读写的标准 HTML。Agent 只输出改动片段,Docmod 再把变化精确写回原始 docx,未修改的 SmartArt、图表、页眉页脚和批注保持不动。

增量更新 AI 输出改动,不重写全文。
字节级保留 未命中的 OpenXML part 不被重建。
稳定锚点 以 data-id 精确定位段落、表格和批注。
模板约束 .doct 管内容、角色和写作规则。

核心循环很短

Docmod 的接口围绕 .docmod 包设计:读出来是 HTML,写回去是 changes fragment,导出时才把积累的改动一次性 patch 到原始 docx。

01 / import

docx 进入包

创建 .docmod,同时保留原始 source.docx 作为 patch 基底。

02 / read

Agent 读 HTML

段落、表格、图片、批注和修订以普通 HTML 暴露。

03 / change

只写变化

使用 data-iddata-afterdata-find 表达增删改。

04 / patch

XML 手术

只替换变化元素,其他 body child 和 package part 原样保留。

05 / export

输出 docx

最终文档保持 Word 生态里的样式、媒体和复杂对象。

Agent 不需要懂 OpenXML

HTML 是工作面

结构用 <p><table><figure>,格式用扁平 inline style 和 Word style role。

data-id 是唯一锚点

不要数第几个段落;读取 outline 后,按不透明 ID 精确改动。

不可转换内容只读保留

嵌套表格、文本框、SmartArt、图表和 OLE 会成为 opaque 区域,patch 时原样保留。

changes.html fragment
<p data-id="6EAA1C8E">
  Revenue grew by <b>32%</b> in Q2.
</p>

<table data-id="t1" data-insert-row-after="last">
  <tr><td><p>New market</p></td><td><p>14.8M</p></td></tr>
</table>
terminal quick start
docmod create work.docmod --from report.docx
docmod read work.docmod --outline
docmod edit work.docmod changes.html
docmod export work.docmod --to report.updated.docx

先跑起来,再接 Agent

透明 docx 输入

写命令可直接接受 .docx,底层通过 ~/.docmod/cache/ 复用包。

诊断可见

diagnostics[] 会告诉你 data-find 未命中、只读区域拒绝、表格索引越界等问题。

常驻进程可选

docmod serve 用预热解析和会话缓存降低连续编辑成本。

面向真实 Word 文档

Docmod 的边界不是“把 docx 变成网页”,而是让 Agent 在不破坏 Word 原生结构的前提下完成编辑、审阅、排版和模板填充。

批注与修订

读取、列出、接受、拒绝、删除;支持批注回复和 resolved 状态。

表格增量操作

行列级 insert/delete,不需要为了加一列重写整张表。

格式和角色

data-pstyle / data-rstyle 映射 Word 样式,模板负责真实格式。

.docmod 和 .doct

一个包表示文档工作区,一个包表示模板规范。Agent 编辑时读两者, 于是改动既有定位,也有格式和写作边界。

document.docmod

  • document.htmlAgent 读写的 HTML
  • images/SHA 命名、自动去重的图片
  • source.docxXML surgery 的原始基底
  • meta.json统计、模板引用和摘要

template.doct

  • content.json字段定义:文档要写什么
  • format.json角色定义:每种内容怎么排
  • document.html完整模板和占位符
  • guides/写作、审阅、排版规则