闲社服务运行正常AI智能体自动化平台
d

编辑文档

技能标识:docx-editing

>-

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 0.3.0
检测标记
后台标记通过
免费
免费获取
2
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

编辑文档

使用 Safe-DOCX 编辑 .docx 文件

Safe-DOCX 是一个本地 MCP 服务器,用于对现有 .docx 文件进行精准编辑。它能保留格式、生成修订标记,并且一旦安装完成,完全在本地文件系统上运行,零网络活动。

源代码与审计

Safe-DOCX 完全开源(MIT 许可证)。安装前请审查完整源代码:

  • - GitHub:https://github.com/UseJunior/safe-docx
  • npm 仓库:https://www.npmjs.com/package/@usejunior/safe-docx
  • 代码覆盖率:每次发布均通过 Codecov 发布
  • 合规性测试框架:每次提交均在 CI 中运行自动化规范覆盖率测试
  • 无安装后脚本——验证:npm view @usejunior/safe-docx scripts 显示无 postinstall 或 install 钩子

以下所有安全声明均可通过阅读源代码验证。

运行时要求

Safe-DOCX 需要在主机上提供以下二进制文件:

二进制文件最低版本原因
node18.0.0来自 packages/safe-docx/package.json engines 字段的权威版本
npx
与 npm 捆绑 | 由推荐的 MCP 连接器用于启动服务器 |

如果您不想使用 npx,请参阅下面的离线/固定版本安装部分了解替代方案。

安全模型

Safe-DOCX 的安全模型分为两个不同阶段:安装时(获取包时)和运行时(MCP 服务器运行时)。

安装时行为(需要网络,一次性)

  • - npm 仓库获取——推荐的连接器命令 npx -y @usejunior/safe-docx 在首次运行时从 registry.npmjs.org 下载包。后续运行使用缓存副本,除非清除缓存。
  • 无安装后脚本——该包声明无 postinstall、preinstall 或 install 钩子。使用 npm view @usejunior/safe-docx scripts 验证。
  • 来源验证——发布时使用 npm 来源验证(--provenance),因此您可以验证该包是通过 GitHub Actions 从公共 GitHub 仓库构建的。
  • 如果您需要保证离线安装——固定特定版本并在本地提供。请参阅下一节。

运行时行为(零网络)

  • - 仅本地 stdio 运行时——MCP 服务器作为子进程运行,从不绑定端口。验证:入口点(src/server.ts)使用 StdioServerTransport,无 HTTP 监听器。(源代码)
  • 无出站网络调用——运行时,该包发出零次出站 HTTP 请求。验证:grep -r fetch\|http\.\|https\.\|net\. packages/safe-docx/src/ 在应用程序代码中无匹配项(测试夹具除外)。
  • 路径策略——仅可访问 ~/(主目录)和系统临时目录下的文件。符号链接必须解析到允许的根目录。
  • 存档防护——压缩炸弹检测和恶意负载拒绝机制可防止格式错误的 .docx 输入。

离线/固定版本安装

对于 npx 自动获取不可接受的高安全环境,请手动安装包并固定版本:

bash

选项 1:全局固定特定版本


npm install -g @usejunior/safe-docx@0.9.0

然后配置您的 MCP 客户端通过路径调用它:

command: safe-docx

args: []

选项 2:将包供应商到您的项目中

npm pack @usejunior/safe-docx@0.9.0

检查 tarball,然后从磁盘安装:

npm install -g ./usejunior-safe-docx-0.9.0.tgz

选项 3:从源代码构建(最可审计)

git clone https://github.com/UseJunior/safe-docx.git cd safe-docx git checkout npm ci npm run build npm link packages/safe-docx

完成上述任一操作后,您的 MCP 客户端配置变为:

json
{
mcpServers: {
safe-docx: {
command: safe-docx,
args: []
}
}
}

使用 command: safe-docx(已安装的二进制文件)而不是 command: npx 可消除每次调用时的安装时网络获取。

始终固定版本

即使使用 npx,您也可以固定版本以防止意外更新:

json
{
mcpServers: {
safe-docx: {
command: npx,
args: [-y, @usejunior/safe-docx@0.9.0]
}
}
}

升级前,请查看变更日志:https://github.com/UseJunior/safe-docx/blob/main/CHANGELOG.md

何时使用此技能

在以下情况下使用 Safe-DOCX:

  • - 更改现有 .docx 中的条款或段落
  • 插入或删除内容并保留格式
  • 为审阅者添加批注或脚注
  • 从编辑内容生成修订标记
  • 比较两个 .docx 文件生成修订标记
  • 提取修订内容为结构化 JSON
  • 应用布局格式(间距、行高、单元格内边距)

不适用于从头生成

Safe-DOCX 编辑已有的 .docx 文件——它不会从空白创建文档。对于新文档生成,请使用模板填充工作流程(例如 OpenAgreements)。Safe-DOCX 可以在下游优化生成的文档。

快速入门

  1. 1. readfile(filepath=~/doc.docx) → 查看段落 + bk* ID
  2. grep(filepath=~/doc.docx, patterns=[目标短语]) → 查找段落 ID
  3. replacetext(sessionid, targetparagraphid, oldstring, newstring, instruction)
  4. save(sessionid, savetolocal_path=~/doc-edited.docx)

核心工作流程:读取、定位、编辑、保存

步骤 1 — 读取。 使用 format: toon(令牌高效表格)调用 readfile 查看段落及其稳定的 bk_* ID。

步骤 2 — 定位。 使用带正则表达式的 grep 查找目标段落。它返回段落 ID 及周围上下文。

步骤 3 — 编辑。 使用 replacetext 交换段落内的文本,或使用 insertparagraph 在锚点前后添加新段落。

步骤 4 — 保存。 调用 save 写入输出。默认为 save_format: both,生成一份干净副本和一份修订标记副本。

容易踩坑的地方

需要唯一匹配

replacetext 需要 oldstring 在目标段落中恰好匹配一个位置。如果文本出现多次,您将得到 MULTIPLEMATCHES。解决方法:在 oldstring 中包含更多周围上下文。

错误:old_string: the Company → 5 个匹配,失败
正确:old_string: the Company shall indemnify → 1 个匹配,成功

脚注标记仅用于显示

readfile 将脚注显示为 [^1]、[^2] 等,但这些标记不是可编辑文本的一部分。您不能通过 replacetext 搜索或替换 [^1]。要修改脚注,请使用专用的 addfootnote、updatefootnote 和 delete_footnote 工具。

超链接为只读

readfile 将链接显示为 text,但您不能通过 replacetext 或 insert_paragraph 创建新的超链接。 标签会从新文本中剥离。编辑周围文本时,现有超链接会被保留。

段落 ID 与会话绑定

bk* 书签 ID 在打开文档时生成,并且绑定到该会话。请勿跨会话存储或重用 ID。始终重新读取文档以获取新的 ID。

智能文本匹配

replace_text 对以下情况具有容错性:

  • - 引号变体:直引号 、弯引号 \u201c\u201d、尖引号 \u00ab\u00bb 均可互相匹配
  • 空白差异:多个空格、制表符和换行符会被规范化

这意味着您可以从 read_file

标签

skill ai
v0.3.0 最新 2026-4-16 16:38
Address ClawHub security scan feedback: declare required binaries (node >=18, npx) in frontmatter; separate install-time vs runtime safety model; add offline/pinned install path; fix Node version inconsistency (was >=20, now matches package.json >=18); add no-postinstall-scripts disclosure and npm provenance note
返回顶部