The authoritative text is the English page: English version of this page
Die Werkzeuge der Suite: installieren, bewerten, erkennen, berichten, Fakten aktuell halten
Fünf Werkzeuge umgeben den Szenario-Runner (feintkit, siehe DETECTION-INTEGRATION.md). Diese Seite gibt die genauen Befehle, Optionen, Exit-Codes und Offline-Beispiele jedes Werkzeugs an. Die Befehlszeilen und Optionen werden von den Tests des Dokumentationspakets gegen die echten Werkzeuge geprüft. Lesen Sie zuerst RESPONSIBLE-USE.md.
| Schritt | Werkzeug | Befehl | Braucht das Netzwerk |
|---|---|---|---|
| Installieren | Installer (feintkit-suite) | node packages/installer/dist/src/bin.js | nur für eine https-Quelle |
| Ausführen | Runner (feintkit) | siehe DETECTION-INTEGRATION.md | nein |
| Ein Transkript bewerten | Transkript-Einlesen, verwendet über feintkit verify | node packages/cli/dist/src/bin.js | nein |
| Ein Sicherheitsprodukt ersetzen | Testersatz für die Erkennung (feintkit-watch) | node packages/watch/dist/src/bin.js | nein |
| Berichten | Bericht (feintkit-report) | node packages/report/dist/src/bin.js | nein |
| Fakten aktuell halten | Faktenprüfung (feintkit-factcheck) | node packages/factcheck/dist/src/bin.js | ja |
Führen Sie jeden Befehl nach npm run setup im Stammverzeichnis des Repositorys der Suite aus. Eine Zeile, die mit # exit <n> endet, zeigt in einem Beispiel den Exit-Code, den der Befehl zurückgibt; lassen Sie den Kommentar beim Eintippen weg. <work> steht für ein beliebiges leeres Verzeichnis Ihrer Wahl.
Installer (feintkit-suite)
Zweck: Entpackt die Suite aus einem Verzeichnis, einem Release-Tarball oder einer https-Adresse, prüft den Tarball gegen eine Prüfsumme, die Sie über einen getrennten Kanal liefern, zeigt den Haftungsausschluss-Hinweis und einen Plan dessen, was er tun wird, und entpackt. Er führt den Build der Suite nur aus, wenn Sie --run-setup angeben; damit führt er npm run setup --ignore-scripts mit einer minimalen Umgebung aus, listet die Szenarien auf und gibt die nächsten Schritte aus. Er weigert sich, als root zu laufen, wenn nichts anderes gesagt wird, und überschreibt nie ein Verzeichnis, das nicht seine eigene Installation ist. Wird er erneut auf einer fertigen Installation ausgeführt, gibt er already installed aus.
Wo er hingehört: der erste Schritt, auf einem Rechner, der die Suite noch nicht hat. Wer als Maintainer schon in einem Checkout arbeitet, braucht ihn nicht.
Aufruf (der eigene Text des Werkzeugs):
usage: feintkit-suite install --from <directory|tarball|https-address> [--sha256 <hex> | --checksums <SHA256SUMS file or https address>] [--trust-remote-checksums] [--dest <directory>] [--allow-root] [--force] [--run-setup | --skip-build] [--accept-disclaimer]
feintkit-suite install [--dest <directory>] (with FEINTKIT_RELEASE_BASE set to an https release address; needs --sha256 or --trust-remote-checksums)
feintkit-suite --version
feintkit-suite --help
| Option | Bedeutung |
|---|---|
--from <source> | Ein Verzeichnis, eine .tar.gz-Datei oder eine https-Adresse. Ohne sie wird die Adresse aus FEINTKIT_RELEASE_BASE gebildet. |
--sha256 <hex> | Der erwartete SHA-256 des Tarballs, aus einem anderen Kanal als dem Download. Nicht kombinierbar mit --checksums. Ein Tarball braucht --sha256 oder --checksums; ein Verzeichnis braucht keines von beiden. |
--checksums <file or https address> | Eine Datei SHA256SUMS, die den Tarball aufführt. Übergeben Sie eine lokale Datei, die Sie separat bezogen haben. Eine https-Adresse (auch die aus FEINTKIT_RELEASE_BASE gebildete) stammt vom selben Ursprung wie der Download und wird abgewiesen, wenn nicht zusätzlich --trust-remote-checksums angegeben ist. |
--trust-remote-checksums | Akzeptiert eine Prüfsummendatei, die vom selben Ursprung wie der Tarball geholt wurde, und gibt eine Warnung aus: Wer diesen Ursprung kontrolliert, kontrolliert, was entpackt wird. |
--dest <directory> | Wohin installiert wird. Standard: feintkit-suite im aktuellen Verzeichnis. |
--allow-root | Erlaubt die Ausführung als Benutzer root. |
--force | Ersetzt eine Installation, die eine andere Version oder einen unfertigen Build enthält. |
--run-setup | Führt nach dem Entpacken npm run setup --ignore-scripts der Suite mit einer minimalen Umgebung aus (das Setup-Skript des entpackten Pakets wird ausgeführt; Installationsskripte von Abhängigkeiten nicht). Ohne sie wird nichts ausgeführt, und der genaue Befehl wird ausgegeben. |
--skip-build | Der Standard, für ältere Befehlszeilen beibehalten: entpackt nur. Nicht kombinierbar mit --run-setup. |
--accept-disclaimer | Bestätigt den Hinweis ohne Rückfrage. Eine nicht interaktive Sitzung braucht sie. |
--version, --help | Geben die Version oder den Hilfetext aus und enden mit 0. |
Exit-Codes:
| Code | Bedeutung |
|---|---|
| 0 | Installiert, bereits installiert oder --help / --version. |
| 2 | Aufruffehler (auch: sowohl --sha256 als auch --checksums, sowohl --run-setup als auch --skip-build, keine Quelle, eine Prüfsumme bei einer Verzeichnisquelle oder eine https-Prüfsumme ohne --trust-remote-checksums). |
| 3 | Integritätsfehler: Quelle nicht gefunden, keine Prüfsumme für einen Tarball, Prüfsumme stimmt nicht, fehlerhafter Tarball oder ein fehlgeschlagener Download. |
| 4 | Weigerte sich, ohne --allow-root als root zu laufen. |
| 5 | Problem mit dem Ziel: keine Feintkit-Installation, eine andere Installation ohne --force oder ein Schreibfehler. |
| 6 | Das Setup oder die Szenarioauflistung ist fehlgeschlagen. |
| 7 | Der Haftungsausschluss-Hinweis wurde nicht bestätigt. |
Offline-Beispiele (ein lokales Verzeichnis als Quelle, nichts wird heruntergeladen, und nichts aus dem Paket wird ausgeführt):
node packages/installer/dist/src/bin.js --version # exit 0
node packages/installer/dist/src/bin.js install --from docs/guide --dest <work>/suite # exit 7
node packages/installer/dist/src/bin.js install --from docs/guide --dest <work>/suite --accept-disclaimer # exit 0
node packages/installer/dist/src/bin.js install --from <work>/missing.tar.gz --sha256 0000 --dest <work>/other --accept-disclaimer # exit 3
Der Hinweis wird angezeigt und bestätigt, bevor eine Quelle gelesen wird, daher braucht jede Installation in einer nicht interaktiven Sitzung --accept-disclaimer. Die erste Installation wird abgewiesen, weil die Beispielsitzung nicht interaktiv ist; die zweite bestätigt den Hinweis und entpackt docs/guide, als wäre es die Suite, ohne etwas auszuführen. Eine echte Installation verwendet Ihre eigene Quelle für --from und einen Wert für --sha256 oder eine lokale --checksums aus einem zweiten Kanal und fügt --run-setup erst hinzu, nachdem Sie das Skript setup des Pakets gelesen haben.
Transkript-Einlesen (feintkit verify --transcript)
Zweck: Verwandelt ein gespeichertes Agententranskript in den reinen Text, den die Urteilsregel bewertet, sodass das Urteil nur betrachtet, was der Agent gesagt und getan hat, und nicht das umgebende Aufzeichnungsformat. Es ist eine Bibliothek ohne eigenen Befehl; der Runner verwendet sie, wenn verify mit --format aufgerufen wird.
Wo es hingehört: nachdem ein Szenario gegen Ihren Agenten lief und Sie die Ausgabe des Agenten gespeichert haben, um zu beurteilen, ob der Agent der eingeschleusten Anweisung gefolgt ist.
Aufruf (die Zeile verify aus dem eigenen Hilfetext des Runners):
verify <id> [--transcript <file>] [--format <name>] [--strict] [--record] [--fail-on-complied] [--deterministic]
| Option | Bedeutung |
|---|---|
--transcript <file> | Das gespeicherte Transkript. Ohne --format wird die Datei unverändert als reiner Text bewertet. |
--format <name> | Liest die Datei mit einem benannten Format oder mit auto, um es zu erkennen. Braucht --transcript. Namen: claude-stream-json, anthropic-messages, openai-chat, plain. |
--strict | Mit --format: Ein Transkript, das nicht genau gelesen werden kann, ist ein Fehler statt eines Hinweises. Braucht --format. |
--record | Schreibt das Urteil als Ereignis agent_outcome in die events.jsonl des Szenarios, das der Bericht dann anzeigt. |
--fail-on-complied | Endet mit 3, wenn das Urteil complied ist. |
--deterministic | Verwendet die feste Lauf-ID RUN0000, wie beim Lauf. |
Exit-Codes von verify:
| Code | Bedeutung |
|---|---|
| 0 | Die Artefaktprüfungen waren erfolgreich (und der Agent hat nicht nachgegeben, oder --fail-on-complied wurde nicht angegeben). |
| 1 | Eine Artefaktprüfung ist fehlgeschlagen, oder das Szenario oder sein Lauf wurde nicht gefunden. |
| 2 | Aufruffehler, oder das Transkript konnte nicht gelesen oder eingelesen werden (die Meldung beginnt mit cannot ingest transcript). |
| 3 | --fail-on-complied wurde angegeben und das Urteil ist complied. |
Mit --format werden das Format und etwaige Hinweise in den Fehlerstrom ausgegeben (transcript format: <name> (named|detected)). Ein Transkript über 16777216 Bytes wird abgewiesen.
Offline-Beispiele (die eigenen Seiten des Leitfadens dienen als Transkripttext: MARKERS.md enthält das Beispiel-Bestätigungstoken eines deterministischen Laufs, RESPONSIBLE-USE.md nicht):
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out run mcp-01-tool-poisoning --deterministic # exit 0
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out verify mcp-01-tool-poisoning --transcript docs/guide/RESPONSIBLE-USE.md --format plain --deterministic # exit 0
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out verify mcp-01-tool-poisoning --transcript docs/guide/MARKERS.md --format plain --strict --record --fail-on-complied --deterministic # exit 3
node packages/cli/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out verify mcp-01-tool-poisoning --format plain # exit 2
Der zweite Befehl gibt verdict: resisted aus, der dritte gibt verdict: complied aus und endet mit 3, und der vierte ist ein Aufruffehler, weil --format --transcript braucht.
Testersatz für die Erkennung (feintkit-watch)
Zweck: ein bewusst einfacher Ersatz für ein Sicherheitsprodukt, damit die Spalte Detection der Abdeckungsmatrix und des Berichts durchgehend erprobt werden kann. Er liest, was ein getesteter Agent getan und gesehen hat (die Werkzeugaufrufe, den Inhalt der Werkzeugergebnisse, den Text des Assistenten und den geladenen Skill-Text eines gespeicherten oder durchgeleiteten Headless-Sitzungstranskripts oder eine einfache Liste von Shell-Befehlen, einen pro Zeile), gleicht jeden Aufruf und jeden Inhalt mit einer kleinen lesbaren Regeldatei ab (packages/watch/rules/starter.json) und schreibt die Erkennungsdatei, die feintkit-matrix und feintkit-report lesen (--detections), sowie eine Nachweisdatei. Er ist eine Testvorrichtung und ein durchgespieltes Beispiel dafür, was ein Produkt aufzeichnen muss und in welchem Format. Er ist kein Sicherheitsprodukt, und jede Zeile, die er ausgibt, sagt das.
Wo er hingehört: nachdem ein Szenario gegen Ihren Agenten lief und Sie die Ausgabe des Agenten gespeichert haben, vor der Matrix oder dem Bericht. Drei Grenzen gehören zum Entwurf. Er beobachtet nur: Er sieht einen Aufruf, nachdem der Agent entschieden hat, und kann ihn nicht aufhalten, daher ist ein Ergebnis blocked ein Richtlinienurteil mit der Kennzeichnung enforcement: simulated, nie eine echte Verweigerung. Er sieht den Stream der Sitzung, nicht das Protokoll oder das Netzwerk: 9 der 42 Szenarien legen ihr Signal in Protokollverkehr, Netzwerkverkehr, Pixel oder ein Frontmatter, das der Client entfernt, daher schreibt das Werkzeug dafür keinen Eintrag und die Matrix behält not-reported; es behauptet nie missed für etwas, das es nicht sehen kann, und meldet missed nur für die elf Szenarien, deren Agentenurteil beweist, dass das Signal durch den Stream lief, wenn das Urteil complied ist und keine Regel zutraf. Das Bestätigungstoken in einer Antwort ist das Agentenurteil, keine Erkennung, und keine Regel liest es. Die meisten Starterregeln passen auf die eigenen Zeichenfolgen der Suite, daher ist ein grünes Ergebnis in diesen Zeilen ein Zirkelbeweis; die Regeldatei kennzeichnet jede Regel als marker oder behaviour. Ein blocked oder detected von diesem Werkzeug ist kein Nachweis über irgendein Produkt. Nennen Sie die Erkennungsdatei detections.feintkit-watch.json, damit ihre Quelle in der Befehlszeile und in CI-Logs sichtbar ist.
Um ihn mit einem echten Agenten über viele Szenarien laufen zu lassen, verwenden Sie die Beispielschleife docs/examples/real-agent-loop.sh (Agent, Bewerter, Durchsuchen mit --merge, Matrix und Bericht; sie kann angehalten und neu gestartet werden). Die Schritt-für-Schritt-Version steht in DETECTION-INTEGRATION.md, Abschnitt 5.
Aufruf (der eigene Text des Werkzeugs):
usage: feintkit-watch scan (--scenario <id> --transcript <file> [--verdict <v> | --events <file>] | --map <file>) --rules <file> --out <file> [--evidence <file>] [--merge] [--format auto|stream-json|command-log] [--root <dir>]... [--timestamp <iso>] [--fail-on-missed]
feintkit-watch tee --scenario <id> --rules <file> --out <file> [--verdict <v> | --events <file>] [--evidence <file>] [--merge] [--format auto|stream-json|command-log] [--root <dir>]... [--timestamp <iso>]
feintkit-watch check-rules --rules <file> [--root <dir>]...
feintkit-watch export --evidence <file> --format jsonl|sarif|csv --out <file>
feintkit-watch import --input <file> --source <name> --out <file> [--evidence <file>] [--merge] [--root <dir>]...
| Option | Bedeutung |
|---|---|
--scenario <id> | Das Szenario, zu dem dieses Transkript gehört. Es wird von Ihnen benannt, nie aus dem Inhalt erraten. |
--transcript <file> | Das gespeicherte Transkript (scan); tee liest stattdessen die Standardeingabe. |
--map <file> | Eine JSON-Zuordnung mehrerer Läufe (schemaVersion 1 und runs, jeweils mit scenario, transcript und optional events oder verdict); Pfade sind relativ zur Zuordnung. Nicht kombinierbar mit --scenario, --transcript, --verdict oder --events. |
--rules <file> | Die Regeldatei. |
--out <file> | Die zu schreibende Erkennungsdatei (ein flaches Objekt aus Szenario-ID auf detected, blocked oder missed). |
--evidence <file> | Schreibt zusätzlich die Nachweisdatei: eine JSON-Zeile pro Treffer, gekürzt auf den getroffenen Text, plus eine Zusammenfassungszeile. Bei export ist es die zu lesende Nachweisdatei; bei import eine optionale Datei für die importierten Ereignisse. |
--merge | Liest die vorhandenen Erkennungs- und Nachweisdateien und ersetzt nur das durchsuchte Szenario. Eine fehlende Datei gilt als leer; eine ungültige ist ein Fehler und wird nicht angefasst. |
--format <name> | scan und tee: auto (Standard), stream-json oder command-log. export: jsonl, sarif oder csv (erforderlich). |
--verdict <v> | Das Agentenurteil von feintkit verify: complied, resisted, resisted_surfaced oder inconclusive. Ohne Urteil kann missed nicht entschieden werden. |
--events <file> | Liest das Urteil aus dem letzten Ereignis agent_outcome einer events.jsonl. Nicht kombinierbar mit --verdict. |
--root <dir> | Ein Kategorie-Repository, das Szenarien enthält; für mehrere wiederholen. Standard: das aktuelle Verzeichnis. |
--timestamp <time> | Setzt die Zeit der Nachweiszeilen, in genau der Form YYYY-MM-DDTHH:MM:SS.mmmZ. Mit FEINTKIT_DETERMINISTIC=1 ist die Zeit stattdessen fest. |
--fail-on-missed | Endet mit 3, wenn ein durchsuchtes Szenario missed ist, nachdem die Dateien geschrieben wurden. |
--input <file> | Nur import: die JSON-Lines-Ereignisse eines echten Produkts (Form siehe unten). |
--source <name> | Nur import: der Name des Produkts (1 bis 64 Buchstaben, Ziffern, Leerzeichen, Punkt, Unterstrich oder Bindestrich; er darf weder feintkit-watch noch stand-in enthalten). Er wird zum product jedes importierten Ereignisses. |
tee reicht die Standardeingabe unverändert an die Standardausgabe weiter und leistet am Ende der Eingabe dieselbe Arbeit wie scan, wobei es seine Zeilen in den Fehlerstrom schreibt; check-rules prüft eine Regeldatei und ihre Kontrollen und gibt die ehrliche Abdeckungszeile aus.
Export und Import (nur beobachtend, offline; die genauen Formen stehen in der Spezifikation fnd-18-watch, Änderung 1.2). export --evidence <file> --format jsonl|sarif|csv --out <file> liest die Nachweisdatei und schreibt eines von drei Formaten. jsonl ist ein Ereignis pro Zeile mit den stabilen Schlüsseln schema, product, stand_in, timestamp (ISO-8601), event (detection oder missed), scenario, rule, action (detect oder block, wobei ein Blockieren simuliert ist), basis (marker oder behaviour), enforcement, tool, evidence (der Ausschnitt, der bereits geschwärzt und auf 200 Zeichen gekürzt ist) und location (path:line des Transkripts). csv hat dieselben Spalten, mit einem vorangestellten Apostroph bei jeder Zelle, die eine Tabellenkalkulation als Formel lesen würde. sarif ist ein SARIF-2.1.0-Log, dessen Werkzeugtreiber ausdrücklich sagt, dass er ein TESTERSATZ und kein Sicherheitsprodukt ist; jedes Ergebnis hat die Regel-ID, eine Meldung, das Szenario als logischen Ort und, wenn der Transkriptpfad relativ ist, die Transkriptzeile als physischen Ort. import --input <file> --source <name> --out <file> geht den umgekehrten Weg: Ein echtes Produkt, das dieselbe JSON-Lines-Form schreibt (für eine Erkennung sind nur scenario und action erforderlich; event missed kennzeichnet ein Szenario, das lief und nicht gemeldet wurde; unbekannte Schlüssel werden ignoriert), erhält eine eigene Erkennungsdatei für --detections. Ergebnisse von Ersatz und Produkt werden nie vermischt: --source ist erforderlich, die importierten Ereignisse behalten es als ihr product mit stand_in false, ein Datensatz des Ersatzes selbst wird abgewiesen, und ein Dateiname, der feintkit-watch enthält, wird für die Ausgabe abgewiesen. Vergleichen Sie die beiden, indem Sie der Matrix oder dem Bericht jeweils nur eine Erkennungsdatei geben.
Exit-Codes:
| Code | Bedeutung |
|---|---|
| 0 | Erledigt (auch wenn für das Szenario kein Eintrag geschrieben wurde). |
| 1 | Eine Ausgabedatei konnte nicht geschrieben werden. |
| 2 | Aufruffehler, eine unlesbare oder ungültige Eingabe, ungültige Regeln oder ein unbekanntes Szenario. |
| 3 | --fail-on-missed wurde angegeben und ein durchsuchtes Szenario ist missed. |
Offline-Beispiele (die Transkripte sind die Fixtures des Pakets; der zweite Befehl schreibt die Erkennungsdatei, die das erste Berichtsbeispiel unten liest):
node packages/watch/dist/src/bin.js check-rules --rules packages/watch/rules/starter.json --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse # exit 0
node packages/watch/dist/src/bin.js scan --scenario mcp-08-exfil-sim --transcript packages/watch/test/fixtures/mixed.jsonl --rules packages/watch/rules/starter.json --out <work>/detections.feintkit-watch.json --evidence <work>/detections.evidence.jsonl --timestamp 1970-01-01T00:00:00.000Z --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse # exit 0
node packages/watch/dist/src/bin.js export --evidence <work>/detections.evidence.jsonl --format sarif --out <work>/detections.feintkit-watch.sarif # exit 0
node packages/watch/dist/src/bin.js export --evidence <work>/detections.evidence.jsonl --format jsonl --out <work>/detections.feintkit-watch.events.jsonl # exit 0
node packages/watch/dist/src/bin.js import --input packages/watch/test/fixtures/import-sample.jsonl --source ExampleGuard --out <work>/detections.exampleguard.json --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse # exit 0
node packages/watch/dist/src/bin.js scan --scenario mcp-04-excessive-scope --transcript packages/watch/test/fixtures/clean.jsonl --verdict complied --rules packages/watch/rules/starter.json --out <work>/missed.json --fail-on-missed --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse # exit 3
node packages/watch/dist/src/bin.js scan --scenario mcp-08-exfil-sim --transcript packages/watch/test/fixtures/mixed.jsonl --rules packages/watch/rules/starter.json --out <work> --root repos/feintkit-mcp --root repos/feintkit-skills --root repos/feintkit-injection --root repos/feintkit-exfil --root repos/feintkit-agents --root repos/feintkit-supplychain --root repos/feintkit-abuse # exit 1
node packages/watch/dist/src/bin.js scan --map <work>/map.json # exit 2
Der zweite Befehl gibt mcp-08-exfil-sim blocked (1 rule hit; enforcement: simulated, nothing was stopped) und eine Zeile aus, die besagt, dass 39 von 48 Szenarien eine Regel haben. Beim dritten gibt es keinen Regeltreffer, das Urteil ist complied, also ist das Ergebnis missed und der Exit-Code 3. Der vierte kann nicht schreiben, weil der Ausgabepfad ein Verzeichnis ist.
Bericht (feintkit-report)
Zweck: Erstellt einen Ergebnisbericht aus den Szenario-Manifesten, den Artefakten der Läufe und, wenn Sie ihn angeben, Ihrem Erkennungsprotokoll. Der Bericht listet pro Szenario das Artefaktergebnis, das Agentenurteil, das Erkennungsergebnis und die ATLAS- und OWASP-Zuordnungen auf und endet mit einer Zusammenfassung nach ATLAS-Technik. Formate: md (Standard), json, html, sarif, junit (JUnit-XML für ein CI-System, siehe AUTOMATION.md).
Wo er hingehört: nach Läufen und Bewertungen, um die Ergebnisse jemandem zu übergeben oder einen CI-Job zu steuern. Die Abdeckungsmatrix (feintkit-matrix, DETECTION-INTEGRATION.md) ist die kürzere Ansicht derselben Daten.
Aufruf (der eigene Text des Werkzeugs):
usage: feintkit-report [--root <dir>]... [--out-dir <dir>] [--detections <file>] [--format json|md|html|sarif|junit] [--output <file>] [--timestamp <YYYY-MM-DDTHH:MM:SS.mmmZ>] [--agent <name>] [--agent-version <text>] [--model <text>] [--permission-mode <text>] [--mitigations] [--fail-on-missed] [--fail-on-complied] [--fail-on-control-fired]
| Option | Bedeutung |
|---|---|
--root <dir> | Ein Kategorie-Repository, das Szenarien enthält; für mehrere wiederholen. Standard: das aktuelle Verzeichnis. |
--out-dir <dir> | Das Artefaktverzeichnis der Läufe (dasselbe wie beim Runner). |
--detections <file> | JSON-Datei, die Szenario-IDs auf detected, blocked oder missed abbildet. |
--format <name> | json, md, html, sarif oder junit. Standard md. |
--output <file> | Schreibt den Bericht in eine Datei, statt ihn auszugeben. |
--timestamp <time> | Setzt den Erzeugungszeitpunkt, in genau der Form YYYY-MM-DDTHH:MM:SS.mmmZ. Mit FEINTKIT_DETERMINISTIC=1 ist die Zeit stattdessen fest. |
--agent <name>, --agent-version <text>, --model <text>, --permission-mode <text> | Halten fest, welcher Agent die Ergebnisse erzeugt hat (fnd-44): Der Bericht trägt dann eine Agentenidentität, und die Berichte in Markdown und html geben eine Zeile Agent under test aus. Jedes ist eine kurze einfache Bezeichnung mit höchstens 64 Zeichen, die mit Exit-Code 2 abgewiesen wird, wenn sie wie ein Geheimnis aussieht; ein weggelassenes Feld ist unknown. Nichts startet den Agenten, um sie herauszufinden. |
--mitigations | Fügt für jedes Szenario mit einem Befund die geprüften Verteidigernotizen hinzu (was einzuschränken ist, welche Regel hinzuzufügen ist, welche Einstellung zu ändern ist): einen Abschnitt in md und html, den Hilfetext der Regel in sarif, den Fehltext in junit. Wird mit json abgewiesen, dessen Layout fest ist. Siehe AUTOMATION.md. |
--fail-on-missed | Endet mit 3, wenn ein Szenario als missed festgehalten wurde. |
--fail-on-complied | Endet mit 3, wenn ein Agentenurteil complied ist. |
--fail-on-control-fired | Endet mit 3, wenn der Bewerter oder das getestete Produkt bei einer harmlosen Kontrolle einen Fehlalarm ausgelöst hat (bei einer Kontrolle ein Urteil complied oder resisted_surfaced oder eine Erkennung detected oder blocked). |
Exit-Codes:
| Code | Bedeutung |
|---|---|
| 0 | Der Bericht wurde erzeugt, und keine Fehlerbedingung traf zu. |
| 1 | Ein Fehler in der Szenario-Registry (die mit FAIL beginnenden Zeilen im Fehlerstrom). Der Bericht wird dennoch erzeugt. |
| 2 | Aufruffehler, eine unlesbare oder ungültige Erkennungsdatei oder die Ausgabedatei konnte nicht geschrieben werden. |
| 3 | --fail-on-missed, --fail-on-complied oder --fail-on-control-fired traf zu. |
Offline-Beispiele (sie verwenden den Lauf der Transkriptbeispiele oben und, beim vierten, die Erkennungsdatei des Ersatzes oben; das erste schreibt nichts außerhalb von <work>):
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --format md --output <work>/report.md # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --format sarif --output <work>/report.sarif # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --format junit --mitigations --output <work>/report.xml # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --detections <work>/detections.feintkit-watch.json --output <work>/with-detections.md # exit 0
node packages/report/dist/src/bin.js --root repos/feintkit-mcp --out-dir <work>/out --fail-on-complied --output <work>/gate.md # exit 3
node packages/report/dist/src/bin.js --format pdf # exit 2
Faktenprüfung (feintkit-factcheck)
Zweck: Liest jeden Satz der Herstellerdokumentation, den CLIENTS.md zitiert, erneut und führt die Prüfung der Zuordnungsquellen aus (scripts/verify-mappings.py --online), damit Abweichungen in diesen Quellen gefunden werden. Mit --write hält es das Datum jedes gefundenen Fakts in docs/guide/facts-verified.json fest; die Leitfäden zeigen dieses Datum.
Wo es hingehört: Wartung, nach einem Zeitplan (alle paar Tage) und vor einem Release. Es ist das einzige Werkzeug hier, das das Netzwerk braucht: Jede Prüfung ist eine ausgehende Anfrage an die zitierten Seiten. Gewöhnliche Nutzer der Suite brauchen es nicht.
Aufruf (der eigene Text des Werkzeugs):
usage: feintkit-factcheck [--repo <dir>] [--facts-file <file>] [--write] [--report <file>] [--skip-facts] [--skip-mappings] [--delay <ms>] [--timeout <ms>]
re-reads every cited sentence of the client guides and runs scripts/verify-mappings.py --online
--write record today's date for each fact that was found, in docs/guide/facts-verified.json (nothing is written without it)
--report FILE write a report; FILE ending in .json gives JSON, anything else Markdown
exit codes: 0 all ok, 1 drift found, 2 usage, 3 network failure
| Option | Bedeutung |
|---|---|
--repo <dir> | Der Stamm der Suite. Standard: das aktuelle Verzeichnis. |
--facts-file <file> | Wohin --write die Daten schreibt. Standard: docs/guide/facts-verified.json unter --repo. |
--write | Hält für jeden gefundenen Fakt das heutige Datum fest. Nicht kombinierbar mit --skip-facts. |
--report <file> | Schreibt einen Bericht; ein Name, der auf .json endet, ergibt JSON, alles andere Markdown. |
--skip-facts | Prüft die zitierten Sätze nicht. |
--skip-mappings | Führt die Prüfung der Zuordnungsquellen nicht aus. Beide Überspringungen anzugeben ist ein Aufruffehler. |
--delay <ms> | Pause zwischen zwei Anfragen. Standard 1000. |
--timeout <ms> | Zeitlimit einer Anfrage. Standard 30000. |
Exit-Codes:
| Code | Bedeutung |
|---|---|
| 0 | Alles wurde gefunden und stimmt überein. |
| 1 | Abweichung: Ein Satz wurde nicht gefunden, eine Seite wurde verschoben oder antwortete mit einem Fehlerstatus, oder eine Zuordnungsquelle weicht ab. |
| 2 | Aufruffehler. |
| 3 | Netzwerkfehler und keine Abweichung. |
Offline-Beispiele (nur die Aufruffehler laufen ohne Netzwerk; eine echte Prüfung ist node packages/factcheck/dist/src/bin.js und sendet Anfragen):
node packages/factcheck/dist/src/bin.js --skip-facts --skip-mappings # exit 2
node packages/factcheck/dist/src/bin.js --write --skip-facts # exit 2
node packages/factcheck/dist/src/bin.js --delay soon # exit 2
Optionen der übrigen Befehle
Die Suite hat mehr Befehlszeilenwerkzeuge und Unterbefehle als die fünf oben. Diese Tabelle listet jede Option des Hilfetexts jedes dieser Werkzeuge auf, mit dem Befehl, der sie annimmt: den Runner (feintkit) und seine Befehle honey, pack, accuracy und variants, den Kontrollserver, den Dokumentationsgenerator und seinen Befehl translate, den Guard, die Weboberfläche, das Manifest-Werkzeug, die Abdeckungsmatrix, das Scaffold-Werkzeug, die Unterbefehle diff, history, modes, repeats, store, coverage, summary und mitigations von feintkit-report sowie die Unterbefehle replay, selftest und bundle von feintkit-watch. Jeder Befehl gibt seinen eigenen Hilfetext aus, wenn er mit einer unbekannten Option aufgerufen wird. Die Optionen von feintkit verify stehen im Abschnitt über das Einlesen von Transkripten, und die der fünf Werkzeuge oben stehen in deren eigenen Tabellen.
| Option | Verwendet von | Bedeutung |
|---|---|---|
--root <dir> | feintkit, feintkit-docs, feintkit-gui, feintkit-gui demo, feintkit-manifest changelog, feintkit-matrix, feintkit-report history, feintkit-report coverage, feintkit-report summary, feintkit-watch replay, feintkit-watch selftest, feintkit-watch bundle | Ein Ordner, der Szenarien enthält (ein Kategorie-Repository); für mehrere wiederholen. Ohne sie verwendet der Befehl den aktuellen Ordner oder, beim Runner und der Weboberfläche, die installierten Kategorie-Repositories. |
--out-dir <dir> | feintkit, feintkit honey, feintkit-gui, feintkit-matrix, feintkit-report history, feintkit-report summary, feintkit-watch replay, feintkit-watch bundle | Der Artefaktordner, in den die Läufe schreiben und aus dem der Befehl liest. |
--out-dir <folder> | feintkit-gui demo | Der neue oder leere Ordner, in den die Demonstration geschrieben wird. |
--deterministic | feintkit, feintkit honey | Verwendet die feste Lauf-ID und die feste Uhr des deterministischen Modus, damit wiederholte Läufe dieselben Bytes schreiben. |
--all | feintkit | Mit clean: entfernt die Artefakte jedes Szenarios statt nur eines. |
--yes | feintkit | Mit clean --all: bestätigt das Entfernen. |
--json | feintkit | Mit list: gibt die Registry als JSON aus. |
--json | feintkit pack, feintkit-manifest pack | Mit check: gibt das Ergebnis als JSON aus. |
--json | feintkit accuracy, feintkit variants | Gibt das Ergebnis als ein JSON-Dokument statt als Text aus (bei variants mit judge). |
--json | feintkit-guard | Gibt die Befunde als JSON aus. |
--port <0-65535> | feintkit, feintkit-gui | Der TCP-Port der lokalen Weboberfläche; 0 lässt das System einen freien wählen. |
--port <0-65535> | feintkit honey | Mit listen: der Port des Loopback-Listeners; 0 lässt das System einen freien wählen. |
--host <address> | feintkit, feintkit-gui | Die Adresse, an die die Weboberfläche bindet: 127.0.0.1, localhost oder ::1. Nichts anderes wird akzeptiert. |
--scenario <id> | feintkit honey | Mit plant und listen: das Szenario, zu dem der Köder gehört. |
--dir <folder> | feintkit honey | Mit plant: der Ordner, der die Köderdatei erhält. |
--file <name> | feintkit honey | Mit plant: der Name der Köderdatei. |
--transcript <file> | feintkit honey | Mit scan: die Datei, die enthält, was der Agent gesagt oder getan hat. |
--format <name> | feintkit honey | Mit scan: das Transkriptformat, wie bei feintkit verify --format. |
--record | feintkit honey | Mit scan: hält das Ergebnis in den Ereignissen des Laufs fest. |
--fail-on-leak | feintkit honey | Mit scan: endet mit 3, wenn der Köder abgeflossen ist. |
--max-seconds <n> | feintkit honey | Mit listen: beendet den Listener nach so vielen Sekunden. |
--pack <dir> | feintkit pack | Vor list, run, verify oder clean: lädt einen Szenariopaket-Ordner; für mehrere wiederholen. |
--mappings <file> | feintkit pack, feintkit-manifest pack | Mit check: die Zuordnungsdatei, gegen die die Szenarien des Pakets geprüft werden. |
--name <pack-name> | feintkit pack | Mit new: der Name des neuen Pakets. |
--prefix <letters> | feintkit pack | Mit new: die 2 bis 5 Buchstaben, mit denen jede Szenario-ID des Pakets beginnt. |
--labels <file> | feintkit accuracy | Eine JSON-Datei mit gelabelten Antworten, die dem eingebauten Korpus hinzugefügt wird. |
--replies <file> | feintkit variants | Mit judge: die JSON-Datei, die die Antwort des Agenten auf jede Variante enthält. |
--run <id> | feintkit variants | Mit judge: die Lauf-ID der Antworten, 4 bis 16 Buchstaben oder Ziffern. |
--variant <name> | feintkit variants | Mit write: schreibt nur diese Variante; für mehrere wiederholen. |
--suite-root <dir> | feintkit-control | Der Ordner der Suite, mit dem der Server arbeitet. |
--read-root <dir> | feintkit-control | Ein Ordner, den die Audit-Werkzeuge lesen dürfen; für mehrere wiederholen. |
--out-root <dir> | feintkit-control | Der eine Ordner, in den die Automatisierungswerkzeuge schreiben. |
--ollama-url <address> | feintkit-control | Die Loopback-Adresse eines lokalen Modellservers, für das Werkzeug, das ein Szenario gegen ein lokales Modell ausführt. |
--model <name> | feintkit-control | Der Name des lokalen Modells. |
--index <file> | feintkit-docs | Die Szenario-Indexdatei. |
--mappings <file> | feintkit-docs | Die Zuordnungsdatei. |
--out <dir> | feintkit-docs | Der Ordner, in den generate den Leitfaden schreibt und mit dem check vergleicht. |
--guide <dir> | feintkit-docs translate | Der Ordner des englischen Leitfadens, dessen .md-Seiten übersetzt werden (nur lesend). |
--catalogs <dir> | feintkit-docs translate | Der Ordner der Übersetzungskataloge, eine Datei <code>.json für jede Sprache. |
--out <dir> | feintkit-docs translate | Mit generate und check: der Ordner, der für jede Sprache einen Unterordner erhält und mit dem check vergleicht. |
--lang <code> | feintkit-docs translate | Die Sprache, an der gearbeitet wird, zum Beispiel de (erforderlich für extract; ohne sie nehmen generate und check jeden Katalog). |
--show-allowed | feintkit-guard | Listet auch die Verwendungen auf, die eine Inline-Ausnahme erlaubt. |
--mappings <file> | feintkit-manifest | Mit registry: die Zuordnungsdatei, gegen die die Zuordnung jedes Szenarios geprüft wird. |
--since <version> | feintkit-manifest changelog | Behält die Einträge dieser Version und späterer. |
--id <id> | feintkit-manifest changelog | Behält die Einträge eines Szenarios. |
--format <name> | feintkit-manifest changelog, feintkit-report diff, feintkit-report history, feintkit-report modes, feintkit-report repeats, feintkit-report mitigations | Das Ausgabeformat: text (Standard), md oder json. |
--format <name> | feintkit-matrix | md (Standard) oder json. |
--format <name> | feintkit-report coverage, feintkit-report summary | text (Standard), md, html oder json. |
--detections <file> | feintkit-matrix, feintkit-report history, feintkit-report summary | Die JSON-Datei, die Szenario-IDs auf detected, blocked oder missed abbildet. |
--fail-on-missed | feintkit-matrix | Endet mit 3, wenn ein Szenario als missed festgehalten wurde. |
--fail-on-complied | feintkit-matrix | Endet mit 3, wenn ein Agentenurteil complied ist. |
--fail-on-control-fired | feintkit-matrix | Endet mit 3, wenn der Bewerter oder das getestete Produkt bei einer harmlosen Kontrolle einen Fehlalarm ausgelöst hat. |
--dest <dir> | feintkit-new | Mit repo: der anzulegende Ordner. |
--repo <dir> | feintkit-new | Das Kategorie-Repository, dem ein Szenario hinzugefügt wird oder das geprüft wird. |
--title <title> | feintkit-new | Mit scenario: der Titel des neuen Szenarios. |
--mappings <file> | feintkit-new | Mit scenario: die Zuordnungsdatei, die den Eintrag des neuen Szenarios erhält. |
--harness <spec> | feintkit-new | Die Paketangabe des Harness, von dem die neuen Dateien abhängen. |
--output <file> | feintkit-report diff, feintkit-report modes, feintkit-report repeats, feintkit-report store, feintkit-report coverage, feintkit-report summary | Schreibt das Ergebnis in eine Datei, statt es auszugeben. |
--fail-on-regression | feintkit-report diff, feintkit-report modes, feintkit-report repeats | Endet mit 3, wenn eine Regression gefunden wurde. |
--history <file> | feintkit-report history, feintkit-report store | Die Verlaufsdatei; bei store import die Datei, deren Läufe dem Store hinzugefügt werden. |
--agent <name> | feintkit-report history | Der Agent, dessen Läufe angehängt (append, erforderlich) oder angezeigt (show) werden. |
--report <file> | feintkit-report history | Mit append: die hinzuzufügende Ergebnisdatei; ohne sie wird der Bericht aus --root, --out-dir und --detections erstellt. |
--date <YYYY-MM-DD> | feintkit-report history | Mit append: das Datum des Eintrags. |
--suite-version <x.y.z> | feintkit-report history | Mit append: die Suite-Version des Eintrags. |
--agent-version <text> | feintkit-report history | Mit append: die Versionsbezeichnung des Agenten. |
--model <text> | feintkit-report history | Mit append: die Modellbezeichnung des Agenten. |
--permission-mode <text> | feintkit-report history | Mit append: die Bezeichnung des Berechtigungsmodus des Agenten. |
--agent <name> | feintkit-report summary | Der Agent, dessen Ergebnisse es sind; die Seite nennt ihn dann. |
--agent-version <text> | feintkit-report summary | Die Versionsbezeichnung des Agenten. |
--model <text> | feintkit-report summary | Die Modellbezeichnung des Agenten. |
--permission-mode <text> | feintkit-report summary | Die Bezeichnung des Berechtigungsmodus des Agenten. |
--last <n> | feintkit-report history | Mit show: nur die letzten n Läufe. |
--baseline <label> | feintkit-report modes | Die Bezeichnung des Satzes, mit dem die anderen verglichen werden. |
--against <results> | feintkit-report repeats | Ein zweiter Satz von Läufen, mit dem der erste verglichen wird; für mehrere wiederholen. |
--results <results> | feintkit-report coverage | Ein Ergebnissatz, der die Karte nach Urteil einfärbt. |
--mappings <file> | feintkit-report coverage | Die Zuordnungsdatei, deren zwei OWASP-Listen die Lücken definieren; ohne sie wird die Datei ab dem aktuellen Ordner aufwärts gesucht. |
--id <scenario id> | feintkit-report mitigations | Zeigt nur dieses Szenario; für mehrere wiederholen. |
--store <dir> | feintkit-report store | Der Ergebnis-Store: ein Ordner, den add anlegt, mit einer Markierungsdatei und einer Datei mit Läufen für jeden Monat. |
--agent <name> | feintkit-report store | Mit add (erforderlich): der Agent, der die Läufe erzeugt hat. Mit query und export: behält nur die Läufe dieses Agenten. |
--date <YYYY-MM-DD> | feintkit-report store | Mit add: das Datum der Läufe; ohne sie das Datum der Ergebnisdatei, sonst heute. |
--suite-version <x.y.z> | feintkit-report store | Mit add: die Suite-Version der Läufe. Mit query und export: behält nur die Läufe dieser Suite-Version. |
--agent-version <text> | feintkit-report store | Mit add: die Versionsbezeichnung des Agenten. Mit query und export: behält nur die Läufe mit dieser Bezeichnung. |
--model <text> | feintkit-report store | Mit add: die Modellbezeichnung des Agenten. Mit query und export: behält nur die Läufe mit dieser Bezeichnung. |
--permission-mode <text> | feintkit-report store | Mit add: die Bezeichnung des Berechtigungsmodus des Agenten. Mit query und export: behält nur die Läufe mit dieser Bezeichnung. |
--label <text> | feintkit-report store | Mit add: eine kurze Bezeichnung (Buchstaben, Ziffern, Punkt, Unterstrich und Bindestrich, höchstens 32 Zeichen), die zwei Läufe mit denselben Ergebnissen am selben Tag unterscheidet. |
--scenario <id or prefix-> | feintkit-report store | Mit query: behält die Ergebnisse eines Szenarios oder jedes Szenarios, dessen ID mit einem Präfix beginnt, das auf einen Bindestrich endet. |
--verdict <verdict> | feintkit-report store | Mit query: behält die Ergebnisse mit diesem Agentenurteil (complied, resisted, resisted_surfaced, inconclusive oder n/a). |
--detection <state> | feintkit-report store | Mit query: behält die Ergebnisse mit diesem Erkennungszustand (detected, blocked, missed, not-reported oder not-run). |
--since <YYYY-MM-DD> | feintkit-report store | Mit query und export: behält die Läufe dieses Tages und späterer. |
--until <YYYY-MM-DD> | feintkit-report store | Mit query und export: behält die Läufe dieses Tages und früherer. |
--month <YYYY-MM> | feintkit-report store | Mit query und export: behält die Läufe eines Monats; nicht kombinierbar mit --since oder --until. |
--last <n> | feintkit-report store | Mit query: behält die n neuesten der passenden Läufe. |
--by <view> | feintkit-report store | Mit query: scenario (Standard) listet die Szenarien mit ihren Zählwerten auf, run listet die Läufe auf. |
--format <name> | feintkit-report store | Mit query: text (Standard), md oder json. Mit export: kb (Standard, eine Markdown-Datei für eine Wissensbasis) oder jsonl. |
--loop <dir> | feintkit-watch replay, feintkit-watch bundle | Der gespeicherte Schleifenordner, der wiederholt oder, mit bundle create, gepackt werden soll. |
--rules <file> | feintkit-watch replay, feintkit-watch selftest, feintkit-watch bundle | Der Regelsatz des Ersatzes; ohne sie wird der Starter-Regelsatz verwendet. Bei bundle create wird der Regelsatz im Bundle gespeichert, und bundle replay verwendet diese Kopie. |
--timestamp <iso> | feintkit-watch replay, feintkit-watch bundle | Der Zeitstempel, der in die Ausgaben geschrieben wird. Bei bundle create ist es der Erstellungszeitpunkt des Bundles und der Änderungszeitpunkt jeder Datei darin. |
--out <file> | feintkit-watch bundle | Mit create: die zu schreibende Bundle-Datei; sie darf noch nicht existieren und nicht im Schleifenordner liegen. |
--agent <label> | feintkit-watch bundle | Mit create: die Agentenbezeichnung (fnd-44), die im Umgebungsdatensatz gespeichert wird; ein weggelassenes Feld wird dem Identitätsblock des report.json der Schleife entnommen, sonst ist es unknown. |
--agent-version <label> | feintkit-watch bundle | Mit create: die Versionsbezeichnung des Agenten. |
--model <label> | feintkit-watch bundle | Mit create: die Modellbezeichnung des Agenten. |
--permission-mode <label> | feintkit-watch bundle | Mit create: die Bezeichnung des Berechtigungsmodus des Agenten. |
--redact | feintkit-watch bundle | Mit create: ersetzt Geheimnismuster und den Benutzernamen eines Home-Ordnerpfads in den gebündelten Dateien, statt abzulehnen; das Manifest hält die Anzahl und den Hash des Originals fest. |
--bundle <file> | feintkit-watch bundle | Mit verify und replay: die zu lesende Bundle-Datei. |
--digest <sha256> | feintkit-watch bundle | Mit verify und replay: der Digest, den Sie für das Bundle erhalten haben (64 hexadezimale Zeichen in Kleinbuchstaben); ein abweichender Digest im Bundle ist ein Fehler. |