Show HN:Docx-CLI:智能代理以一半的时间和令牌读写Word文档

Hacker News Top 工具

摘要

docx-cli 是一个 CLI 工具,通过使用稳定定位器并原地修改 XML,使 AI 代理能够高效读取和编辑 Word 文档,与默认方法相比,令牌使用量和时间减少一半。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/07 20:14

kklimuk/docx-cli 来源:https://github.com/kklimuk/docx-cli # docx-cli 观看:Claude 填写并标注 NDA(保密协议)的变化(https://www.loom.com/share/da70269a970f42caa138fb3389b4b9cc) 一个为 AI 代理构建的 .docx CLI。 添加评论、建议修改(redline)、编辑 Word 文档,不破坏格式或丢失内容——之后由人类在 Word 中接受或拒绝。 - 将 .docx 交给 Claude 或 Codex,拿回一份带有批注和修改标记的副本——在 Word 中打开,像往常一样接受或拒绝。 - 代理通过稳定定位符和字符偏移量(p3:5-20)定位文本;人类在磁盘上看到正常的 Word 格式。 - 自定义样式、主题颜色、嵌入对象——所有内容都保留。CLI 直接修改 XML,而不是通过一个有损模型重新输出。 ## 为什么用 docx-cli? 默认情况下,代理编辑 Word 文档的方式是解压 .docx 并手动编写内部的 OOXML。这需要一个强大的模型才能做好,消耗大量 token,而且经常生成 Word 无法打开的文件。 docx-cli 向代理提供简单的命令以及一个带注释的 Markdown 视图,因此它无需推理 XML。 我们测量了它——一个受控的 A/B 对比测试:六个真实文档任务(填写 NDA、填写发票、修改简历样式、标注合同修改、定稿合同、撰写期刊文章),使用相同的起始文件,由一位独立评审员根据 Word 渲染的页面对每个结果进行评分。每个模型档次各运行三轮: | | Haiku(弱,便宜) | | Sonnet(强) | | | :———————— | ——————: | ––––––––––: | –––––––: | ––––––––––: | | | docx-cli | 默认技能 | docx-cli | 默认技能 | | 成功完成任务数(共 6 个) | 4.3 (4–5) | 0.7 (0–1) | 6.0 (6–6) | 4.0 (4–4) | | 正确渲染数(共 6 个) | 6 | 3.7 | 6.0 | 4.7 | | 完全损坏的文档 | 0 | ~1/次运行(最多 2 个) | 0 | 0 | | 输入 token 数 | 2.4M | 6.1M (2.6×) | 1.6M | 3.6M (2.2×) | | 墙上时钟时间 | 924 秒 | 1,882 秒(慢 2.0×) | 1,175 秒 | 2,029 秒(慢 1.7×) | - 正确性差距在便宜的 Haiku 上最大(约 6×),而前沿模型也无法弥补——默认技能在 Sonnet 上最高只完成 4/6,每次运行都丢掉了合同修改和简历任务。 - 成本和速度的惩罚与模型无关——在两个档次上均多消耗约 2.2–2.6 倍 token,慢约 1.7–2 倍,且 token 和时间范围无重叠。 - Word 无法可靠打开默认技能的成果——36 个输出中有 5 个无法打开;而 docx-cli 的所有 36 个输出均一次打开成功。 完整方法、每任务评分标准以及并排渲染图:对比测试报告(https://kklimuk.github.io/docx-cli/)。 ## 安装 npm ——最简单的路径(需要 Bun >= 1.3): sh bun add -g bun-docx # 或者直接运行而不安装: bunx bun-docx read doc.docx 独立二进制文件(无需 Bun)。每个版本都会发布预编译的二进制文件以及 SHA256SUMS 清单,安装程序会在安装前验证二进制文件的 SHA-256sh curl -fsSL https://raw.githubusercontent.com/kklimuk/docx-cli/main/install.sh | sh 支持 PREFIX(默认为 $HOME/.local/bin)和 VERSION(默认为 latest)。为 linux/x64、linux/arm64、darwin/x64、darwin/arm64、windows/x64 预编译。 愿意先检查一下?从最新版本(https://github.com/kklimuk/docx-cli/releases/latest)下载 docx- + SHA256SUMS,验证后执行 chmod +x,并放入 PATH。 ## 快速示例:填写 NDA 仓库中包含一个 Common Paper 互助 NDA 模板,路径为 tests/fixtures/mnda.docx。以下是代理用于填写封面页并添加修改标注的原语——与上面视频中展示的流程相同。每条命令都已端到端地针对该测试文件验证过: sh # 先复制一份——没有撤销功能(使用 git 作为历史记录;CLI 直接覆盖原文件) cp tests/fixtures/mnda.docx mnda-filled.docx # 读取封面表格,让代理知道有哪些占位符 docx read mnda-filled.docx --from t1 --to t1 # 填充黄色高亮的括号占位符 docx replace mnda-filled.docx "Fill in: today's date" "May 6, 2026" docx replace mnda-filled.docx "fill in state and/or county" "California" docx replace mnda-filled.docx "fill in state" "California" docx replace mnda-filled.docx "Fill in, if any." "None." # 确认没有剩余需要填充的内容(每匹配一条输出一行定位符,无匹配则退出码 0) docx find mnda-filled.docx '\[(Fill|fill)[^]]*\]' --regex --all # 开启修订模式以便进行修改标注 docx track-changes mnda-filled.docx on # 在“使用与保护”条款中收紧“having a reasonable need to know” docx replace mnda-filled.docx \ "having a reasonable need to know" \ "with a documented need to know" # 为人工审阅者添加评论——使用 --at 定位到某个现有范围 docx comments add mnda-filled.docx --at p7:0-30 \ --text "Should we narrow 'representatives' to a named list?" 在 Word 中打开 mnda-filled.docx:修订和评论出现在审阅窗格中,可以接受、拒绝或回复。或者运行 docx track-changes accept mnda-filled.docx --all 从 CLI 直接合并。 ## 作为代理技能使用 docx-cli 以 Agent Skill(https://agentskills.io)的形式提供——一份 SKILL.md 文件,可在 Claude Code、Codex、Pi 以及其他支持开放技能格式的平台上工作。该技能教代理定位符模型以及修订/评论/填写工作流,然后在运行时委托给 docx --help,因此不会过时。 为什么用技能? docx-cli 是为最弱、最廉价的代理构建的。在我们的弱代理基准测试中——6 个真实文档任务(填写合同、标注修改、添加评论、修改样式、从头撰写文章),根据 Word 渲染结果评分,每个运行 3 次——使用 docx-cli 的 Haiku 完成了 4.3/6 个任务,而使用默认 Claude 技能只完成了 0.7/6,且 token 消耗大约减少 2.5×;使用 Sonnet 时是 6/6 vs 4/6,token 大约减少 2×。而且 docx-cli 的每个输出都能在 Word 中一次成功打开——它从不生成渲染器拒绝的文件。(方法和测试工具:.claude/skills/weak-agent-test。) ### 安装 任何代理(skills.sh(https://skills.sh)) ——一条跨平台命令,自动安装到你正在使用的代理中: sh npx skills add kklimuk/docx-cli Claude Code ——一行插件安装: /plugin marketplace add kklimuk/docx-cli /plugin install docx-cli@docx-cli Codex ——添加市场(插件的技能会自动发现): codex plugin marketplace add kklimuk/docx-cli Pi ——一条命令安装(package.json 中的 pi 清单会自动拉取技能),然后调用 /skill:docx-clipi install git:github.com/kklimuk/docx-cli # 全局安装;添加 -l 用于项目(团队共享) # 手动替代方案:pi --skill /path/to/docx-cli/skills/docx-cli 任何平台 / 手动安装 ——将 skills/docx-cli/ 放入代理的技能目录(例如 ~/.claude/skills/ 或跨工具目录 ~/.agents/skills/)。首次激活时,技能的 scripts/bootstrap.sh 会安装 docx 二进制文件(并自动更新过时的版本)。 ### 保持技能最新 二进制文件是最终真相:docx info skill 会打印出已安装版本的规范 SKILL.md,并且如果提交的副本出现偏差,CI 测试会失败。在任何更改后重新生成: sh docx info skill > skills/docx-cli/SKILL.md ## docx --help 是权威合同 > 代理:在构造调用之前请先运行 docx --help 每个命令的 --help 是其标志、定位符形式以及精确输出形状的最终依据——本 README 是地图,不是领土。 > > 另外两个必须阅读的内容: > > - docx info locators ——规范的定位符语法(--json 用于机器可读格式)。顶层 docx --help 明确说明:“强烈建议代理运行 docx info locators 以了解其能力。” > - docx info schema ——read --ast 输出的 AST 类型定义(--ts 用于 TypeScript 源代码)。 ## 命令参考 docx <verb>docx <verb> <subcommand>。每个命令都有 --help。分为两组:读/查询命令将数据输出到标准输出;修改命令更改文件(支持 --dry-run-o/--output PATH-v/--verbose)。 ### 读取与查询(输出到标准输出,从不写入文件) sh docx read FILE [--from LOC] [--to LOC] [--accepted | --baseline | --current] [--comments] docx read FILE --ast # 输出 JSON-AST 而不是 Markdown(禁用仅适用于 Markdown 的标志) docx find FILE QUERY [--regex] [--ignore-case] [--all] [--nth N] [--current | --baseline] [--exact] [--json] docx find FILE (--highlight COLOR|any | --color HEX | --bold | --italic | --underline) [--all] [--json] # 按格式查找(无 QUERY) docx wc FILE [LOCATOR] [--accepted | --baseline | --current] [--json] docx outline FILE [--style-prefix S] [--json] docx styles FILE [--used] [--at STYLEID] [--json] # 样式目录(不在正文中)——有哪些 --style 名称可用 docx styles --catalog [--json] # 内置样式,可按需应用(Title、Heading1–9、Quote 等),无需 FILE 参数 docx styles set FILE --at STYLEID [--bold --color HEX --size PT --font NAME --space-before PT --indent-left IN ...] # 重新设置使用该样式的每个段落/运行的样式 docx styles create FILE STYLEID [--type paragraph|character] [--name "..."] [--based-on STYLEID] [--next STYLEID] [formatting] # 定义新的自定义样式 docx render FILE [--out DIR] [--engine word|libreoffice|auto] [--dpi N] [--pages 1-N] [--format png|jpg] docx comments list FILE [--include-resolved] [--thread cN] docx footnotes list FILE docx endnotes list FILE docx headers list FILE docx footers list FILE docx images list FILE docx hyperlinks list FILE docx track-changes list FILE docx info schema [--ts] docx info locators [--json] docx read 将 Markdown 正文无法显示的结构性事实以 HTML 注释形式(<!-- ... -->)呈现。这些是读取时的可见性提示——代理可以看到结构,但导入器会丢弃它们(结构在正常编辑中保持不变,read --ast 是无损视图,docx sections / docx tables ... 用于管理它们)。它们仅在有偏差时发出(仅当值与文档默认值不同时,因此普通文档保持干净): - 逐段落样式/间距/缩进——最常见的注释——以 <!-- docx:paragraph style="..." spacing-before="..." --> 形式呈现,仅在有偏差时发出(仅输出与样式/文档默认值不同的属性)。每个属性都映射到相应的 edit/insert 标志(--style--alignment--space-before/--space-after--line-spacing--indent-left/--indent-right/--first-line/--hanging),因此代理可以读取值并重新应用。段落的定位符作为其前导的 pN 标记携带在此注释中,因此有注释的段落不会同时获得一个裸的 <!-- pN -->(只有没有偏差的段落才会获得裸定位符)。完整属性在 read --ast 中。 - 分节符呈现为自身一行的 <!-- docx:section s1 type="nextPage" ... -->——绝不会是裸的 ---(那是分隔线,误用它会把布局变成边框段落)。手动编写的 --- 现在明确表示分隔线。 - 页面几何在页面偏离美国信纸-纵向-1 英寸时,以前导的 <!-- docx:page s1 text-width="..." ... --> 注释呈现——text-width 是可用的列宽,前导的 sN 是用于重新应用的节。当后续节的页面设置与第一节不同时,会添加 varies="by-section" 属性——在这种情况下,即使第 1 页是普通的默认信纸-纵向-1 英寸,该注释也会触发(此时仅显示 text-width + varies="by-section"),警告显示的几何仅描述第一节;使用 read --ast 获取每节的确切几何。精确的缇单位(twips)在 read --ast 中(在每个分节符上:pageWidth/pageHeight/pageOrientation/margin*)。使用 docx sections --orientation/--size/--margins 设置整个文档(不带 --at → 所有节都应用,因此多节文档不会遗漏后面的节),使用 docx sections --at sN ... 设置一个节,或在创建时设置;在修订模式下,每节记录为一个 <!-- docx:page-change ... -->(在 Word 中接受/拒绝)。更改边距/尺寸也会自动重新对齐右侧制表符列(简历中的日期/地点):原来校准到旧边距的左对齐制表符会溢出并在新宽度处换行,因此页面设置会将每个左对齐制表符转换为在新边距处对齐的右对齐制表符,并报告修复了多少个——无需再执行 --tabs right 步骤。 - 表格在列不均匀或边框与默认值不同时,携带前导的 <!-- docx:table borders="..." ... --> 注释,以及在合并/着色单元格上的 <!-- docx:cell rowMerge="continue" shading="..." --> 注释——因此在 GFM 中不可见的结构变得可见(read --ast 中的 Table.borders / TableCell.shading)。 - 图像后跟 <!-- docx:image size="..." float="..." ... --> 注释:size 始终存在(仅 <!-- ... --> 不会说明“6 英寸宽”),而 float/wrap/align/overflow 仅在有偏差时出现(内联、边界内的图像仅显示其尺寸)。overflow 标记宽度超过可用文本列的图像(read --ast 中的 ImageRun.floating/wrap/align 以及 EMU 范围)。 - 页眉/页脚<!-- docx:header type="default" --> / <!-- docx:footer type="default" --> 注释呈现(type 属性仅在 first/even 时出现)。字段作为 token 读取——{page} {pages} {date} {time} {styleref:NAME} {filename} {title} {author}{time} 为只读)。在所有节上都相同的边距信息放在文档顶部;因节而异的边距信息会在该节的开头呈现(与 docx:section 注释一起,该注释也会在节的开头呈现,并带有 applies-to="...(下方)"),因此每个提示正好在被其支配的内容之前读取。文本存在于注释属性中,导入器会丢弃它(无法重新注入到正文中);完整条目在 read --ast 中的 headers/footers 下(Marginal[])。使用 docx headers/docx footers 设置。 - 修订模式状态在文档的追踪开关已启用时,在顶部显示 <!-- docx:track-changes on --> 行(仅在有偏差时——关闭则不输出任何内容),因此代理可以看到后续编辑会被标记为修订,而无需检查 settings.xml。使用 docx track-changes FILE on|off 切换;三种修订读取视图(--accepted/--current/--baseline)将在下面的审阅循环中介绍。 ### 修改(原地更改 FILE;全部支持 --dry-run-v;除 create 外每个修改器都支持 -o PATHcreate 的位置参数 FILE 已经是输出文件) sh docx create FILE [--title T] [--author A] [--text "..." | --text-file PATH | --from PATH.md | --from -] [--orientation O] [--size SIZE] [--margins M] [--header "..."] [--footer "..." | --page-numbers] [--force] docx insert FILE (--after | --before) LOCATOR # LOCATOR = pN | tN | sN | tN:rRcC:pK docx insert FILE (--at-start | --at-end) # 无定位符——在文档开头/末尾插入 docx edit FILE --at LOCATOR # LOCATOR = pN | pN:S-E | pN-pM | sN | eqN | tN:rRcC:pK[:S-E] docx delete FILE --at LOCATOR # LOCATOR = pN | pN-pM | tN | sN | tN:rRcC:pK (单元格段落) docx sections FILE [--at LOCATOR] [--columns N] [--type T] [--orientation O] [--size SIZE] [--margins M] # LOCATOR = pN-pM | pN (将某个范围包裹在 N 列中) | sN (编辑一个节的列/类型/页面几何)。多列布局和页面设置都在这里。页面几何(边距/方向/尺寸)带不带 --at 作用于整个文档(所有节);--at sN 针对一个节。列和类型需要 --at。 docx styles set-default-font FILE "Font Name" [--size N] [--all] # 文档范围字体:设置 styles.xml 中的 docDefaults 以及主题 major/minor;--all 还会重新指向那些固定了自己字体的样式/运行 docx replace FILE PATTERN REPLACEMENT [--at pN] [--regex] [--ignore-case] [--all] [--limit N] [--current | --baseline] [--exact] [--track] [--dry-run] # 保留运行的格式(粗体/字体)以及任何制表符——这是填充格式化/带制表符的模板行(例如 "**公司名称**⇥日期")的无重建方式;不要手动构建 --runs 来重新填充。 # --at pN(或单元格段落 tT:rRcC:pN)将替换限制在一个段落内——当同一个占位符在文档中重复出现时使用(例如简历中每个条目的“城市,州”),并且你希望只填充一个。 docx pagenumber FILE LOCATOR [--format decimal|roman|...] [--start-at N] [--style S] # 在定位符处插入页码字段——处理页眉/页脚中的页码,以及文档正文中的任意页码。所有标志均为可选:省略则保留 Word 默认值。如果未提供 --start-at,则不清除已有的起始值。对于已包含页码的页眉/页脚,它会替换该字段而不是创建重复。 docx headers FILE LOCATOR "text" [--type default|first|even] [--page-numbers] [--from-section sN] [--to-section sN] [--keep-existing] [--no-clear] # 设置或替换指定节的页眉。省略 --locator 则设置活动节的页眉(即读取时的最后一个节)。--keep-existing 保留不在同一位置的字段;--no-clear 保留该页眉中*所有*现有内容。 docx footers FILE ... # 与页眉相同,但用于页脚。 docx comments add FILE --at LOCATOR --text "..." [--author NAME] [--thread cN] docx comments resolve FILE cN [cN ...] # 将评论线程标记为已解决 docx comments delete FILE cN [cN ...] docx images insert FILE --at LOCATOR --image PATH [--width IN] [--height IN] [--align left|center|right] [--wrap inline|square|tight|behind|front] [--alt "..."] # 插入图像;--width 和 --height 以英寸或厘米为单位(例如 "3in"、"7.62cm");如果省略一个,则按比例缩放。插入到定位符处的段落末尾。 docx hyperlinks add FILE --at LOCATOR --url URL [--text "..."] [--tooltip "..."] # 在段落末尾插入超链接。如果未提供 --text,则使用 URL。 docx hyperlinks edit FILE LOCATOR [--url URL] [--text "..."] [--tooltip "..."] # 编辑现有超链接(仅修改提供的字段) docx track-changes FILE on|off # 切换修订模式 docx track-changes accept FILE [--at LOCATOR] [--all] [--type insertion|deletion|formatting|section|paragraph|paragraphFormatting|run|cellMerge|comment|moveFrom|moveTo] # 接受特定或全部修订 docx track-changes reject FILE [--at LOCATOR] [--all] [--type ...] # 拒绝特定或全部修订 docx table insert FILE --at LOCATOR --rows R --cols C [--style grid|plain] [--borders all|none|grid] # 在定位符之后插入一个 R×C 表格(或空定位符则在文档末尾) # 默认样式:网格(所有可见边框);plain = 无边框;grid = 仅外部和列间边框 (inner) docx table gridlines FILE LOCATOR on|off # 切换表格的边框显示 docx table insert-row FILE LOCATOR [--at end] [--nth N] [--above | --below] # 在定位符行上方或下方插入新行。如果定位符在表格内,则添加到该表格。 docx table delete-row FILE LOCATOR [--nth N] # 删除定位符行。如果定位符在表格内,则删除该行。 docx table set-cell FILE LOCATOR [--merge-h] [--merge-v] [--unmerge] [--shading "#rrggbb"] # LOCATOR = tN:rRcC:pK[:S-E] — 设置单元格属性(合并/着色) docx insert (段落/运行级操作) # 在定位符处插入新内容。LOCATOR 指定插入点。 # 新内容由标志构建: # --text "..." (必选,除非使用 --image-path) # 格式化标志(可选): # --bold, --italic, --underline, --strike, --size PT, --color HEX, --font NAME, --highlight COLOR, --superscript, --subscript # --alignment left|center|right|both (段落级) # --style STYLEID (段落级) # --space-before PT, --space-after PT (段落级) # --indent-left IN, --indent-right IN, --first-line IN (段落级) # --line-spacing N (单倍行距 = 1, 2.0 为双倍等) # --header "..." --footer "..." (对表格中的新段落无效) # 对于多个格式化文本片段,可以传递多个 --text/--format 对。 # 示例:在 p3 之后插入一个带格式的段落 # docx insert my.docx --after p3 --text "这是新段落" --style Heading2 ### 创建命令 docx create 从零开始构建一个 .docx 文件。支持通过 --from 从 Markdown 文件(或标准输入)导入,或使用 --text/--text-file 生成纯文本内容。如果未提供任何来源,则创建一个空文档。 sh docx create output.docx --title "我的文档" --author "用户" --text "文档内容" # 创建一个包含标题和作者的空文档 docx create output.docx --from input.md # 从 Markdown 文件创建 docx create output.docx --from - # 从标准输入创建 cat input.md | docx create output.docx --from - # 管道输入 支持的 --from 格式:Markdown(带有一些 Word 兼容的扩展)。更多细节请参阅 docx create --help。 ## 审阅循环:修订、评论、版本 使用 docx-cli 的典型审阅循环: 1. 读取并分析docx read 显示文档并带有结构注释。代理查看占位符、需要编辑的区域等。 2. 编辑并标记:使用 docx replace(填充)、docx edit(修改文本)、docx insert(添加内容)。如果启用了修订模式(docx track-changes on),这些操作会被标记。 3. 添加评论:使用 docx comments add 在特定位置添加评论。 4. 接受或拒绝:在 Word 中审阅,或通过 docx track-changes accept/reject 从 CLI 处理。 5. 定稿:接受所有修订后,文档进入最终状态。 三种修订视图: - --current:显示当前状态(包括未接受的修订)——默认行为。 - --accepted:显示如果接受所有修订后的文档。 - --baseline:显示原始文档(无修订标记)。 使用 docx read --accepted 预览最终文档,使用 docx read --baseline 对比原始版本。 ## 定位符系统 定位符是代理定位文档中位置的方式。格式: - pN:段落 N(从 1 开始,按顺序) - pN:S-E:段落 N 中字符偏移 S 到 E(包含) - pN-pM:从段落 N 到段落 M 的范围 - tN:表格 N(按文档顺序) - tN:rRcC:表格 N 中第 R 行第 C 列 - tN:rRcC:pK:表格 N 中第 R 行第 C 列的段落 K - sN:分节符 N - eqN:等式/公式 N - on:对象 N(图像、形状等) 有关完整语法,请运行 docx info locators。 ### 将定位符应用于命令 大多数命令接受 --at LOCATOR 来指定操作位置。一些命令(如 docx replace)接受 --at pN 将替换限制在一个段落内。对于范围操作(如 docx sections),--at pN-pM 定义范围。 ### 定位符示例 - p3:文档中第三个段落。 - p3:5-20:第三个段落中从第 5 个字符到第 20 个字符。 - p3-p7:从第三个到第七个段落。 - t2:r1c3:第二个表格第一行第三列。 - t2:r1c3:p2:第二个表格第一行第三列的第二个段落。 - s2:文档中第二个分节符。 ## 标记化(Tokenization) docx-cli 使用标记化(tokens)来表示文档内容。标记是文本、格式化标记和结构元素的离散单元。标记化在内部进行,对用户透明,但对于理解 docx read 输出的结构以及如何精确定位文本很有用。 读取时,文档被转换为带注释的 Markdown 文本。注释包含定位符(如 <!-- p3 -->)和其他结构信息。## 配置和自定义 docx-cli 支持通过环境变量进行配置: - DOCX_BINARY_PATH:指定 docx 二进制文件的位置(用于技能引导)。 - DOCX_SKILL_DIR:指定技能目录(用于自定义技能路径)。 - DOCX_DEFAULT_ENGINE:设置用于 docx render 的默认渲染引擎(wordlibreofficeauto)。 ## 故障排除 ### 常见问题 1. Word 无法打开输出文件:确保你没有损坏文件。docx read 可以在打开之前验证文件。如果文件损坏,检查是否使用了不受支持的字符。 2. 修订标记未显示:确保在编辑之前已使用 docx track-changes on 启用修订模式。 3. 定位符找不到:确保定位符是有效的(运行 docx info locators 验证)。对于正则查找,使用 --regex 启用模式匹配。 4. 格式丢失:某些操作可能会丢失格式。使用 docx replace(保留格式)而不是 docx edit(可能更改运行级格式)进行模板填充。 5. 性能问题:大型文档可能处理缓慢。将操作限定在相关定位符上(使用 --at--from/--to)。 ### 获取帮助 每个命令都有 --help。对于更复杂的问题,请查阅: - 运行 docx info schema 获取 AST 模式。 - 运行 docx info locators 获取定位符语法。 - 查看仓库中的示例(tests/fixtures/)。 ## 贡献 欢迎贡献!请查看 CONTRIBUTING.md 了解指南。 ## 许可证 根据 MIT 许可证授权。请参阅 LICENSE 文件。 ## 鸣谢 - Common Paper 提供了 NDA 模板。 - 所有为 OOXML 解析和操作库做出贡献的人。

相似文章