A document‑Review‑Workflow mit einem KI‑Agenten kann in jeder Runde dieselben Schritte durchlaufen: Auflisten, was noch offen ist, Antworten in Threads, Auflösen, die Kommentare in den nächsten Entwurf übernehmen und eine saubere Kopie erzeugen. Der GroupDocs.Annotation.Mcp‑Server stellt jeden Schritt als Werkzeug bereit, sodass ein LLM in Claude, Cursor oder GitHub Copilot die Runde lokal ausführen kann, während eine Person das Ergebnis genehmigt:

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

Die schrittweise Version mit Konfiguration und Fehlersuche finden Sie in der Dokumentation: How to run a document review cycle with an AI agent.

Warum weichen Review‑Runden ohne feste Reihenfolge ab?

Eine Review‑Runde besteht selten nur aus „einem Kommentar hinzufügen“. Sie umfasst: Was noch offen ist, wer es eingebracht hat, eine Antwort, eine Auflösung und eine saubere Kopie für das nächste Publikum. Wenn Menschen das manuell erledigen, variiert die Reihenfolge, Antworten bleiben unsigniert und der nächste Entwurf verliert die Kommentare des vorherigen.

Ein Agent, der jedes Mal dieselbe Sequenz befolgt, eliminiert diese Variation. Er hinterlässt zudem eine Spur im Dokument statt in einem Chat‑Transkript – genau dort, wo ein Audit nachschauen würde.

Der Arbeitsablauf, Schritt für Schritt

Jeder Schritt hat einen Prompt und ein Werkzeug.

  1. Ermitteln, was offen ist. Prompt: „List the annotations in output/contract_annotated.pdf. Which ones have no replies?“ Der Agent ruft get_annotations auf, das jede Annotation mit id, Typ, Nachricht, Seite, Bounding‑Box, Benutzer und Antworten zurückgibt. Ein unbeantworteter Kommentar hat ein leeres replies‑Array, sodass der Agent die bereits geladene Liste filtert.
  2. Im Thread antworten. Prompt: „Reply to Maria’s comment that finance approved the terms on 12 March. Sign it as Alex.“ Der Agent ruft add_reply mit annotationId, comment und userName auf. Der Name ist standardmäßig mcp-user; geben Sie also einen echten Namen an.
  3. Auflösen, was erledigt ist. Legen Sie eine Konvention fest und nennen Sie sie im Prompt: Antwort im Thread belassen, die Annotation mit remove_annotations entfernen oder die Nachricht mit update_annotation beginnen lassen, z. B. [RESOLVED].
  4. Die Runde in den nächsten Entwurf übernehmen. Prompt: „Export the annotations from the reviewed copy, then import them into contract-v3.pdf.“ Der Agent ruft export_annotations auf (erstellt eine XML‑Datei) und anschließend import_annotations.
  5. Eine saubere Kopie zurückgeben. Prompt: „Remove all annotations and give me a clean copy for the counterparty.“ remove_annotations ohne Angabe von ids löscht jede Annotation und erzeugt eine neue Datei.

Was entscheidet der Agent und was macht die Engine?

Entscheidung oder Aktion Agent Engine
Welche Kommentare eine Antwort benötigen Liest das Ergebnis von get_annotations und filtert es Liefert jede Annotation mit IDs, Autoren und Antworten
Was die Antwort enthält Formuliert sie nach Ihrer Anweisung Speichert sie unter dem von Ihnen angegebenen userName
Welche Auflösungskonvention gilt Folgt der Regel in Ihrem Prompt Führt die gewünschte Bearbeitung oder das Entfernen aus
Ob die Runde abgeschlossen ist Meldet die Zähler; der Mensch genehmigt Speichert das Ergebnis jeder Änderung im Speicher

Die Engine entscheidet nie, was als „aufgelöst“ gilt. Das Annotations‑Modell besitzt kein resolved‑Flag; die Auflösung ist eine von Ihnen gewählte Konvention, die Sie im Prompt benennen.

Wo bleibt der Mensch im Prozess?

An zwei Stellen. Vor Schritt 5 bitten Sie den Agenten, anzugeben, wie viele Annotations er gerade entfernen will, und warten auf Ihre Bestätigung. Das Entfernen aller Annotations ist der einzige Aufruf im Workflow, der kein Undo‑Verfahren hat. Bevor etwas das Team verlässt, prüfen Sie die vom Agenten erstellten Antworten. Annotations‑Text stammt von anderen Personen – behandeln Sie ihn also als Inhalt, den Sie zusammenfassen, nicht als Anweisung für den Agenten.

Beispielsession (gekürzt)

Dies ist eine Illustration, die aus dem dokumentierten Verhalten der Werkzeuge abgeleitet ist, kein echter Screenshot.

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.)

Wie starte ich den Server für Claude, Cursor oder Copilot?

Starten Sie das Docker‑Image mit Ihrem documents‑Ordner als Volume und einem output‑Ordner, der sich vom Speicher‑Ordner unterscheidet:

docker run --rm -i -v $(pwd)/documents:/data \
  -e GROUPDOCS_MCP_OUTPUT_PATH=/data/output \
  ghcr.io/groupdocs-annotation/annotation-net-mcp:latest

Der gleiche Befehl und die Alternative dnx GroupDocs.Annotation.Mcp --yes werden in AI review that lands in the document, not in the chat log erklärt. Die Hub‑Seite enthält die Registrierung für Claude Desktop, Claude Code, VS Code mit GitHub Copilot, Cursor, Windsurf und weitere Clients.

Ehrliche Grenzen

  • Evaluierungs‑Modus. Ohne Lizenz wird auf jeder Seite ein Prüf‑Badge oben angeheftet – das ist nichts, was Sie an einen Vertragspartner senden würden. Prüfen Sie get_license_status vor einer formellen Review.
  • Jedes Schreib‑Werkzeug speichert sein Ergebnis zurück in den Speicher. Eine Runde erzeugt daher eine Kette von Dateien. Bitten Sie den Agenten, den Dateinamen des vorherigen Ergebnisses weiterzugeben und die Datei vor jeder Bearbeitung erneut mit get_annotations zu lesen, weil IDs zum gerade gelesenen Dokument gehören. Setzen Sie GROUPDOCS_MCP_OUTPUT_PATH auf einen Ordner, der nicht der Speicher‑Ordner ist, bevor Sie Bearbeitungen an einer erzeugten Datei verketten. Mit dem Standard (Ausgaben landen im Speicher‑Ordner) schlägt der zweite Schreibvorgang mit being used by another process fehl; in einem separaten Output‑Ordner funktionieren add_reply, update_annotation und remove_annotations auf der erzeugten Datei.
  • Koordinaten werden unverändert übernommen. In einem neu fließenden Entwurf kann eine importierte Notiz in der Nähe des ursprünglichen Textes, aber nicht exakt darauf, landen. Prüfen Sie die Platzierung anschließend.
  • Vorschau unter Linux. generate_pages_preview schlägt derzeit für PDF‑Dateien unter Linux, einschließlich des Docker‑Images, fehl (TypeInitializationException für Gdip: System.Drawing.Common wird auf Nicht‑Windows‑Plattformen nicht unterstützt); Word‑ und andere Office‑Dokumente rendern, und unter Windows mit dnx rendert jedes Format. Die übrigen zehn Werkzeuge sind davon unbeeinflusst. Die Review‑Werkzeuge in diesem Beitrag nutzen den Vorschau‑Renderer nicht.

FAQ

Kann eine KI automatisch auf Kommentare in einer PDF antworten?
Ja. Der Agent liest die Kommentare mit get_annotations und antwortet mit add_reply, das die Annotations‑ID, den Antworttext und einen Autorennamen entgegennimmt.

Gibt es einen Auflösungs‑Status für Kommentare?
Nein. Die Werkzeuge besitzen kein resolved‑Flag; Sie wählen eine Konvention, z. B. den Thread beibehalten, die Annotation entfernen oder die Nachricht mit [RESOLVED] versehen.

Kann ich die Kommentare behalten, wenn das Dokument überarbeitet wird?
Ja. Exportieren Sie die Annotations aus der geprüften Kopie nach XML und importieren Sie sie in den neuen Entwurf. Das gleiche Werkzeug‑Paar fügt zwei Reviewer‑Kopien zu einer zusammen.

Tiefer einsteigen