“Rename ACME Corp to Globex in this contract” jest trzysekundowym zadaniem dla człowieka i pułapką dla agenta AI. Oczywista droga, odczytanie dokumentu i napisanie nowego, usuwa style, obramowania tabel, nagłówki oraz pewność recenzenta, że nic innego się nie zmieniło. Przy uruchomionym lokalnie serwerze GroupDocs.Editor MCP, Claude, Cursor lub Copilot edytują plik zamiast przepisywać go: znajdują słowa, zamieniają je w miejscu, zachowują formatowanie i informują, ile zmian zostało dokonanych:

Zmień ACME Corp na Globex Ltd w contract.docx i zachowaj formatowanie.

Szczegółowa wersja krok po kroku z konfiguracją, podpowiedziami i rozwiązywaniem problemów znajduje się w dokumentacji: Jak edytować dokumenty przy użyciu agentów AI z MCP.

Co idzie nie tak, gdy model przepisuje plik?

Model językowy nie przechowuje pliku .docx. Przechowuje tekst. Kiedy prosisz go o „zaktualizowanie umowy”, naturalną ścieżką jest odczytanie słów, ich zmiana i wygenerowanie nowego dokumentu z własnej kopii. Trzy rzeczy zostają utracone po drodze.

Formatowanie. Pogrubione nazwy stron, numerowane nagłówki, linie siatki tabeli, szerokości kolumn tabeli opłat, stopka z numerami stron: nic z tego nie jest częścią tekstu, który model odczytał, więc nic nie przetrwa podróży, chyba że coś to odtworzy.

Wszystko, czego model nie został poproszony o dotknięcie. Regeneracja oznacza, że każde zdanie przechodzi ponownie przez model. Klauzula może zostać „posprzątana”, liczba sformatowana ponownie, zdanie pominięte, ponieważ okno kontekstowe się zapełniło. Recenzent musi teraz porównać cały dokument, aby zaufać zmianie trzech słów.

Ścieżka audytu. „Zaktualizowałem umowę” to taka sama odpowiedź, niezależnie od tego, czy model zmienił jedną nazwę, czy siedem. Nie ma licznika i nie ma sposobu, by odróżnić staranną edycję od pewnej.

Serwery edycji tylko DOCX, które już istnieją, rozwiązały pierwszy problem dla Worda. Pozostałe dwa, oraz każdy format, który nie jest Wordem, wciąż pozostają otwarte.

Jak wygląda ukierunkowana edycja?

Dwa wywołania. Zarejestrowane z GroupDocs.Editor.Mcp 26.10.0 na syntetycznej umowie serwisowej, w której „ACME Corp” pojawia się siedem razy:

-> get_document_info {"file":{"filePath":"contract.docx"}}
<- { "family": "WordProcessing", "pageCount": 1, "canEdit": true,
     "canSaveTo": [ "docx", "doc", "rtf", "odt", "pdf", "md", ... ] }

-> replace_text {"file":{"filePath":"contract.docx"},
                 "find":"ACME Corp","replace":"Globex Ltd","wholeWord":true}
<- Replaced 6 occurrence(s) of 'ACME Corp' in 'contract.docx'
   Saved to: …/contract_edited.docx

-> replace_text {"file":{"filePath":"contract.docx"},
                 "find":"Initech","replace":"Globex Ltd"}
<- Text replacement found no matches for 'Initech' in 'contract.docx'.
   No file was written.

Edytowana kopia zachowuje pogrubioną nazwę strony, style nagłówków oraz tabelę opłat. Oryginał pozostaje niezmieniony; wynik to nowy plik contract_edited.docx w folderze przechowywania.

Dlaczego sześć, a nie siedem?

To szczegół, który warto przeczytać dwa razy. Siódmy „ACME Corp” znajduje się w klauzuli powiadomień, gdzie „ACME” jest kursywą, a „ Corp” nie. W pliku są to dwa segmenty formatowania, a replace_text dopasowuje się w ramach jednego segmentu. Nie zgadło i nie połączyło stylów, aby wymusić dopasowanie; zgłosiło sześć, a siódmy nadal jest „ACME Corp”.

To zachowanie, którego oczekujesz od narzędzia edytującego umowy. Liczba mniejsza niż oczekiwana jest sygnałem, aby sprawdzić; cicha „kompletna” przepisywanka nie jest. Agent może kontynuować drugą ścieżką oferowaną przez serwer: wyodrębnić tę część jako HTML, edytować ją i zapisać z powrotem. Post post o pełnym cyklu opisuje to.

Wywołania, w kolejności

user              agent                        Editor MCP server
 |  "Rename ACME Corp to Globex Ltd in contract.docx"          |
 |---------------->|                                           |
 |                 |-- get_document_info {"file":...} -------->|
 |                 |<- WordProcessing, 1 page, canEdit --------|
 |                 |-- replace_text {"find":"ACME Corp",       |
 |                 |     "replace":"Globex Ltd",               |
 |                 |     "wholeWord":true} ------------------->|
 |                 |<- "Replaced 6 occurrence(s) ...           |
 |                 |    Saved to: .../contract_edited.docx" ---|
 |<- "6 changed; one more is split across formatting - check  |
 |    the notices clause. The original is kept."               |
      (a find that matches nothing: 'No file was written.')

Dlaczego to jest więcej niż sztuczka Worda

To samo wywołanie działa na arkuszu, slajdzie, PDF-ie lub pliku tekstowym. W naszym teście, "worksheet": 1 zmieniło nazwę dostawcy na podsumowaniu budżetu i pozostawiło dwa pozostałe arkusze bez zmian; "slide": 1 zrobiło to samo na prezentacji przeglądowej. "format": "pdf" edytuje i konwertuje w jednym wywołaniu, więc „napraw nazwę i wyślij mi PDF” to jeden krok. "regex": true obsługuje wzorce, takie jak ciągi wersji.

Przed edycją, get_document_info informuje agenta, z czym ma do czynienia: rodzinę, liczbę stron, arkuszy lub slajdów, czy plik jest chroniony hasłem oraz w jakich formatach może być zapisany. Ostrożny agent wywołuje to najpierw i możesz go o to poprosić.

Konfiguracja

dnx GroupDocs.Editor.Mcp --yes

z GROUPDOCS_MCP_STORAGE_PATH wskazującą na folder, który agent może edytować, lub obraz Docker ghcr.io/groupdocs-editor/editor-net-mcp. Konfiguracja per-klient znajduje się w centrum dokumentacji. Co zmieniło się w samym silniku, opisano w notatki o wydaniu GroupDocs.Editor for .NET 26.6.

Szczere ograniczenia

  • replace_text dopasowuje się w ramach jednego segmentu formatowania; fraza podzielona na różne style nie zostanie znaleziona, a licznik to pokaże.
  • Brak śledzonych zmian i komentarzy: wynik to edytowana kopia, a nie wersja z zaznaczonymi zmianami.
  • Tryb ewaluacji: każdy wynik zaczyna się od linii banera ewaluacji, zapisane skoroszyty zyskują dodatkowy arkusz, a edytowane mogą być tylko pierwsze dwa arkusze lub slajdy. Serwer odrzuca trzeci i podaje przyczynę.
  • Edycja PDF to konwersja do edytowalnego HTML lub Worda i z powrotem; nie jest to edycja PDF w miejscu.

FAQ

Czy agent nadpisze mój oryginalny plik?
Nie. Każda edycja zapisuje nowy plik, domyślnie <name>_edited.<ext> lub outputName, który podasz, w folderze przechowywania.

Co się stanie, jeśli tekst nie znajduje się w dokumencie?
Nic nie zostanie zapisane. Serwer odpowiada „found no matches … No file was written.”, więc agent może Ci to przekazać zamiast zwrócić niezmienioną kopię.

Czy działa bez zainstalowanego Worda?
Tak. Serwer działa lokalnie z silnikiem GroupDocs.Editor; nie wymaga instalacji Office ani przesyłania plików.

Zagłęb się