Lokale Dateianalyse (nur lokal)
Ziel
Analysieren Sie Tabellen-, Dokument-, PDF- und Bilddateien, ohne die Datei oder ihren Inhalt an einen Cloud-Dienst zu senden, und maskieren Sie personenbezogene Daten – Namen, Kontaktdaten, Adressen, Identitätsnummern – in jedem Modus. Quelldateien werden schreibgeschützt auf dem lokalen Rechner geöffnet, Extraktion und Statistiken laufen über lokale Skripte, und jedes Artefakt bleibt innerhalb eines lokalen Arbeitsverzeichnisses.
Schritt 1 – Zuerst nach dem lokalen Pfad fragen (obligatorisch, niemals überspringen)
Der erste Satz nach Aktivierung dieses Skills muss nach einem lokalen Pfad fragen, nicht mit der Analyse beginnen. Verwenden Sie den untenstehenden Wortlaut, an den Kontext angepasst, wobei vier Punkte erhalten bleiben: Es wird nichts hochgeladen, ein absoluter Pfad wird benötigt, wie man einen Pfad kopiert, und die optionale Dateiauswahl.
Ich werde diese Datei nur auf diesem Rechner analysieren – nichts geht an einen Cloud-Dienst, und Namen, Telefonnummern, Adressen und Ausweisnummern werden im Bericht maskiert. Bitte geben Sie mir den absoluten lokalen Pfad, z.B.
/Benutzer/Sie/Dokumente/Hauptbuch.xlsxoderD:\daten\Hauptbuch.xlsx; trennen Sie mehrere Dateien durch neue Zeilen. Zum Kopieren eines Pfads: Rechtsklick auf die Datei → „Als Pfad kopieren“ (Windows), oder die Datei in ein Terminal ziehen / ⌥⌘C im Finder verwenden (macOS). Oder sagen Sie einfach „Wähle die Dateien für mich aus“ und ich öffne einen lokalen Dateidialog.
Nachverfolgung:
- Benutzer sagt „wähle aus / zeige einen Dialog“ → führen Sie
python "<skill_verzeichnis>/scripts/pick_path.py"(Mehrfachauswahl) oder mit--singleaus. Verwenden Sie die ausgegebenen Pfade als Eingabe. Exit-Code 2 bedeutet keine grafische Sitzung – zurück zur Aufforderung an den Benutzer, Pfade einzufügen. - Benutzer sagt „es ist angehängt“, aber es existiert nur eine Anhangskarte, kein Pfad → gemäß nächstem Abschnitt behandeln. Den Anhang nicht stillschweigend lesen.
- Nach Erhalt der Pfade validieren: Pfad existiert, Erweiterung wird unterstützt, sinnvolle Dateianzahl (bei > ~10 Dateien nach Typ gruppieren).
Wenn der Benutzer bereits einen Anhang bereitgestellt hat
Weisen Sie auf das Risiko hin, bevor Sie etwas akzeptieren:
Ein Hinweis: Eine in den Chat gezogene Datei kann bereits auf den Servern der Plattform gespeichert sein, sodass dieser Pfad nicht mehr rein lokal ist. Wenn diese Datei vertraulich ist oder personenbezogene Daten enthält, senden Sie mir ihren lokalen Pfad und ich lese sie von der Festplatte – nichts verlässt diesen Rechner.
Wenn der Benutzer den Anhang dennoch verwenden möchte, fahren Sie fort, kennzeichnen Sie die Lieferung jedoch ehrlich: „Die Eingabe stammt aus einem Chat-Anhang, der möglicherweise die Server der Plattform erreicht hat“ – nennen Sie einen Anhang niemals „vollständig lokal“.
Schritt 2 – Den Benutzer einen Modus wählen lassen
Zwei Optionen; der Benutzer muss wählen. Wenn nicht angegeben, verwenden Sie Normal und geben Sie den Modus in der ersten Zeile der Antwort an.
| Normal (Standard) | Streng | |
|---|---|---|
| Berichtsinhalt | Struktur + Statistiken + maskierte Vorschau (erste N Zeilen, Textauszüge) | Nur aggregierte Kennzahlen: Zeilen/Spalten, Typen, Nicht-Null-Rate, Distinct-Anzahl, Bereich, Mittelwert |
| Rohtext | Maskierter Text wird in den Bericht aufgenommen, für das Modell sichtbar | Erscheint nie; das Modell sieht nur Kennzahlen |
| Geeignet für | Allgemeine interne Daten, semantische Interpretation, schriftliche Schlussfolgerungen | Kundendaten, Gehaltsabrechnungen, medizinische Daten, Verträge, klassifiziertes Material |
| Kosten | Maskierter Inhalt gelangt in den Inferenzkontext | Kein semantisches Urteil möglich, nur statistisch basierte Antworten |
Wortlaut:
Wählen Sie einen Modus: ① Normal – Struktur, Statistiken und eine maskierte Vorschau, damit ich den Inhalt lesen und Schlussfolgerungen ziehen kann; ② Streng – nur Kennzahlen, kein Originaltext im Bericht. Standard ist Normal.
Obligatorische Maskierung (alle Modi, kann nicht deaktiviert werden)
Maskierung ist keine Option, sondern Standardverhalten. Das Skript hat keinen Ausschalter, und --mode strict bedeutet nicht „Maskierung ist optional“ – „Streng“ fügt „kein Originaltext“ zusätzlich zur Maskierung hinzu.
| Kategorie | Abgedeckte Felder | Ergebnis |
|---|---|---|
| Name | Name, Kontoinhaber, Kontakt, gesetzlicher Vertreter, Eigentümer, Bearbeiter, Kontomanager, Antragsteller, Zahlungsempfänger, Karteninhaber, Aktionär | [NAME#1] |
| Kontakt | Mobil, Festnetz (mit Vorwahl), Fax, E-Mail | [TELEFON#1] / [EMAIL#1] |
| Adresse | Adresse, Wohnsitz, Postadresse, eingetragene Adresse, Wohnort | Provinz/Stadt bleibt erhalten, Rest wird zu [ADRESSE#1]; --mask-region verbirgt auch die Region |
| Identität | Personalausweis (18/15-stellig), Reisepass, Reisegenehmigung, Dienstausweis, einheitliche Sozialkreditnummer | [ID#1] |
| Finanzen | Bankkarte, Kontonummer, Kartennummer | [KONTO#1] |
| Andere Kennungen | Kfz-Kennzeichen, Kundennummer, Personalnummer, Mitgliedsnummer, Studentennummer, Sozialversicherungsnummer, Policennummer | [KENNZEICHEN#1] / [IDNR#1] |
Drei Umsetzungsprinzipien, zitierfähig im Liefervermerk:
- Stabile Pseudonyme. Derselbe Quellwert wird immer demselben Pseudonym innerhalb eines Durchlaufs zugeordnet. „Zhang erscheint 3 Mal“ wird zu „
[NAME#1]erscheint 3 Mal“ – Zählung, Deduplizierung und Joins funktionieren weiterhin, die Identität bleibt nicht erhalten. - Keine Zuordnung auf der Festplatte. Die Wert-zu-Pseudonym-Zuordnung existiert nur im Arbeitsspeicher. Weder
report.mdnochmanifest.jsonenthalten sie; nur Trefferzahlen werden geschrieben. - Heuristiken für Freitext. Strukturierte Tabellen werden nach Spaltenüberschriften klassifiziert und spaltenweise maskiert. Freitext in Textkörpern, PDFs und Folien verwendet reguläre Ausdrücke plus ein Namenslexikon („Kontakt: Zhang San“, „Herr Zhang“). Heuristiken übersehen Dinge – insbesondere isolierte Namen ohne kontextuellen Hinweis. Sagen Sie dies klar und deutlich; behaupten Sie nie, dass „alles erkannt wird“.
Das Beibehalten von Provinz/Stadt ist beabsichtigt: Es unterstützt Analysen auf Regionalebene, ohne eine Straßenadresse preiszugeben. Verwenden Sie --mask-region, wenn die Region selbst sensibel ist.
Schritt 3 – Lokale Extraktion
python "<skill_verzeichnis>/scripts/local_extract.py" "/pfad/zum/Hauptbuch.xlsx" "/pfad/zum/Bericht.docx" \
--workspace ".local_analysis"
Fügen Sie --mode strict für den strengen Modus hinzu; --mask-region, um Regionen zu verbergen; --redact "EMP\\d{6}" (wiederholbar) für benutzerdefinierte Muster.
Ausgaben (alle innerhalb von --workspace):
report.md– maskiertes strukturelles Profil + Statistiken + Vorschau; die einzige Eingabe für den Rest der Analysemanifest.json– Dateiliste, SHA-256, Modus,masking.enabled=true, Maskentrefferzahlen,network_used: false
Die Konsole gibt pro Datei den Typ, die Größe, maskierte Felder, Trefferzahlen und „network requests: 0“ aus. Lesen Sie report.md anschließend mit dem lokalen Dateileser; ersetzen Sie keine Screenshots oder Online-OCR.
Schritt 4 – Lokal berechnen, niemals mental
Summen, Verhältnisse, Distinct-Anzahlen, Sortieren, Gruppieren, Veränderungen im Zeitverlauf: immer von einem lokalen Skript berechnet. Ohne die vollständigen Daten zu sehen, sind Modellschätzungen fast immer falsch. Verwenden Sie parse_xlsx / parse_delimited / Masker aus local_extract.py in einem temporären Skript, berechnen Sie, und schreiben Sie dann die Zahlen in den Bericht. Pseudonyme können direkt gruppiert und gezählt werden – kein Zurückdrehen erforderlich.
Schritt 5 – Einen Prüfbericht erstellen
python "<skill_verzeichnis>/scripts/local_audit.py" ".local_analysis" --note "lokal verarbeitet, nichts hochgeladen"
Der Prüfbericht hat fünf Teile: Integrität der Quelldateien (erneuter Hash-Abgleich, der beweist, dass die Datei schreibgeschützt und ohne Kopien ist), Ausführung der Maskierung (Schalterstatus, Kategorien, Treffer in diesem Durchlauf), Artefaktinventar, zeilenweise Prüfung (Red-Line-Check), Schlussfolgerung. Exit-Code 0 = bestanden, 1 = eine Quelldatei wurde während der Verarbeitung geändert.
Schritt 6 – Bericht
Schlussfolgerung zuerst, Daten danach, eine abschließende Aussage:
Diese Analyse lief vollständig auf diesem Rechner, ohne Beteiligung eines Cloud-Dienstes; Quelldateien waren schreibgeschützt und unverändert, und der Bericht maskiert Namen, Telefonnummern, Adressen und Ausweisnummern (stabile Pseudonyme). Artefakte befinden sich in
.local_analysis/, der Prüfbericht inaudit.md.
Rote Linien (niemals ausgelöst)
| Kategorie | Verboten | Typische Werkzeuge |
|---|---|---|
| Cloud-Dokumente | Online-Tabelle/Dokument erstellen, importieren oder „bearbeiten“ | Tencent Docs, Kingsoft Docs, Feishu Docs-Konnektoren |
| Cloud-Laufwerke / Objektspeicher | Dateien oder Artefakte hochladen | Tencent Drive, WeDrive, Cloud-Dateispeicher |
| Wissensdatenbanken | In eine Bibliothek schreiben, URLs erfassen | Bibliotheks-Upload, ima Wissensdatenbank |
| Externe Suche | Quelltext oder Fragmente als Suchanfrage verwenden | Websuche, Seitenscraping |
| Online-Konvertierung / OCR | Online-PDF-Konvertierung, Online-Entpacken, Online-Bilderkennung | beliebiges Online-Tool, Bildverständnis-API |
| Ausgehende Sendung | Dateien oder Zusammenfassungen an Chat, E-Mail, Bots senden | WeCom-Nachrichten, E-Mail, Besprechungsnotizen-Upload |
Nur eine Ausnahme: Der Benutzer sagt ausdrücklich „diese darf hochgeladen/gesendet werden“. Selbst dann wiederholen Sie dies und holen eine zweite Bestätigung ein, bevor Sie handeln.
Lokaler Pfad pro Dateityp
| Typ | Bevorzugter lokaler Weg | Hinweise |
|---|---|---|
.xlsx .xlsm | local_extract.py (Zip + XML direkt) | Mehrere Blätter, spaltenweise Maskierung; Daten können als Seriennummern erscheinen |
.csv .tsv .txt .md .json .html | local_extract.py | Erkennt UTF-8 / GB18030 und Trennzeichen; CSV nach Header maskiert |
.docx .pptx | local_extract.py (Zip + XML direkt) | Absätze, Gliederung, Tabellen, Aufzählungspunkte pro Folie; Textkörper durch Freitext-Maskierung |
.pdf | local_extract.py | Verwendet ein lokales workbuddy-pdf CLI, falls vorhanden, ansonsten integrierter zlib-Fallback |
.png .jpg .gif .bmp .webp | local_extract.py | Nur Format, Abmessungen, Hash; lokale OCR nur, wenn Tesseract vorhanden |
.xls .doc .ppt Legacy-Binär | Benutzer bitten, lokal neu zu speichern, oder in einem lokalen Editor öffnen | Niemals an einen Online-Konverter senden, um Inhalt zu extrahieren |
| Gescanntes PDF / Text in Bildern | Lokale OCR, oder der Benutzer diktiert den Inhalt | Wenn keine OCR, die Lücke ehrlich benennen – nicht über die Cloud routen |
Insbesondere bei Bildern: Wenn kein Tesseract vorhanden ist, behandeln Sie sie nur als Metadaten und sagen Sie „Bildinhalt wurde nicht erkannt“ und bieten Sie zwei lokale Wege an (OCR installieren und erneut ausführen / Benutzer beschreibt es). Verwenden Sie kein Vision-Modell, um „einen Blick darauf zu werfen“ – das schiebt das Bild in den Inferenzpfad und widerspricht der Benutzeranfrage.
Degradationsregeln
- Lokales Skript kann es parsen → Ausgabe des Skripts verwenden.
- Kein extrahierbarer Text (Scan, Legacy-Format, verschlüsselt) → erklären, warum, lokale Alternativen anbieten (lokal neu speichern, lokale OCR, Benutzer diktiert).
- Benutzer drängt auf „Ergebnisse jetzt“ → zur Modusfrage zurückkehren: „Angesichts des aktuellen Stands kann ich nur statistisch antworten – akzeptabel?“
Häufige Fehler
- Die Pfadanfrage überspringen und einen Chat-Anhang direkt analysieren: Verstößt gegen Schritt 1.
- Den gesamten
report.mdin die Antwort einfügen: Der Bericht ist das Arbeitsdokument; Antworten enthalten Schlussfolgerungen und wichtige Zahlen. - Glauben, dass der strenge Modus die Maskierung überflüssig macht: Die beiden Dimensionen sind unabhängig.
- Unmaskierte Werte auf der Konsole oder einer temporären Datei ausgeben, „um die Daten zu sehen“: Maskierung muss erfolgen, bevor etwas geschrieben wird.
- Schätzen statt lokal berechnen: Schätzungen sind im vollen Datenumfang fast immer falsch.
.xlsan einen Cloud-Konverter senden „der Einfachheit halber“: Verstößt gegen eine rote Linie; stattdessen lokal neu speichern.- Kodierung ignorieren: Das Lesen einer GB18030-CSV als UTF-8 erzeugt Mojibake, der das Spaltenprofil verunreinigt. Das Skript behandelt dies; handgeschriebener Code muss dies ebenfalls tun.
Hinweis zu Sprachen
Erkennungsregeln zielen auf chinesische Datenformate ab (Personalausweisnummern, 省/市-Adressen, chinesische Nachnamen) sowie generische Muster (E-Mail, Telefon, Bankkarte, Kennzeichen). Berichte und Konsolenausgabe sind derzeit auf Chinesisch; die Erkennungslogik ist sprachunabhängig, wo Muster dies zulassen. Für rein englische Dokumente funktioniert die strukturierte Tabellenmaskierung weiterhin über Spaltenüberschriften, aber die Freitext-Namenerkennung ist schwach – sagen Sie dies anstatt überzogene Versprechungen zu machen.