使用 AI 代理的文件審閱工作流程可以在每一輪遵循相同的步驟:列出未解決的項目、在討論串中回覆、解決問題、將評論帶入下一個草稿,並產生乾淨的副本。GroupDocs.Annotation.Mcp 伺服器將每個步驟以工具形式公開,讓 Claude、Cursor 或 GitHub Copilot 中的 LLM 能在本機執行此輪審閱,同時由人員批准結果:

列出 output/contract_annotated.pdf 中的註釋。哪些沒有回覆?

為什麼審閱輪次會在沒有固定順序的情況下漂移?

一輪審閱很少只是「新增評論」。它包含:仍未解決的項目、提出者、答案、解決方式,以及給下一位讀者的乾淨副本。當人手操作時,順序會變化、回覆未簽名,下一個草稿也會遺失前一次的評論。

每次都遵循相同順序的代理可以消除這種變異。它同時將痕跡保留在文件內,而非聊天紀錄,這正是稽核會檢查的地方。

工作流程,逐步說明

每個步驟都有一個提示詞和一個工具。

  1. 找出未解決的項目。 提示:「列出 output/contract_annotated.pdf 中的註釋。哪些沒有回覆?」 代理呼叫 get_annotations,該指令會回傳每筆註釋的 id、類型、訊息、頁碼、邊界框、使用者與回覆。若 replies 陣列為空即代表未回覆,代理會在已取得的清單中過濾出這些項目。
  2. 在討論串中回覆。 提示:「回覆 Maria 的評論,說明財務在 3 月 12 日已批准條款。以 Alex 簽名。」 代理呼叫 add_reply,傳入 annotationId、comment 與 userName。若未指定使用者名稱,預設為 mcp-user,因此請提供真實姓名。
  3. 解決已完成的項目。 選擇一套慣例並在提示中說明:保留討論串作為紀錄、使用 remove_annotations 移除註釋,或以 update_annotation 編輯訊息並在開頭加上 [RESOLVED]。
  4. 將此輪帶入下一個草稿。 提示:「從已審閱的副本匯出註釋,然後匯入至 contract-v3.pdf。」 代理先呼叫 export_annotations 產生 XML 檔案,接著呼叫 import_annotations。
  5. 回傳乾淨的副本。 提示:「移除所有註釋,並提供給對方的乾淨副本。」 呼叫 remove_annotations(不帶 ids)即可清除所有註釋,產生新檔案。

代理決定什麼,引擎執行什麼?

決策或動作 代理 引擎
哪些評論需要回覆 讀取 get_annotations 結果並進行過濾 返回每個註釋的 id、作者與回覆
回覆內容 根據您的指示草擬 以您提供的 userName 儲存
適用哪種解決慣例 遵循您提示中的規則 執行所要求的編輯或移除
此輪是否完成 報告計數;由人員批准 將每項變更的結果儲存回存儲

引擎永遠不會自行判斷何為「已解決」。註釋模型本身沒有已解決旗標,解決方式完全由您在提示中定義。

人在迴圈中的角色是什麼?

有兩個關鍵點。於第 5 步之前,請代理先說明即將移除的註釋數量,並等待您的確認。全部移除註釋是工作流程中唯一一次無法復原的呼叫。任何資訊外流前,請先閱讀代理草擬的回覆。註釋文字來源於其他人,應將其視為需要摘要的內容,而非讓代理直接執行的指令。

範例會話(節錄)

這是一個根據工具文件化行為所構建的示意圖,並非截圖。

You:   List the annotations in output/contract_annotated.pdf. Which ones have no replies?

Agent: [calls get_annotations on output/contract_annotated.pdf]
       Found 4 annotations. Two have no replies:
       - id 2, page 2, Maria: "Confirm the payment terms with finance."
       - id 4, page 5, Maria: "Delivery date conflicts with Schedule B."

You:   Reply to the first one that finance approved the terms on 12 March.
       Sign it as Alex.

Agent: [calls add_reply: annotationId=2, userName="Alex",
        comment="Finance approved the terms on 12 March."]
       Added reply to annotation 2 in output/contract_annotated.pdf.
       (The agent uses the saved file name in the next call.)

如何為 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、VS Code 搭配 GitHub Copilot、Cursor、Windsurf 以及其他客戶端的註冊資訊。

誠實的限制

  • Evaluation mode(評估模式)。 若未取得授權,系統會在每頁頂部蓋上試用徽章,這不適合寄給對方。正式審閱前請先呼叫 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(包括 Docker 映像)上無法處理 PDF,會拋出 TypeInitializationException(Gdip:System.Drawing.Common 不支援非 Windows 平台);Word 及其他 Office 文件仍可渲染,且在 Windows 搭配 dnx 時所有格式皆可渲染。其餘十項工具不受影響,本篇文章所使用的審閱工具亦未使用預覽渲染器。

常見問題

AI 能自動回覆 PDF 中的評論嗎?
可以。代理會使用 get_annotations 讀取評論,然後透過 add_reply 回覆,add_reply 需要提供註釋 id、回覆文字以及作者名稱。

評論有已解決的狀態嗎?
沒有。工具本身沒有已解決旗標,您必須自行決定慣例,例如保留討論串、移除註釋或在訊息前加上 [RESOLVED]。

文件修訂時,我能保留評論嗎?
可以。從已審閱的副本匯出 XML 格式的註釋,然後匯入至新草稿。相同的兩個工具可將兩位審閱者的副本合併為一個。

深入了解