使用 AI 代理的文档审阅工作流可以在每一轮中遵循相同的步骤:列出未完成的内容,在线程中回复,解决问题,将评论带入下一个草稿,并生成干净的副本。GroupDocs.Annotation.Mcp 服务器将每一步公开为工具,因此在 Claude、Cursor 或 GitHub Copilot 中的 LLM 可以在本地运行该轮次,而由人员批准结果:
列出 output/contract_annotated.pdf 中的批注。哪些没有回复?
带有配置和故障排除的逐步版本在文档中:如何使用 AI 代理运行文档审阅周期.
为什么审阅轮次在没有固定顺序的情况下会漂移?
审阅的一轮很少只是“添加评论”。它包括:仍未完成的事项、提出者、答案、解决方案以及供下一个受众使用的干净副本。当人们手动完成时,顺序会变化,回复会未签名,下一稿会丢失上一次的评论。
每次遵循相同顺序的代理可以消除这种差异。它还会在文档内部留下痕迹,而不是在聊天记录中,这正是审计会查看的地方。
工作流,逐步说明
每一步都有一个提示和一个工具。
- 查找未完成的内容。 提示:“列出 output/contract_annotated.pdf 中的批注。哪些没有回复?” 代理调用
get_annotations,该函数返回每个批注的id、类型、消息、页码、边界框、用户和回复。未回答的评论是replies数组为空的,因此代理过滤它已经持有的列表。 - 在线程中回复。 提示:“回复 Maria 的评论,说明财务在 3 月 12 日已批准条款。以 Alex 的名义签名。” 代理调用
add_reply,传入annotationId、comment和userName。名称默认是mcp-user,因此请提供真实的名称。 - 解决已完成的事项。 在提示中选择一种约定并说明:回复后保留线程作为记录,使用
remove_annotations删除批注,或使用update_annotation将消息前缀改为[RESOLVED]。 - 将本轮带入下一个草稿。 提示:“导出已审阅副本中的批注,然后导入到 contract-v3.pdf。” 代理调用
export_annotations,该函数写入 XML 文件,然后调用import_annotations。 - 交付干净的副本。 提示:“删除所有批注并给我一个供对方使用的干净副本。” 对
remove_annotations不传ids参数即可清除所有批注并生成新文件。
代理决定什么,引擎执行什么?
| 决策或操作 | 代理 | 引擎 |
|---|---|---|
| 哪些评论需要答案 | 读取 get_annotations 的结果并进行过滤 |
返回每个批注的 id、作者和回复 |
| 回复内容是什么 | 根据你的指示起草回复 | 将回复存储在你提供的 userName 下 |
| 使用哪种解决约定 | 按提示中的规则执行 | 执行相应的编辑或删除操作 |
| 本轮是否完成 | 报告计数;由人工批准 | 将每次更改的结果保存回存储 |
引擎永远不会决定什么算作已解决。批注模型没有可设置的已解决标志;解决方式由你在提示中选择并命名。
人员在何处保持在循环中?
两个位置。步骤 5 之前,要求代理说明它即将删除的批注数量并等待你的确认。删除所有批注是工作流中唯一没有撤销的调用。在任何内容离开团队之前,先阅读代理草拟的回复。批注文本来自其他人,因此应将评论视为需要概括的内容,而不是让代理执行的指令。
示例会话(节选)
这是一段基于工具文档行为构建的示例说明,而非实际截图。
You: 列出 output/contract_annotated.pdf 中的批注。哪些没有回复?
Agent: [调用 get_annotations on output/contract_annotated.pdf]
找到 4 条批注。两条没有回复:
- id 2, page 2, Maria: "确认财务已批准付款条款。"
- id 4, page 5, Maria: "交付日期与 Schedule B 冲突。"
You: 回复第一条,说明财务在 3 月 12 日已批准条款。
以 Alex 的名义签名。
Agent: [调用 add_reply: annotationId=2, userName="Alex",
comment="财务在 3 月 12 日已批准条款。"]
已在 output/contract_annotated.pdf 中的批注 2 添加回复。
(代理在下一次调用时使用已保存的文件名。)
如何为 Claude、Cursor 或 Copilot 运行服务器?
使用挂载了文档文件夹的 Docker 镜像运行,并指定一个与存储文件夹不同的输出文件夹:
docker run --rm -i -v $(pwd)/documents:/data \
-e GROUPDOCS_MCP_OUTPUT_PATH=/data/output \
ghcr.io/groupdocs-annotation/annotation-net-mcp:latest
相同的命令以及 dnx GroupDocs.Annotation.Mcp --yes 替代方案在AI 审阅落在文档中,而非聊天记录中有说明。中心页面提供了 Claude Desktop、Claude Code、带 GitHub Copilot 的 VS Code、Cursor、Windsurf 等客户端的注册信息。
诚实的限制
- 评估模式。 未购买许可证时,试用徽章会印在每页顶部,这不适合发送给对方。在正式审阅前请检查
get_license_status。 - 每个写入工具都会将结果保存回存储。 因此一轮会产生一系列文件。请指示代理将前一次结果的文件名向后传递,并在编辑前使用
get_annotations重新读取该文件,因为 id 属于刚读取的文档。链式编辑前请将GROUPDOCS_MCP_OUTPUT_PATH设置为除存储文件夹之外的其他文件夹。使用默认设置(输出落在存储文件夹)时,第二次写入会因being used by another process而失败;使用单独的输出文件夹时,add_reply、update_annotation和remove_annotations在生成的文件上均能成功执行。 - 坐标会原样保留。 在重新排版的草稿中,导入的批注可能落在原始文本附近,而不是正上方。请在操作后检查位置。
- Linux 上的预览。
generate_pages_preview目前在 Linux 上的 PDF 文件会失败,包括 Docker 镜像(TypeInitializationExceptionforGdip:System.Drawing.Common在非 Windows 平台上不受支持);Word 和其他 Office 文档可以渲染,在 Windows 上使用dnx时所有格式均可渲染。其余十个工具不受影响。本帖中的审阅工具并未使用预览渲染器。
常见问题
AI 能自动回复 PDF 中的评论吗? 能。代理使用 get_annotations 读取评论,并使用 add_reply 回复,后者接受批注 id、回复文本和作者名称。
评论有已解决状态吗? 没有。工具没有已解决标志,你需要自行约定,例如保留线程、删除批注或在消息前加上 [RESOLVED]。
文档修订时能保留评论吗? 能。将已审阅副本的批注导出为 XML,再导入到新草稿中。相同的两款工具可以将两个审阅者的副本合并为一个。
深入了解
- 文档,权威操作指南:如何使用 AI 代理运行文档审阅周期
- 文档中心:GroupDocs.Annotation MCP Server
- 入门指南:AI 审阅落在文档中,而非聊天记录
- 相关内容:使用 MCP 从文档集合中提取每条评论的 3 种方法
- 相关内容:展示代理的操作结果
- 本地部署与安全模型:AI 文档处理的 3 种架构,以及将文件保留在内部网络的方案
- 问答:GroupDocs Annotation 论坛
- 源代码:GroupDocs.Annotation.Mcp on GitHub