OrangePro
Análisis de brechas en pruebas conductuales y generación de pruebas de integración fundamentadas mediante grafo de conocimiento; detecta comportamientos no probados, los clasifica por radio de impacto y los valida mediante eliminación de mutantes.
Documentación
Encuentra los comportamientos que tus pruebas pasan por alto. Genera pruebas fundamentadas que realmente se ejecutan.
OrangePro mapea cada comportamiento público en tu código, puntúa cada uno con evidencia real de pruebas y te muestra los puntos ciegos estructurales antes de que tus usuarios los encuentren. Se ejecuta localmente. Tu código nunca sale de tu máquina.
npx -y @orangepro/mcp-server@latest start .
Tabla de contenidos
- Qué obtienes
- Niveles de evidencia
- Inicio rápido
- Uso con tu agente de codificación
- Cómo funciona
- Soporte de lenguajes
- Privacidad
- Referencia de CLI
- Herramientas MCP
- Plataforma
- Contribuciones
Qué obtienes
Un solo comando produce un informe HTML interactivo:
npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html
El informe tiene dos modos: Simple (puntos ciegos a nivel de integración, en lenguaje sencillo) y Experto (lista completa de comportamientos, niveles de evidencia, flujos, mapa del sistema). Alterna con el interruptor de píldora en la parte superior.
→ Ejemplo en vivo: Twenty CRM (5,237 comportamientos mapeados)
Mapa del sistema — carriles de entrada (GraphQL, HTTP, Jobs) que fluyen hacia los servicios, dimensionados por tráfico, coloreados por nivel de evidencia, con anillo rojo por riesgo.
Brechas prioritarias de otro proyecto de código abierto HONO — los 20 comportamientos no probados más importantes clasificados por radio de impacto, con borradores de pruebas generados.
Niveles de evidencia
Cada comportamiento recibe exactamente un nivel. Nada se etiqueta como "probado" por fe.
| Nivel | Color | Qué significa |
|---|---|---|
| Probado dinámicamente | 🟢 | Una prueba real elimina una mutación dirigida de este comportamiento |
| Cubierto en tiempo de ejecución | 🟢 | La herramienta de cobertura ejecutó este código |
| Vinculado estáticamente | 🟡 | Una prueba importa y llama a este código — vínculo estructural, no prueba |
| Candidato no confirmado | ⚪ | Existe un archivo de prueba similar — una pista, no evidencia |
| Sin señal | 🔴 | Nada prueba este comportamiento |
"Probado dinámicamente 0" es normal en la primera ejecución. La prueba requiere ejecutar pruebas contra mutaciones dirigidas. Ese es el modelo de confianza.
Inicio rápido
cd /path/to/your/repo
npm install # install the repo's own dependencies first
npx -y @orangepro/mcp-server@latest start .
open .orangepro/behavior-coverage.html
No se necesita clave API. El informe muestra tu mapa del sistema, niveles de evidencia, brechas prioritarias y el delta desde la última ejecución.
¿Quieres generación de pruebas? Agrega una clave de modelo (BYOK):
export ANTHROPIC_API_KEY="..." # or OPENAI_API_KEY / OLLAMA_BASE_URL
npx -y @orangepro/mcp-server@latest start .
La salida de IA nunca cambia los niveles de evidencia. Solo el oráculo de eliminación de mutaciones puede otorgar "Probado dinámicamente".
Salida:
.orangepro/
├── behavior-coverage.html ← open this
├── graph.json ← deterministic evidence graph
├── COVERAGE_REPORT.md ← coverage and gap summary
└── ai/ ← candidate flows (when a key is configured)
orangepro_generated/ ← generated tests; your source files are never touched
Cada nueva ejecución muestra un banner de delta: qué entró al código, qué subió en riesgo, qué se resolvió.
Uso con tu agente de codificación
OrangePro se ejecuta como servidor MCP. Agrégalo a la configuración de tu cliente:
{
"mcpServers": {
"orangepro-local": {
"command": "npx",
"args": ["-y", "@orangepro/mcp-server@latest", "mcp"]
}
}
}
| Cliente | Dónde colocarlo |
|---|---|
| Claude Code | .mcp.json o ~/.claude.json |
| Cursor | ~/.cursor/mcp.json o Configuración → MCP |
| VS Code / Copilot | Configuración de MCP |
| Codex / OpenCode | Ejecuta npx -y @orangepro/mcp-server@latest agent --client codex |
El flujo de trabajo: Dile a tu agente:
"Usa
orangepro_start, luegoorangepro_generate_testscon base_ref=main. Escribe cada prueba en su suggested_path, ejecútala e informa aprobado/fallido."
El agente escribe la prueba, la ejecuta, llama a orangepro_prove y el comportamiento se convierte en "Probado dinámicamente". Un solo prompt, ciclo completo.
Compatible con
Claude Code · Cursor · GitHub Copilot · Codex · Windsurf · OpenCode · VS Code
Cualquier agente compatible con MCP puede manejar OrangePro. Sin bloqueo de proveedor.
Cómo funciona
┌─────────────┐ ┌──────────────┐ ┌─────────────┐
│ Your Code │ ──► │ Knowledge │ ──► │ Evidence │
│ (any lang) │ │ Graph │ │ Tiers │
└─────────────┘ └──────────────┘ └─────────────┘
│
┌──────┴──────┐
▼ ▼
┌───────────┐ ┌──────────┐
│ Gap Report│ │ Generate │
│ + Risks │ │ Tests │
└───────────┘ └──────────┘
| Fase | Qué sucede | ¿Necesita clave de modelo? |
|---|---|---|
| Analizar | Recorrido AST → comportamientos, flujos, niveles de evidencia | No |
| Puntuar | Puntuación de preparación del grafo (0–100) | No |
| Generar | Pruebas fundamentadas para las brechas principales | Sí (BYOK) |
| Probar | El oráculo de eliminación de mutaciones confirma que la prueba falla si el comportamiento cambia | No |
Mismo código = misma puntuación. Determinista. Siempre.
Soporte de lenguajes
| Lenguaje | Mapeo estático | Pruebas generadas | Prueba dinámica |
|---|---|---|---|
| TypeScript / JavaScript | ✓ | ✓ Jest / Vitest / Mocha | ✓ |
| Python | ✓ | ✓ pytest | ✓ |
| Go | ✓ | ✓ *_test.go | ✓ |
| Java | ✓ | ✓ JUnit 4/5 | ✓ |
| Kotlin, Rust, PHP, C#, Ruby, Swift, C, C++ | ✓ | planificado | planificado |
El mapeo estático funciona en muchos lenguajes mediante tree-sitter. La prueba dinámica es deliberadamente más limitada — cada lenguaje necesita un ejecutor, un localizador de mutaciones y un perfil de sandbox.
Ejecución local de mayor valor
Usa primero los comandos de configuración y prueba del propio repositorio, y mantén la cobertura de unidades e integración en artefactos separados. Luego ejecuta opro start; realiza el análisis, ingiere los artefactos, intenta la prueba dirigida, genera borradores visibles en el informe y escribe el informe final. Un opro analyze separado es innecesario cuando opro start lo sigue.
# 1. Install/build exactly as the repository documents.
# 2. Run the repository's unit and integration coverage commands separately.
# 3. Record artifact provenance (example paths and commands):
mkdir -p .orangepro
# create .orangepro/coverage-suites.json using the schema below
opro coverage . # optional preflight: discover/generate artifacts
opro start . --proof-limit 5 --generate-limit 20
{
"artifacts": {
".orangepro/coverage/unit.coverprofile": {
"suite": "unit",
"command": "make unit-test-coverage"
},
".orangepro/coverage/integration.coverprofile": {
"suite": "integration",
"command": "make integration-test-coverage"
}
}
}
Sin este manifiesto, OrangePro infiere de forma conservadora nombres claros de unit/integration y etiqueta todo lo demás como unclassified; nunca adivina que un perfil agregado es solo de unidades. El informe muestra unidades, integración, su superposición, cobertura no clasificada y la unión combinada por separado. --proof-limit controla los intentos de prueba dinámica (que pueden redactar una prueba para verificación); --generate-limit controla de forma independiente el carril adicional de redacción de brechas de riesgo visible en el informe. Una ejecución de generación también registra su estado terminal y la razón exacta, de modo que un fallo de compilador/importación no se informe erróneamente como un problema genérico de dependencias.
Privacidad
- Sin almacenamiento de código fuente. Lee el código en proceso. Nunca lo sube a un servidor de OrangePro.
- Sin mutación de código existente. Nunca edita tus archivos fuente o de prueba.
- Tus claves siguen siendo tuyas. Se leen del entorno en el momento de la llamada, nunca se persisten.
- BYOK es directo. El contexto del código va al proveedor de modelo que configures. OrangePro no está en esa ruta.
Referencia de CLI
opro # analyze + report + agent next actions
opro start --base main # same, scoped to a branch diff
opro analyze # build the evidence graph
opro score # graph readiness (0–100)
opro gaps --limit 10 # top 10 untested behaviors
opro generate --base main # tests for PR diff
opro generate --single # top gap, whole repo
opro prove # mutation-kill oracle
opro rtm # traceability matrix
opro export # metadata-only evidence pack
opro mcp # run as MCP server (stdio)
opro doctor # what evidence to add next
opro coverage # discover/generate artifacts; analyze or start ingests them
Agrega --json a cualquier comando de lectura para salida de máquina. Ejecuta opro help para la referencia completa.
Herramientas MCP (18 en total)
| Herramienta | Qué hace |
|---|---|
orangepro_start | Configuración en un comando: analiza + informe + próximas acciones |
orangepro_analyze_sources | Construye/actualiza el grafo de evidencia |
orangepro_generate_tests | Genera pruebas fundamentadas para brechas |
orangepro_prove | Ejecuta el oráculo de eliminación de mutaciones en un comportamiento |
orangepro_prove_loop | Configuración + prueba dinámica + actualización de informe para un comportamiento |
orangepro_find_test_gaps | Lista comportamientos con pruebas débiles/faltantes, clasificados por riesgo |
orangepro_graph_score | Puntuación de preparación del grafo (0–100) |
orangepro_status | Estado del espacio de trabajo sin generar nada |
orangepro_doctor | Recomienda la siguiente evidencia para mejorar la calidad |
orangepro_rtm | Matriz de trazabilidad de requisitos |
orangepro_stats | Estadísticas agregadas |
orangepro_changed_impact | Qué toca un diff (requiere git + ref base) |
orangepro_record_run | Registra el resultado de una ejecución de prueba |
orangepro_explain_test | Explica por qué se generó una prueba |
orangepro_export_evidence_pack | Exporta paquete de evidencia solo de metadatos |
orangepro_update_graph | Actualización incremental del grafo |
orangepro_ai_links | Sugerencias de comportamiento débil→símbolo (IA opcional) |
orangepro_ai_flows | Descubrimiento de flujos candidatos (IA opcional) |
Flujo de trabajo de PR
opro generate --base main # tests for what this branch changed
opro generate --pr 1234 # checks out PR #1234
opro generate --changed # current branch diff vs main
Cada prueba generada incluye:
- Fundamentación — los archivos reales, símbolos y pruebas existentes que cita
- Pistas de ejecución — dónde escribirla, cómo ejecutarla
- Categoría de escenario — qué modo de fallo aborda
Si las dependencias no están instaladas, las pruebas se mantienen como Pruebas manuales (pasos Dado/Cuando/Entonces con el bloqueador nombrado). Instala las dependencias y vuelve a ejecutar para convertirlas en pruebas ejecutables.
Categorías de prueba
La generación está limitada por evidencia. Una categoría se produce solo cuando el grafo tiene evidencia de respaldo.
| Categoría | Qué aborda |
|---|---|
| Camino feliz | Comportamiento esperado principal |
| Error de validación | Manejo de entrada incorrecta/inválida |
| Caso límite | Límites, vacío/nulo, concurrencia, reintentos |
| Flujo de integración | Comportamiento de múltiples pasos entre servicios |
| Seguridad / privacidad | Autenticación, inyección, fuga de datos |
| Regresión | Fijar un comportamiento previamente roto |
Configuración de modelo (BYOK)
El análisis, la puntuación y la prueba no necesitan clave de modelo. La generación sí.
| Proveedor | Variable de entorno |
|---|---|
| Compatible con OpenAI | OPENAI_API_KEY (opcional: OPENAI_BASE_URL, OPENAI_MODEL) |
| Anthropic | ANTHROPIC_API_KEY (opcional: ANTHROPIC_MODEL) |
| Ollama (local, sin clave) | OLLAMA_BASE_URL (opcional: OLLAMA_MODEL) |
Orden de detección automática: OpenAI → Ollama → Anthropic. Anula con --provider y --model.
Los valores predeterminados son gpt-5.3-codex para OpenAI y claude-sonnet-5 para Anthropic.
Ejecuta opro setup para configurar de forma interactiva. Las claves permanecen en tu entorno — nunca se escriben en el grafo, la configuración o los artefactos.
Carriles de candidatos de IA
Con una clave de proveedor, OrangePro prepara vínculos débiles de comportamiento→símbolo de IA y flujos candidatos sugeridos por IA. Estos son listas de trabajo de revisión/generación, no evidencia:
- Los vínculos de IA aparecen como sugerencias
AI-linked. - Los flujos de IA se almacenan por separado de los flujos deterministas.
- Ningún carril cambia los niveles de evidencia ni los conteos de denominador.
Úsalos cuando quieras que el agente encuentre flujos de límites de servicio probables más rápido; ignóralos para un informe solo determinista.
Qué hay en la plataforma alojada
Este repositorio es la herramienta local gratuita. La plataforma OrangePro agrega:
- Grafo de conocimiento persistente entre PRs y repositorios
- Puertas de política de PR/CI sobre niveles de evidencia y deltas de riesgo
- Enriquecimiento con Jira / Confluence / TestRail / OpenAPI
- Inteligencia entre repositorios y memoria de flujos recurrentes
- Correlación de incidentes de producción y orientación de regresión
- Paneles de equipo y gestión del ciclo de vida de pruebas
Contribuciones
git clone https://github.com/OrangeproAI/orangepro-mcp.git
cd orangepro-mcp && npm ci && npm run build
npm test
Se aceptan PRs. Abre un issue primero para cambios grandes.
Licencia MIT · orangepro.ai