Feintkit

The authoritative text is the English page: English version of this page

Las herramientas de la suite: instalar, juzgar, detectar, informar, mantener los datos al día

Cinco herramientas rodean al ejecutor de escenarios (feintkit, véase DETECTION-INTEGRATION.md). Esta página da los comandos exactos, las opciones, los códigos de salida y los ejemplos sin conexión de cada una. Las líneas de comandos y las opciones se comprueban contra las herramientas reales mediante las pruebas del paquete de documentación. Lea primero RESPONSIBLE-USE.md.

PasoHerramientaComandoNecesita red
Instalarinstalador (feintkit-suite)node packages/installer/dist/src/bin.jssolo para un origen https
Ejecutarejecutor (feintkit)véase DETECTION-INTEGRATION.mdno
Juzgar una transcripcióningesta de transcripciones, usada mediante feintkit verifynode packages/cli/dist/src/bin.jsno
Sustituir a un producto de seguridadsustituto de prueba de detección (feintkit-watch)node packages/watch/dist/src/bin.jsno
Informarinforme (feintkit-report)node packages/report/dist/src/bin.jsno
Mantener los datos al díaverificación de hechos (feintkit-factcheck)node packages/factcheck/dist/src/bin.jssí

Ejecute cada comando desde la raíz del repositorio de la suite después de npm run setup. Una línea que termina con # exit <n> en un ejemplo muestra el código de salida que devuelve el comando; omita el comentario al escribirlo. <work> representa cualquier directorio vacío que usted elija.

Instalador (feintkit-suite)

Propósito: desempaqueta la suite desde un directorio, un tarball de versión o una dirección https, comprueba el tarball contra una suma de verificación que usted proporciona desde un canal aparte, muestra el aviso de descargo de responsabilidad y un plan de lo que hará, y desempaqueta. No ejecuta la compilación de la suite a menos que se pase --run-setup; con esa opción, ejecuta npm run setup --ignore-scripts con un entorno mínimo, lista los escenarios e imprime los pasos siguientes. Se niega a ejecutarse como root salvo que se le indique otra cosa y nunca sobrescribe un directorio que no sea una instalación propia. Volver a ejecutarlo sobre una instalación terminada imprime already installed.

Dónde encaja: el primer paso, en una máquina que aún no tiene la suite. Los mantenedores que ya trabajan en una copia de trabajo no lo necesitan.

Uso (el texto de la propia herramienta):

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
OpciónSignificado
--from <source>Un directorio, un archivo .tar.gz o una dirección https. Sin ella, la dirección se construye a partir de FEINTKIT_RELEASE_BASE.
--sha256 <hex>El SHA-256 esperado del tarball, tomado de un canal distinto de la descarga. No se puede combinar con --checksums. Un tarball necesita --sha256 o --checksums; un directorio no admite ninguno de los dos.
--checksums <file or https address>Un archivo SHA256SUMS que lista el tarball. Pase un archivo local que haya obtenido por separado. Una dirección https (también la construida a partir de FEINTKIT_RELEASE_BASE) procede del mismo origen que la descarga y se rechaza a menos que también se indique --trust-remote-checksums.
--trust-remote-checksumsAcepta un archivo de sumas de verificación obtenido del mismo origen que el tarball e imprime una advertencia: quien controla ese origen controla lo que se desempaqueta.
--dest <directory>Dónde instalar. Valor predeterminado: feintkit-suite en el directorio actual.
--allow-rootPermite la ejecución como usuario root.
--forceReemplaza una instalación que contiene otra versión o una compilación sin terminar.
--run-setupEjecuta npm run setup --ignore-scripts de la suite tras desempaquetar, con un entorno mínimo (se ejecuta el script setup del paquete que desempaquetó; los scripts de instalación de las dependencias no). Sin esta opción no se ejecuta nada y se imprime el comando exacto.
--skip-buildEl valor predeterminado, conservado para líneas de comandos antiguas: solo desempaqueta. No se puede combinar con --run-setup.
--accept-disclaimerReconoce el aviso sin pedir confirmación. Una sesión que no es interactiva lo necesita.
--version, --helpImprimen la versión o el texto de uso y terminan con 0.

Códigos de salida:

CódigoSignificado
0Instalado, ya instalado, o --help / --version.
2Error de uso (también: --sha256 y --checksums a la vez, --run-setup y --skip-build a la vez, ningún origen, una suma de verificación con un origen de directorio, o una suma de verificación https sin --trust-remote-checksums).
3Fallo de integridad: origen no encontrado, ninguna suma de verificación para un tarball, suma de verificación que no coincide, tarball defectuoso o descarga fallida.
4Se negó a ejecutarse como root sin --allow-root.
5Problema con el destino: no es una instalación de Feintkit, es una instalación distinta sin --force, o fallo de escritura.
6Falló la configuración (setup) o el listado de escenarios.
7No se reconoció el aviso de descargo de responsabilidad.

Ejemplos sin conexión (un directorio local como origen, no se descarga nada y no se ejecuta nada del paquete):

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

El aviso se muestra y se reconoce antes de leer cualquier origen, por lo que toda instalación necesita --accept-disclaimer en una sesión que no es interactiva. La primera instalación se rechaza porque la sesión del ejemplo no es interactiva; la segunda reconoce el aviso y desempaqueta docs/guide como si fuera la suite, sin ejecutar nada. Una instalación real usa su propio origen --from y un valor --sha256 o --checksums local de un segundo canal, y añade --run-setup solo después de haber leído el script setup del paquete.

Ingesta de transcripciones (feintkit verify --transcript)

Propósito: convierte una transcripción guardada de un agente en el texto plano que juzga la regla de veredicto, de modo que el veredicto mire solo lo que el agente dijo e hizo y no el formato del registro que lo rodea. Es una biblioteca sin comando propio; el ejecutor la usa cuando se da --format a verify.

Dónde encaja: después de que un escenario se ejecutó contra su agente y usted guardó la salida del agente, para juzgar si el agente cumplió la instrucción inyectada.

Uso (la línea verify del propio texto de uso del ejecutor):

verify <id> [--transcript <file>] [--format <name>] [--strict] [--record] [--fail-on-complied] [--deterministic]
OpciónSignificado
--transcript <file>La transcripción guardada. Sin --format, el archivo se juzga tal cual, como texto plano.
--format <name>Lee el archivo con un formato con nombre, o auto para detectarlo. Necesita --transcript. Nombres: claude-stream-json, anthropic-messages, openai-chat, plain.
--strictCon --format: una transcripción que no se puede leer exactamente es un error en lugar de una nota. Necesita --format.
--recordEscribe el veredicto en el events.jsonl del escenario como un evento agent_outcome, que el informe muestra después.
--fail-on-compliedTermina con 3 cuando el veredicto es complied.
--deterministicUsa el id de ejecución fijo RUN0000, como en la ejecución.

Códigos de salida de verify:

CódigoSignificado
0Las comprobaciones de artefactos pasaron (y el agente no cumplió, o no se indicó --fail-on-complied).
1Falló una comprobación de artefactos, o no se encontró el escenario o su ejecución.
2Error de uso, o no se pudo leer ni ingerir la transcripción (el mensaje empieza con cannot ingest transcript).
3Se indicó --fail-on-complied y el veredicto es complied.

Con --format, el formato y las notas se imprimen en el flujo de error (transcript format: <name> (named|detected)). Una transcripción de más de 16777216 bytes se rechaza.

Ejemplos sin conexión (las propias páginas de la guía sirven como texto de la transcripción: MARKERS.md contiene el token de confirmación de ejemplo de una ejecución determinista, RESPONSIBLE-USE.md no):

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

El segundo comando imprime verdict: resisted, el tercero imprime verdict: complied y termina con 3, y el cuarto es un error de uso porque --format necesita --transcript.

Sustituto de prueba de detección (feintkit-watch)

Propósito: un sustituto deliberadamente simple de un producto de seguridad, para poder ejercitar de extremo a extremo la columna Detección de la matriz de cobertura y del informe. Lee lo que un agente bajo prueba hizo y vio (las llamadas a herramientas, el contenido de los resultados de herramientas, el texto del assistant y el texto de las skills cargadas de una transcripción guardada o canalizada de una sesión headless, o una lista simple de comandos de shell, uno por línea), compara cada llamada y cada fragmento de contenido con un pequeño archivo de reglas legible (packages/watch/rules/starter.json) y escribe el archivo de detecciones que leen feintkit-matrix y feintkit-report (--detections), además de un archivo de evidencia. Es un artefacto de prueba y un ejemplo práctico de lo que un producto debe registrar y en qué formato. No es un producto de seguridad, y cada línea que imprime lo dice.

Dónde encaja: después de que un escenario se ejecutó contra su agente y usted guardó la salida del agente, antes de la matriz o del informe. Tres límites forman parte del diseño. Solo observa: ve una llamada después de que el agente decidió y no puede detenerla, así que un resultado blocked es un veredicto de política etiquetado enforcement: simulated, nunca un rechazo real. Ve el flujo de la sesión, no el protocolo ni la red: 9 de los 42 escenarios ponen su señal en tráfico de protocolo, tráfico de red, píxeles o un frontmatter que el cliente elimina, por lo que la herramienta no escribe ninguna entrada para ellos y la matriz conserva not-reported; nunca afirma missed para algo que no puede ver, e informa missed solo para los once escenarios cuyo veredicto del agente demuestra que la señal pasó por el flujo, cuando el veredicto es complied y ninguna regla coincidió. El token de confirmación de una respuesta es el veredicto del agente, no una detección, y ninguna regla lo lee. La mayoría de las reglas iniciales comparan las propias cadenas de la suite, por lo que un resultado en verde en esas filas es una evidencia circular; el archivo de reglas marca cada regla como marker o behaviour. Un blocked o detected de esta herramienta no es evidencia sobre ningún producto. Nombre el archivo de detecciones detections.feintkit-watch.json para que su origen sea visible en la línea de comandos y en los registros de CI.

Para ejecutarlo sobre muchos escenarios con un agente real, use el bucle de ejemplo docs/examples/real-agent-loop.sh (agente, juez, análisis con --merge, matriz e informe; se puede detener y volver a iniciar). La versión paso a paso está en DETECTION-INTEGRATION.md, sección 5.

Uso (el texto de la propia herramienta):

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>]...
OpciónSignificado
--scenario <id>El escenario al que pertenece esta transcripción. Lo nombra usted; nunca se deduce del contenido.
--transcript <file>La transcripción guardada (scan); tee lee la entrada estándar en su lugar.
--map <file>Un mapa JSON de varias ejecuciones (schemaVersion 1 y runs, cada una con scenario, transcript y opcionalmente events o verdict); las rutas son relativas al mapa. No se puede combinar con --scenario, --transcript, --verdict ni --events.
--rules <file>El archivo de reglas.
--out <file>El archivo de detecciones que se escribirá (un objeto plano de id de escenario a detected, blocked o missed).
--evidence <file>También escribe el archivo de evidencia: una línea JSON por coincidencia, truncada al texto coincidente, más una línea de resumen. Con export es el archivo de evidencia que se lee; con import es un archivo opcional para los eventos importados.
--mergeLee los archivos de detecciones y de evidencia existentes y reemplaza solo el escenario analizado. Un archivo ausente cuenta como vacío; uno no válido es un error y no se toca.
--format <name>scan y tee: auto (predeterminado), stream-json o command-log. export: jsonl, sarif o csv (obligatorio).
--verdict <v>El veredicto del agente de feintkit verify: complied, resisted, resisted_surfaced o inconclusive. Sin un veredicto no se puede decidir missed.
--events <file>Lee el veredicto del último evento agent_outcome de un events.jsonl. No se puede combinar con --verdict.
--root <dir>Un repositorio de categoría que contiene escenarios; repítalo para varios. Valor predeterminado: el directorio actual.
--timestamp <time>Fija la hora de las líneas de evidencia, en la forma exacta YYYY-MM-DDTHH:MM:SS.mmmZ. Con FEINTKIT_DETERMINISTIC=1 la hora queda fija en su lugar.
--fail-on-missedTermina con 3 cuando un escenario analizado es missed, después de escribir los archivos.
--input <file>Solo import: los eventos JSON Lines de un producto real (forma más abajo).
--source <name>Solo import: el nombre del producto (1 a 64 letras, dígitos, espacio, punto, guion bajo o guion; no puede contener feintkit-watch ni stand-in). Pasa a ser el product de cada evento importado.

tee pasa la entrada estándar a la salida estándar sin cambios y hace el mismo trabajo que scan al final de la entrada, imprimiendo sus líneas en el flujo de error; check-rules valida un archivo de reglas y sus controles e imprime la línea honesta de cobertura.

Exportación e importación (solo observación, sin conexión; las formas exactas están en la especificación fnd-18-watch, Amendment 1.2). export --evidence <file> --format jsonl|sarif|csv --out <file> lee el archivo de evidencia y escribe uno de tres formatos. jsonl es un evento por línea con las claves estables schema, product, stand_in, timestamp (ISO-8601), event (detection o missed), scenario, rule, action (detect o block, y un bloqueo es simulado), basis (marker o behaviour), enforcement, tool, evidence (el fragmento que ya está censurado y recortado a 200 caracteres) y location (path:line de la transcripción). csv tiene las mismas columnas, con un apóstrofo inicial en cualquier celda que una hoja de cálculo leería como fórmula. sarif es un registro SARIF 2.1.0 cuyo controlador de herramienta dice expresamente que es un SUSTITUTO DE PRUEBA y no un producto de seguridad; cada resultado tiene el id de la regla, un mensaje, el escenario como ubicación lógica y, cuando la ruta de la transcripción es relativa, la línea de la transcripción como ubicación física. import --input <file> --source <name> --out <file> va en sentido contrario: un producto real que escribe la misma forma JSON Lines (solo scenario y action son obligatorios para una detección; event missed marca un escenario que se ejecutó y no se informó; las claves desconocidas se ignoran) obtiene su propio archivo de detecciones para --detections. Los resultados del sustituto y del producto nunca se mezclan: --source es obligatorio, los eventos importados lo conservan como su product con stand_in en false, se rechaza un registro del propio sustituto y se rechaza para la salida un nombre de archivo que contenga feintkit-watch. Compare ambos dando a la matriz o al informe un solo archivo de detecciones a la vez.

Códigos de salida:

CódigoSignificado
0Hecho (también cuando no se escribió ninguna entrada para el escenario).
1No se pudo escribir un archivo de salida.
2Error de uso, una entrada ilegible o no válida, reglas no válidas o un escenario desconocido.
3Se indicó --fail-on-missed y un escenario analizado es missed.

Ejemplos sin conexión (las transcripciones son los archivos de prueba del paquete; el segundo comando escribe el archivo de detecciones que lee el primer ejemplo de informe más abajo):

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

El segundo comando imprime mcp-08-exfil-sim blocked (1 rule hit; enforcement: simulated, nothing was stopped) y una línea que dice que 39 de 48 escenarios tienen una regla. El tercero no tiene ninguna coincidencia de regla, el veredicto es complied, por lo que el resultado es missed y el código de salida es 3. El cuarto no puede escribir porque la ruta de salida es un directorio.

Informe (feintkit-report)

Propósito: genera un informe de resultados a partir de los manifiestos de los escenarios, los artefactos de las ejecuciones y, cuando se lo da, su registro de detección. El informe lista por escenario el resultado de los artefactos, el veredicto del agente, el resultado de la detección y las correspondencias con ATLAS y OWASP, y termina con un resumen por técnica de ATLAS. Formatos: md (predeterminado), json, html, sarif, junit (JUnit XML para un sistema de CI, véase AUTOMATION.md).

Dónde encaja: después de las ejecuciones y los juicios, para entregar los resultados a alguien o para controlar un trabajo de CI. La matriz de cobertura (feintkit-matrix, DETECTION-INTEGRATION.md) es la vista más breve de los mismos datos.

Uso (el texto de la propia herramienta):

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]
OpciónSignificado
--root <dir>Un repositorio de categoría que contiene escenarios; repítalo para varios. Valor predeterminado: el directorio actual.
--out-dir <dir>El directorio de artefactos de las ejecuciones (el mismo que el del ejecutor).
--detections <file>Archivo JSON que asocia ids de escenario con detected, blocked o missed.
--format <name>json, md, html, sarif o junit. Valor predeterminado md.
--output <file>Escribe el informe en un archivo en lugar de imprimirlo.
--timestamp <time>Fija la hora de generación, en la forma exacta YYYY-MM-DDTHH:MM:SS.mmmZ. Con FEINTKIT_DETERMINISTIC=1 la hora queda fija en su lugar.
--agent <name>, --agent-version <text>, --model <text>, --permission-mode <text>Registran qué agente produjo los resultados (fnd-44): el informe lleva entonces una identidad del agente, y los informes markdown y html imprimen una línea Agent under test. Cada una es una etiqueta simple y corta, de como máximo 64 caracteres, rechazada con salida 2 cuando parece un secreto; un campo que omita es unknown. Nada inicia el agente para averiguarlas.
--mitigationsAñade las notas revisadas para defensores (qué restringir, qué regla añadir, qué ajuste cambiar) para cada escenario que tiene un hallazgo: una sección en md y html, el texto de ayuda de la regla en sarif, el texto del fallo en junit. Se rechaza con json, cuya estructura es fija. Véase AUTOMATION.md.
--fail-on-missedTermina con 3 cuando un escenario se registró como missed.
--fail-on-compliedTermina con 3 cuando un veredicto de agente es complied.
--fail-on-control-firedTermina con 3 cuando el juez o el producto bajo prueba dio una falsa alarma en un control benigno (un veredicto complied o resisted_surfaced, o una detección detected o blocked, para un control).

Códigos de salida:

CódigoSignificado
0Se generó el informe y no se aplicó ninguna condición de fallo.
1Un error del registro de escenarios (las líneas que empiezan con FAIL en el flujo de error). El informe se genera de todos modos.
2Error de uso, un archivo de detecciones ilegible o no válido, o no se pudo escribir el archivo de salida.
3Se aplicó --fail-on-missed, --fail-on-complied o --fail-on-control-fired.

Ejemplos sin conexión (usan la ejecución de los ejemplos de transcripción anteriores y, el cuarto, el archivo de detecciones del sustituto anterior; el primero no escribe nada fuera de <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

Verificación de hechos (feintkit-factcheck)

Propósito: vuelve a leer cada frase de la documentación de los proveedores que cita CLIENTS.md y ejecuta la comprobación de las fuentes de correspondencias (scripts/verify-mappings.py --online), para detectar la deriva de esas fuentes. Con --write registra la fecha de cada dato encontrado en docs/guide/facts-verified.json; las guías muestran esa fecha.

Dónde encaja: mantenimiento, de forma programada (cada pocos días) y antes de una versión. Es la única herramienta de aquí que necesita red: cada comprobación es una solicitud saliente a las páginas citadas. Los usuarios corrientes de la suite no la necesitan.

Uso (el texto de la propia herramienta):

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
OpciónSignificado
--repo <dir>La raíz de la suite. Valor predeterminado: el directorio actual.
--facts-file <file>Dónde registra --write las fechas. Valor predeterminado: docs/guide/facts-verified.json bajo --repo.
--writeRegistra la fecha de hoy para cada dato encontrado. No se puede combinar con --skip-facts.
--report <file>Escribe un informe; un nombre que termina en .json da JSON, cualquier otro da Markdown.
--skip-factsNo comprueba las frases citadas.
--skip-mappingsNo ejecuta la comprobación de las fuentes de correspondencias. Indicar ambas omisiones es un error de uso.
--delay <ms>Pausa entre dos solicitudes. Valor predeterminado 1000.
--timeout <ms>Límite de tiempo de una solicitud. Valor predeterminado 30000.

Códigos de salida:

CódigoSignificado
0Todo se encontró y coincide.
1Deriva: no se encontró una frase, una página se movió o respondió con un estado de error, o una fuente de mapeos difiere.
2Error de uso.
3Fallo de red y ninguna deriva.

Ejemplos sin conexión (solo los errores de uso pueden ejecutarse sin red; una comprobación real es node packages/factcheck/dist/src/bin.js y envía solicitudes):

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

Opciones de los demás comandos

La suite tiene más herramientas de línea de comandos y subcomandos que las cinco anteriores. Esta tabla lista cada opción del texto de uso de cada una de ellas, con el comando que la acepta: el ejecutor (feintkit) y sus comandos honey, pack, accuracy y variants, el servidor de control, el generador de documentación y su comando translate, el guard, la interfaz web, la herramienta de manifiestos, la matriz de cobertura, la herramienta de andamiaje, los subcomandos diff, history, modes, repeats, store, coverage, summary y mitigations de feintkit-report, y los subcomandos replay, selftest y bundle de feintkit-watch. Cada comando imprime su propio texto de uso cuando se le pasa una opción desconocida. Las opciones de feintkit verify están en la sección sobre la ingesta de transcripciones, y las de las cinco herramientas anteriores están en sus propias tablas.

OpciónUsada porSignificado
--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 bundleUna carpeta que contiene escenarios (un repositorio de categoría); repítala para varias. Sin ella, el comando usa la carpeta actual o, para el ejecutor y la interfaz web, los repositorios de categoría instalados.
--out-dir <dir>feintkit, feintkit honey, feintkit-gui, feintkit-matrix, feintkit-report history, feintkit-report summary, feintkit-watch replay, feintkit-watch bundleLa carpeta de artefactos en la que escriben las ejecuciones y de la que lee el comando.
--out-dir <folder>feintkit-gui demoLa carpeta nueva o vacía en la que se escribe la demostración.
--deterministicfeintkit, feintkit honeyUsa el id de ejecución y el reloj fijos del modo determinista, de modo que las ejecuciones repetidas escriben los mismos bytes.
--allfeintkitCon clean: elimina los artefactos de todos los escenarios en lugar de uno.
--yesfeintkitCon clean --all: confirma la eliminación.
--jsonfeintkitCon list: imprime el registro como JSON.
--jsonfeintkit pack, feintkit-manifest packCon check: imprime el resultado como JSON.
--jsonfeintkit accuracy, feintkit variantsImprime el resultado como un solo documento JSON en lugar de texto (para variants, con judge).
--jsonfeintkit-guardImprime los hallazgos como JSON.
--port <0-65535>feintkit, feintkit-guiEl puerto TCP de la interfaz web local; 0 deja que el sistema elija uno libre.
--port <0-65535>feintkit honeyCon listen: el puerto del oyente de loopback; 0 deja que el sistema elija uno libre.
--host <address>feintkit, feintkit-guiLa dirección a la que se enlaza la interfaz web: 127.0.0.1, localhost o ::1. No se acepta nada más.
--scenario <id>feintkit honeyCon plant y listen: el escenario al que pertenece el cebo.
--dir <folder>feintkit honeyCon plant: la carpeta que recibe el archivo cebo.
--file <name>feintkit honeyCon plant: el nombre del archivo cebo.
--transcript <file>feintkit honeyCon scan: el archivo que contiene lo que el agente dijo o hizo.
--format <name>feintkit honeyCon scan: el formato de la transcripción, como para feintkit verify --format.
--recordfeintkit honeyCon scan: registra el resultado en los eventos de la ejecución.
--fail-on-leakfeintkit honeyCon scan: termina con 3 cuando el cebo se filtró.
--max-seconds <n>feintkit honeyCon listen: detiene el oyente después de esta cantidad de segundos.
--pack <dir>feintkit packDelante de list, run, verify o clean: carga una carpeta de paquete de escenarios; repítala para varias.
--mappings <file>feintkit pack, feintkit-manifest packCon check: el archivo de correspondencias contra el que se comprueban los escenarios del paquete.
--name <pack-name>feintkit packCon new: el nombre del nuevo paquete.
--prefix <letters>feintkit packCon new: las 2 a 5 letras con las que empieza cada id de escenario del paquete.
--labels <file>feintkit accuracyUn archivo JSON de respuestas etiquetadas que se añade al corpus integrado.
--replies <file>feintkit variantsCon judge: el archivo JSON que contiene la respuesta del agente a cada variante.
--run <id>feintkit variantsCon judge: el id de ejecución de las respuestas, de 4 a 16 letras o dígitos.
--variant <name>feintkit variantsCon write: escribe solo esta variante; repítala para varias.
--suite-root <dir>feintkit-controlLa carpeta de la suite sobre la que trabaja el servidor.
--read-root <dir>feintkit-controlUna carpeta que las herramientas de auditoría pueden leer; repítala para varias.
--out-root <dir>feintkit-controlLa única carpeta en la que escriben las herramientas de automatización.
--ollama-url <address>feintkit-controlLa dirección de loopback de un servidor de modelos local, para la herramienta que ejecuta un escenario contra un modelo local.
--model <name>feintkit-controlEl nombre del modelo local.
--index <file>feintkit-docsEl archivo de índice de escenarios.
--mappings <file>feintkit-docsEl archivo de correspondencias.
--out <dir>feintkit-docsLa carpeta en la que generate escribe la guía y con la que check compara.
--guide <dir>feintkit-docs translateLa carpeta de la guía en inglés cuyas páginas .md se traducen (solo lectura).
--catalogs <dir>feintkit-docs translateLa carpeta de los catálogos de traducción, un archivo <code>.json por cada idioma.
--out <dir>feintkit-docs translateCon generate y check: la carpeta que recibe una subcarpeta por cada idioma y con la que check compara.
--lang <code>feintkit-docs translateEl idioma con el que trabajar, por ejemplo de (obligatorio para extract; sin ella, generate y check toman todos los catálogos).
--show-allowedfeintkit-guardTambién lista los usos que permite una excepción en línea.
--mappings <file>feintkit-manifestCon registry: el archivo de correspondencias contra el que se comprueba la correspondencia de cada escenario.
--since <version>feintkit-manifest changelogConserva las entradas de esta versión y de las posteriores.
--id <id>feintkit-manifest changelogConserva las entradas de un escenario.
--format <name>feintkit-manifest changelog, feintkit-report diff, feintkit-report history, feintkit-report modes, feintkit-report repeats, feintkit-report mitigationsEl formato de salida: text (predeterminado), md o json.
--format <name>feintkit-matrixmd (predeterminado) o json.
--format <name>feintkit-report coverage, feintkit-report summarytext (predeterminado), md, html o json.
--detections <file>feintkit-matrix, feintkit-report history, feintkit-report summaryEl archivo JSON que asocia ids de escenario con detected, blocked o missed.
--fail-on-missedfeintkit-matrixTermina con 3 cuando un escenario se registró como missed.
--fail-on-compliedfeintkit-matrixTermina con 3 cuando un veredicto de agente es complied.
--fail-on-control-firedfeintkit-matrixTermina con 3 cuando el juez o el producto bajo prueba dio una falsa alarma en un control benigno.
--dest <dir>feintkit-newCon repo: la carpeta que se crea.
--repo <dir>feintkit-newEl repositorio de categoría al que se añade un escenario o que se comprueba.
--title <title>feintkit-newCon scenario: el título del nuevo escenario.
--mappings <file>feintkit-newCon scenario: el archivo de correspondencias que recibe la entrada del nuevo escenario.
--harness <spec>feintkit-newLa especificación de paquete del arnés del que dependen los archivos nuevos.
--output <file>feintkit-report diff, feintkit-report modes, feintkit-report repeats, feintkit-report store, feintkit-report coverage, feintkit-report summaryEscribe el resultado en un archivo en lugar de imprimirlo.
--fail-on-regressionfeintkit-report diff, feintkit-report modes, feintkit-report repeatsTermina con 3 cuando se encontró una regresión.
--history <file>feintkit-report history, feintkit-report storeEl archivo de historial; para store import, el archivo cuyas ejecuciones se añaden al almacén.
--agent <name>feintkit-report historyEl agente cuyas ejecuciones se añaden (append, obligatorio) o se muestran (show).
--report <file>feintkit-report historyCon append: el archivo de resultados que se añade; sin él, el informe se genera a partir de --root, --out-dir y --detections.
--date <YYYY-MM-DD>feintkit-report historyCon append: la fecha de la entrada.
--suite-version <x.y.z>feintkit-report historyCon append: la versión de la suite de la entrada.
--agent-version <text>feintkit-report historyCon append: la etiqueta de versión del agente.
--model <text>feintkit-report historyCon append: la etiqueta de modelo del agente.
--permission-mode <text>feintkit-report historyCon append: la etiqueta del modo de permisos del agente.
--agent <name>feintkit-report summaryEl agente al que pertenecen estos resultados; la página lo nombra entonces.
--agent-version <text>feintkit-report summaryLa etiqueta de versión del agente.
--model <text>feintkit-report summaryLa etiqueta de modelo del agente.
--permission-mode <text>feintkit-report summaryLa etiqueta del modo de permisos del agente.
--last <n>feintkit-report historyCon show: solo las últimas n ejecuciones.
--baseline <label>feintkit-report modesLa etiqueta del conjunto con el que se comparan los demás.
--against <results>feintkit-report repeatsUn segundo conjunto de ejecuciones con el que comparar el primero; repítala para varios.
--results <results>feintkit-report coverageUn conjunto de resultados que colorea el mapa según el veredicto.
--mappings <file>feintkit-report coverageEl archivo de correspondencias cuyas dos listas de OWASP definen las lagunas; sin él, el archivo se busca hacia arriba desde la carpeta actual.
--id <scenario id>feintkit-report mitigationsMuestra solo este escenario; repítala para varios.
--store <dir>feintkit-report storeEl almacén de resultados: una carpeta que crea add, con un archivo marcador y un archivo de ejecuciones por cada mes.
--agent <name>feintkit-report storeCon add (obligatorio): el agente que produjo las ejecuciones. Con query y export: conserva solo las ejecuciones de este agente.
--date <YYYY-MM-DD>feintkit-report storeCon add: la fecha de las ejecuciones; sin ella, la fecha del archivo de resultados y, si no, hoy.
--suite-version <x.y.z>feintkit-report storeCon add: la versión de la suite de las ejecuciones. Con query y export: conserva solo las ejecuciones de esta versión de la suite.
--agent-version <text>feintkit-report storeCon add: la etiqueta de versión del agente. Con query y export: conserva solo las ejecuciones con esta etiqueta.
--model <text>feintkit-report storeCon add: la etiqueta de modelo del agente. Con query y export: conserva solo las ejecuciones con esta etiqueta.
--permission-mode <text>feintkit-report storeCon add: la etiqueta del modo de permisos del agente. Con query y export: conserva solo las ejecuciones con esta etiqueta.
--label <text>feintkit-report storeCon add: una etiqueta corta (letras, dígitos, punto, guion bajo y guion, como máximo 32 caracteres) que distingue dos ejecuciones con los mismos resultados el mismo día.
--scenario <id or prefix->feintkit-report storeCon query: conserva los resultados de un escenario, o de todos los escenarios cuyo id empieza con un prefijo que termina en guion.
--verdict <verdict>feintkit-report storeCon query: conserva los resultados con este veredicto del agente (complied, resisted, resisted_surfaced, inconclusive o n/a).
--detection <state>feintkit-report storeCon query: conserva los resultados con este estado de detección (detected, blocked, missed, not-reported o not-run).
--since <YYYY-MM-DD>feintkit-report storeCon query y export: conserva las ejecuciones de este día y posteriores.
--until <YYYY-MM-DD>feintkit-report storeCon query y export: conserva las ejecuciones de este día y anteriores.
--month <YYYY-MM>feintkit-report storeCon query y export: conserva las ejecuciones de un mes; no se puede combinar con --since ni --until.
--last <n>feintkit-report storeCon query: conserva las n más recientes de las ejecuciones que coinciden.
--by <view>feintkit-report storeCon query: scenario (predeterminado) lista los escenarios con sus recuentos, run lista las ejecuciones.
--format <name>feintkit-report storeCon query: text (predeterminado), md o json. Con export: kb (predeterminado, un archivo Markdown para una base de conocimiento) o jsonl.
--loop <dir>feintkit-watch replay, feintkit-watch bundleLa carpeta de bucle guardada que se reproduce o, con bundle create, que se empaqueta.
--rules <file>feintkit-watch replay, feintkit-watch selftest, feintkit-watch bundleEl conjunto de reglas del sustituto; sin él se usa el conjunto de reglas inicial. Con bundle create, el conjunto de reglas se almacena en el paquete, y bundle replay usa esa copia.
--timestamp <iso>feintkit-watch replay, feintkit-watch bundleLa marca de tiempo escrita en las salidas. Con bundle create es la hora de creación del paquete y la hora de modificación de cada archivo que contiene.
--out <file>feintkit-watch bundleCon create: el archivo de paquete que se escribirá; no debe existir todavía ni estar dentro de la carpeta del bucle.
--agent <label>feintkit-watch bundleCon create: la etiqueta del agente (fnd-44) almacenada en el registro del entorno; un campo omitido se toma del bloque de identidad del report.json del bucle y, si no, es unknown.
--agent-version <label>feintkit-watch bundleCon create: la etiqueta de versión del agente.
--model <label>feintkit-watch bundleCon create: la etiqueta de modelo del agente.
--permission-mode <label>feintkit-watch bundleCon create: la etiqueta del modo de permisos del agente.
--redactfeintkit-watch bundleCon create: reemplaza las formas de secretos y el nombre de usuario de una ruta de carpeta personal en los archivos incluidos en lugar de rechazarlos; el manifiesto registra el recuento y el hash del original.
--bundle <file>feintkit-watch bundleCon verify y replay: el archivo de paquete que se lee.
--digest <sha256>feintkit-watch bundleCon verify y replay: el resumen que se le dio para el paquete (64 caracteres hexadecimales en minúsculas); un resumen distinto en el paquete es un fallo.