AIContextBuilder (AICB) - Roslyn MCP Server for C#/.NET
Servidor MCP y CLI de Roslyn para inteligencia de código C#/.NET: análisis semántico y navegación de código para agentes de codificación: llamadores, impacto de cambios, implementaciones, inyección de dependencias, pruebas, efectos secundarios, código muerto y contexto con presupuesto de tokens. Se ejecuta localmente a través de stdio, sin telemetría. Código cerrado; gratuito para individuos, educación y organizaciones por debajo de los umbrales de licencia.
Documentación
AIContextBuilder (aicb)
Dale a los agentes de codificación un mapa preciso de Roslyn de tu solución C#/.NET. aicb es
un servidor de inteligencia de código para C# y .NET: responde preguntas sobre llamadores,
implementaciones, inyección de dependencias, pruebas, efectos secundarios e impacto de cambios,
y luego empaqueta el código relevante en Markdown compacto para un LLM. Se ejecuta localmente como
un servidor MCP y CLI; una aplicación de escritorio para Windows añade selección de contexto visual,
análisis y edición.
El software es de código cerrado. Este repositorio público contiene su documentación, licencia y versiones. Es gratuito para individuos, educación y organizaciones por debajo de los umbrales de licencia.
Véalo responder una pregunta de código
Pregunte a su agente de codificación:
¿Qué podría verse afectado si cambio
ColorMixerService? Usa AICB.
O llame a la misma herramienta desde una terminal:
aicb call impact_of_change --sln C:/repo/App.sln --arg symbol=ColorMixerService
Salida abreviada del ejemplo ColorMixer.SelectionLab incluido:
{
"symbol": "ColorMixerService",
"resolvedKind": "type",
"directCount": 1,
"transitiveCount": 2,
"risk": "low",
"productionImpactCount": 2,
"directImpact": { "items": ["DemoCompositionRoot"] }
}
La página MCP Usage de la aplicación de escritorio registra las llamadas localmente y separa los rechazos guiados de los posibles defectos:
Esa respuesta proviene del grafo de símbolos de Roslyn, no de una búsqueda de subcadenas. AICB distingue sobrecargas, sigue relaciones de interfaces y reemplazos, comprende tipos parciales y registra rutas de construcción de DI.
Construya contexto que se ajuste a la tarea
AICB hace más que responder preguntas individuales sobre símbolos. Puede ensamblar un paquete de contexto enfocado y específico para una tarea para un agente, en lugar de enviar un volcado de código fuente sin filtrar:
| Necesidad | Herramienta | Qué devuelve |
|---|---|---|
| Leer un símbolo en contexto | get_context | El símbolo más sus dependencias directas y llamados |
| Explorar un símbolo nombrado con su entorno seleccionado | explain_symbol | Llamadores, llamados, implementaciones, pruebas u otras dimensiones solicitadas |
| Empaquetar contexto para un objetivo en lenguaje natural | pack_for_task | Símbolos nombrados por el objetivo y su vecindario semántico |
| Prepararse para editar | prepare_task | El contexto enfocado en el objetivo más pruebas de cobertura y posibles hermanos como una fábrica o validador |
| Comprobar primero el costo de la respuesta | measure | El recuento exacto de tokens de una o más respuestas planificadas de la herramienta, sin devolver sus grandes cargas útiles |
Las herramientas de contexto enfocado aceptan un presupuesto de tokens. Los símbolos semilla nombrados explícitamente permanecen en el paquete; AICB primero reduce el detalle de los métodos y luego elimina el contenido circundante menos relevante cuando el presupuesto es ajustado. No corta texto en medio de un bloque, y una nota inicial revela tipos, pruebas o hermanos que se omitieron. AICB puede, por lo tanto, decirle que un paquete se redujo estructuralmente o se limitó; no puede certificar que el presupuesto restante sea suficiente para resolver la tarea correctamente. La representación de documentos completos puede usar el mismo pipeline de presupuesto a través de un perfil de pipeline, incluida una tolerancia de exceso configurable y un informe de recorte opcional.
El resultado es AI-Builder-MD: Markdown estructurado para un LLM, que contiene el código seleccionado junto con relaciones de símbolos, grafos de arquitectura, metadatos semánticos y procedencia. Puede usar la notación de etiquetas establecida o YAML. Consulte la guía de documentos de contexto y las herramientas de empaquetado de tareas.
Añada significado explícito con AI Tags y anotaciones semánticas
AICB funciona sin anotaciones. Cuando la estructura del código fuente y las convenciones no son
suficientes, las etiquetas opcionales <ai> en la documentación XML permiten que un
desarrollador declare explícitamente el rol previsto de un tipo o método:
/// <ai
/// role="service"
/// layer="Application"
/// responsibility="Coordinates order validation and submission."
/// stability="Stable"
/// />
public sealed class OrderService
Las anotaciones pueden describir semántica como rol, dominio, capa arquitectónica,
prioridad, estabilidad, responsabilidad y efectos secundarios. Los valores explícitos tienen
prioridad sobre la inferencia heurística; los valores centinela como none pueden suprimir
deliberadamente la inferencia para un campo. AICB conserva la procedencia para que un agente pueda
distinguir hechos derivados del código fuente, significado proporcionado por el autor y pistas
inferidas. La referencia de anotaciones AI
documenta las formas y campos admitidos.
Cómo funcionan el análisis y la memoria
.sln / .slnx / .slnf + C# + XAML/AXAML
↓
MSBuild + Roslyn semantic models
↓
AICB facts and consolidated semantic indexes
↓
individual answers or budgeted AI-Builder-MD
AICB es más que una caché de respuestas alrededor de Roslyn. Durante el análisis recorre los documentos C# de la solución, registra declaraciones, llamadas, referencias de tipos y otros hechos, y luego consolida llamadores y fan-in de tipos, implementaciones, referencias de marcado resueltas y clasificaciones transitivas de efectos secundarios. Las herramientas recorren o proyectan ese modelo cálido para una pregunta particular; las herramientas de contexto seleccionan y representan una porción específica de la tarea. Esto no significa que cada respuesta posible o relación en tiempo de ejecución esté precalculada.
Una sesión MCP pertenece a un proceso aicb mcp y fija tanto el grafo analizado
como su espacio de trabajo de Roslyn. Un segundo proceso de servidor construye su propia sesión. La
aplicación de escritorio, la CLI y el servidor MCP usan el mismo motor de análisis y representación
y pueden compartir configuración y instantáneas persistidas a través de la base de datos local, pero
no comparten un grafo vivo en memoria. Dentro de una sesión, solo se ejecuta una actualización a la
vez; los llamadores concurrentes se unen a ella. Una edición solo de código fuente puede tomar la
ruta incremental, reproduciendo el texto del documento cambiado sin recargar el espacio de trabajo.
Cuando esa ruta no está disponible, o cuando se solicita force: true, AICB lo recarga por completo.
Sesiones en vivo, instantáneas y memoria persistente del código base
Estos estados sirven para diferentes propósitos y no deben tratarse como intercambiables:
| Estado | Vida útil y propósito | Límite importante |
|---|---|---|
| Sesión MCP en vivo | Grafo en memoria y espacio de trabajo de Roslyn reutilizados por un proceso de servidor | Ve archivos guardados, no buffers de editor sin guardar; otro proceso de servidor tiene una sesión separada |
| Código base recordado | remember_codebase persiste un modelo analizado; recall_codebase puede rehidratarlo más tarde o en otro proceso sin ejecutar Roslyn | Una sesión recordada no tiene espacio de trabajo en vivo, ni números de línea confiables y un contrato de información reducido; use refresh_remembered cuando se requiera precisión en vivo |
| Instantánea guardada | Línea base nombrada utilizada por compare_with_previous y comparación de contrato público | Una línea base de comparación, no un espacio de trabajo en vivo |
<Solution>.aicb.json | Configuración de solución rastreable con Git | Contiene reglas y opciones, nunca resultados de análisis, sesiones o credenciales |
remember_codebase, recall_codebase y refresh_remembered son herramientas de suscripción
voluntaria: ningún perfil MCP las expone, así que inicie el servidor con AICB_MCP_TOOLS nombrándolas (o
AICB_MCP_TOOLS=all). recall_codebase informa si el modelo persistido aún coincide con el código fuente,
el esquema de carga útil y la identidad del analizador. Deliberadamente devuelve el modelo recordado
incluso cuando está desactualizado, con metadatos que le dicen al agente cuándo es necesario un
reanálisis en vivo. Consulte sesiones, recuperación y desactualización.
Lo que el modelo puede y no puede probar
- AICB analiza C# estáticamente visible y relaciones seleccionadas de XAML/AXAML. El código alcanzado solo a través de reflexión, escaneo de ensamblados en tiempo de ejecución, configuración dinámica o un consumidor externo puede permanecer invisible.
- El análisis de DI reconoce registros con forma de Microsoft-DI legibles estáticamente; los registros producidos en tiempo de ejecución se revelan como dinámicos o desconocidos en lugar de inventados.
- El análisis de enlaces XAML resuelve rutas solo donde el origen y el tipo de datos son seguros de establecer. Los ámbitos desconocidos se omiten de manera conservadora.
- Un efecto secundario informado es una clasificación de contacto estático conservadora propagada a través de bordes de llamadas conocidos. No es análisis general de flujo de datos, manchas o estado en tiempo de ejecución.
- Las respuestas revelan sesiones desactualizadas, proyectos no resueltos y conjuntos de resultados
limitados. Lea
staleness,incompleteProjects,totalFoundytruncatedantes de tratar una respuesta vacía o corta como prueba.
Cómo debe un agente juzgar una respuesta
Una respuesta de AICB es evidencia junto con sus límites. Antes de actuar sobre un resultado vacío, corto o aparentemente definitivo, inspeccione las señales que lo acompañan:
| Señal | Significado | Respuesta típica |
|---|---|---|
staleness | El código fuente guardado cambió después del análisis, o se ejecutó o falló una actualización automática | Guarde los archivos y actualice si la respuesta no está actualizada |
incompleteProjects o verdict: "inconclusive" | Las referencias de proyecto no pudieron resolverse lo suficientemente bien para un grafo semántico completo | Restaure o compile, luego llame a refresh_session(force: true) |
totalFound y truncated | Existen más coincidencias de las que se devolvieron | Reduzca el alcance, pagine o aumente el límite documentado |
| Manifiesto del paquete o nota de omisión inicial | Un presupuesto de tokens eliminó tipos circundantes, pruebas o implementaciones hermanas | Aumente el presupuesto o solicite el eje faltante explícitamente |
mergedNamesakes, ambigüedad o múltiples candidatos | Un nombre no se resolvió a un símbolo único | Repita la consulta con un nombre de símbolo calificado |
confidence, procedencia, marcadores dinámicos o desconocidos | Un valor es medido, proporcionado por el autor, inferido o no conocible estáticamente | Conserve la incertidumbre y verifique la configuración de tiempo de ejecución relevante cuando sea necesario |
origin: "Recalled" o lineNumbersAvailable: false | La respuesta provino de memoria persistida en lugar de un espacio de trabajo de Roslyn en vivo | Use refresh_remembered antes de confiar en detalles solo en vivo |
El perfil MCP controla la actualización automática. Off solo revela desviación,
Reactive actualiza antes de que una herramienta de lectura responda y es la configuración
normal enviada, mientras que Proactive inicia el análisis después de que las ediciones
guardadas se asienten. La actualización automática nunca ve buffers de editor sin guardar. La
desactualización también es diferente de la incompletitud de referencias: la primera necesita una
actualización; la segunda normalmente necesita una restauración o compilación seguida de una
actualización forzada.
AICB también distingue desconocido de ausente verificado. Herramientas como
assert_absence devuelven confirmed, refuted o indeterminate en lugar de
convertir evidencia faltante en un falso negativo.
La guía de arquitectura, límites y evidencia orientada a preguntas explica qué vive en memoria, cómo funcionan la actualización y la selección de contexto, qué afirmaciones se miden y dónde se encuentra el punto de referencia de escala publicado.
Dónde ayuda
| Pregunta | Herramienta |
|---|---|
| ¿Quién llama o usa esto? | find_usages |
| ¿Cuál es el radio de explosión de un cambio? | impact_of_change |
| ¿Dónde se implementa o reemplaza esta interfaz? | find_implementations, find_overrides |
| ¿Qué pruebas ejercitan este símbolo? | find_tests_for |
| ¿Qué se inyecta aquí? | resolve_injection |
| ¿Qué código tiene efectos secundarios o llama a una API externa? | find_by_side_effects, calls_external |
| ¿Qué contexto necesita un agente para esta tarea? | explain_symbol, prepare_task, pack_for_task |
| ¿Qué tan grandes serían estas respuestas antes de extraerlas? | measure |
| ¿Dónde se usa esta propiedad o recurso en XAML/AXAML? | find_binding_usages, find_resource_usages |
| ¿Qué enlaces de marcado no se pueden resolver de manera segura? | find_unresolved_bindings |
| ¿Qué cambió entre dos estados analizados? | semantic_diff, diff_review |
| ¿Este conjunto de cambios viola una política o contrato público? | evaluate_change_set, compare_public_api |
| ¿La afirmación de que este símbolo no se usa, no se prueba o está ausente está realmente respaldada? | assert_absence, verify_claim |
| ¿Qué evidencia debería ver un revisor para estos símbolos cambiados? | review_context |
| ¿Dónde están los riesgos de concurrencia, vida útil de recursos o suscripción a eventos? | find_by_concurrency_risk, find_by_resource_leak, find_by_event_subscription |
| ¿Dónde se separaron estructuras repetidas, convenciones o documentación? | find_structural_twins, check_pattern_drift, check_doc_drift |
El perfil predeterminado expone todas las herramientas de esta tabla excepto semantic_diff, | |
diff_review, find_by_concurrency_risk, find_by_resource_leak, | |
find_structural_twins, check_pattern_drift y check_doc_drift, que requieren el | |
perfil Full Select, y compare_public_api, que es opcional (consulta | |
| Conjuntos de herramientas y habilidades de agente). |
Estas herramientas forman un mapa de capacidades más amplio en lugar de un catálogo de búsqueda plano:
| Capacidad | Ejemplos |
|---|---|
| Navegación semántica | usos, implementaciones, invalidaciones, jerarquía, DI y XAML |
| Seguridad de cambios | impacto, pruebas, diagnósticos, contexto de revisión y comparación de API pública |
| Indicadores de riesgo en tiempo de ejecución | concurrencia, recursos, eventos, llamadas externas y efectos secundarios |
| Arquitectura y consistencia | capas, ciclos, gemelos estructurales, deriva de patrones y deriva de documentación |
| Verificación | afirmaciones negativas, afirmaciones de línea base a cambios y política de conjuntos de cambios |
| Economía de contexto | empaquetado de tareas, medición, presupuestos de tokens y compresión |
La aplicación de escritorio convierte los hallazgos de calidad de código, seguridad, diseño y arquitectura en una cola de revisión accionable:
AICB es más útil para soluciones C#/.NET no triviales y preguntas semánticas que la búsqueda de texto plano no puede responder de manera confiable. Analiza C#; las relaciones seleccionadas de XAML/AXAML complementan ese grafo. Otros lenguajes de programación están fuera de alcance.
Los proyectos multi-objetivo se cargan una vez por marco de destino de forma predeterminada, mientras
que las superficies de consulta generalmente los deduplican a un proyecto lógico. Establecer
analyzePreferredTfmOnly en <Solution>.aicb.json reduce el trabajo de análisis y exportación
a la instancia más reciente del marco de destino. El inventario de símbolos sigue disponible,
pero los bordes de fan-in que existen solo en otro destino pueden desaparecer, por lo que esta es una
decisión documentada de precisión frente a costo en lugar de una optimización transparente.
Un flujo de trabajo de agente seguro
Un agente puede usar AICB sin memorizar el catálogo de herramientas:
- Llama a
server_infopara verificar la conexión y detectar desviaciones binarias o de configuración. Usalist_skillspara el mapa de capacidades completo odocs()para el manual operativo integrado. - Inicia una tarea de edición con
prepare_taskpara recopilar los símbolos nombrados, el contexto relevante, las pruebas que cubren y las implementaciones hermanas probables dentro de un presupuesto. - Antes de cambiar un símbolo que otro código nombra, llama a
impact_of_change; usafind_tests_forcuando el paquete de tareas no proporcione suficiente evidencia de pruebas. - Lee las señales de incertidumbre y completitud antes de tratar un resultado vacío como prueba. Califica los nombres de símbolos ambiguos; restaura y fuerza la actualización de proyectos incompletos.
- Realiza y guarda el cambio. Luego llama a
refresh_sessionantes deget_diagnostics. Bajo el perfil normalReactiveesto suele ser redundante, pero sigue siendo correcto en todos los modos y hace explícito el límite previsto. - Usa
review_context,evaluate_change_setoverify_claimcuando la tarea haga una afirmación de revisión o política; no infieras ausencia solo por un resultado de búsqueda corto. - Termina con los comandos reales de compilación y prueba del repositorio.
get_diagnosticsinforma diagnósticos del compilador Roslyn, no resultados de analizadores de terceros o de tiempo de ejecución.
Para varias preguntas independientes de solo lectura, batch reutiliza una sesión y devuelve una
respuesta acotada. Usa measure primero cuando el tamaño probable de la respuesta sea importante.
Análisis reproducible, CI y revisión
| Necesidad | Flujo de trabajo de AICB |
|---|---|
| Versionar las reglas de solución portátiles | Confirma <Solution>.aicb.json junto a la solución. Puede contener reglas de capas, exclusiones de espacios de nombres, definiciones de pruebas, supresiones, banderas de autoinicialización y alcance de análisis. Cada superficie consume solo los ejes documentados para ella; el sidecar contiene configuración, no resultados de análisis, sesiones, instantáneas o credenciales. Usa solution_config_status → init_solution_config → apply_solution_config; aicb init no crea este archivo. |
| Aplicar un umbral de calidad en CI | Ejecuta aicb analyze -s App.sln -o context.md --fail-on "critical>0 OR debt>120min". Una compuerta fallida devuelve el código de salida 6 y aún escribe el documento de contexto para diagnóstico. |
| Comparar un cambio en el lugar con una línea base | Llama a save_session antes de la edición, luego refresh_session y compare_with_previous; usa diff_public_contract (perfil Full Select) cuando la API pública sea el contrato que importa. |
| Revisar dos estados analizados en vivo | semantic_diff informa cambios estructurales. diff_review agrega radio de explosión, pruebas y hallazgos recién introducidos con un veredicto de política. Estas herramientas de dos sesiones requieren el perfil Full Select. |
| Reutilizar un modelo analizado entre procesos | remember_codebase lo persiste, recall_codebase lo carga sin Roslyn y refresh_remembered restaura un análisis completo en vivo cuando sea necesario. Estas tres son herramientas opcionales (AICB_MCP_TOOLS). |
| Curar contexto visualmente | La aplicación de Windows agrega un árbol de solución, selección manual de contexto, controles de detalle y tokens, vista previa/exportación de AI-Builder-MD, instantáneas, Insights, ejecuciones de LLM y un editor de código fuente. |
La precedencia de configuración es específica del eje y la superficie. Por ejemplo, el mapeo
de capas sin interfaz gráfica puede recurrir al sidecar, mientras que la detección de pruebas sin
interfaz gráfica actualmente se resuelve desde la base de datos o reglas integradas en lugar del eje de pruebas del sidecar. La
matriz exacta está en la
guía de configuración.
Una sesión MCP en ejecución mantiene la configuración con la que se analizó; después de editar el
sidecar, inicia un nuevo análisis en lugar de asumir que refresh_session lo vuelve a leer.
Las supresiones ocultan hallazgos aceptados de las superficies de lectura que respetan supresiones, pero
solution_metrics y la compuerta de calidad CLI continúan contándolos. Una
supresión compartida es, por lo tanto, una decisión de revisión explícita, no una forma de bajar la compuerta.
Del motor semántico al espacio de trabajo con intervención humana
El servidor MCP es actualmente la superficie de integración más completa y operativamente madura de AICB. Sus 82 herramientas registradas cubren navegación semántica, impacto de cambios, inyección de dependencias, descubrimiento de pruebas, arquitectura, calidad, empaquetado de contexto, revisión y gestión de sesiones. Los perfiles exponen un conjunto predeterminado curado de 54 herramientas o el conjunto Full Select de 72 herramientas, mientras que las sesiones, las señales de obsolescencia y las respuestas acotadas hacen que la superficie sea práctica para agentes de codificación. Estos números describen la superficie de producto disponible; no son un punto de referencia publicado de calidad de resultados de agentes.
El perfil MCP activo también selecciona facetas orientadas a tareas: cada faceta conecta la guía
del agente, una ranura de plantilla de contexto y el subconjunto de herramientas correspondiente. list_skills
es la fuente de verdad en tiempo de ejecución sobre qué herramientas están expuestas, cuáles son invocables y
qué herramientas registradas adicionales están fuera del grupo activo.
La aplicación de Windows complementa esa superficie orientada al agente con un espacio de trabajo visual para personas: navegación de soluciones, selección manual de contexto, controles de detalle y tokens, vista previa y exportación de AI-Builder-MD, instantáneas, Insights, configuración reutilizable y ejecuciones manuales de LLM.
Perfiles de análisis de calidad y específicos de solución
Un Perfil de calidad controla qué productores de información se ejecutan y los umbrales que usan, como longitud de método, complejidad ciclomática y tamaño de clase. No define por sí mismo la severidad de los hallazgos ni la compuerta de calidad CLI.
Cada solución también tiene tres ejes de análisis independientes:
| Eje | Pregunta que responde | Qué controla |
|---|---|---|
| Perfil de capas | ¿Dónde pertenece arquitectónicamente este código? | Mapeos ordenados de patrón de espacio de nombres a capa para capas como Dominio, Aplicación e Infraestructura. La primera regla coincidente gana. El perfil también determina si una violación de capa cruzada detectada es Advisory (advertencia) o Strict (crítica). |
| Excluir espacios de nombres | ¿Qué debería permanecer fuera del análisis? | Patrones de espacios de nombres nombrados omitidos por el analizador, usando coincidencia Contains, StartsWith, EndsWith o Exact. Esto mantiene las dependencias configuradas de framework o proveedor fuera de dominar el grafo semántico; los ajustes preestablecidos incluidos cubren el BCL y SAP Business One. |
| Perfil de pruebas | ¿Qué cuenta como código de prueba? | Reglas de nombres de proyectos más marcadores de atributos de métodos. Los perfiles integrados reconocen convenciones de xUnit, NUnit y MSTest, y las herramientas centradas en producción pueden excluir el código de prueba detectado de forma predeterminada. |
La aplicación de escritorio presenta estos tres selectores lado a lado para la solución seleccionada. Las páginas de Configuración son los editores de biblioteca; los selectores del Espacio de trabajo eligen qué entrada de biblioteca se aplica a esta solución en particular. Una elección por solución gana sobre el valor predeterminado global.
Inicializar los tres ejes
Para una solución recién registrada, las tres banderas de autoinicialización comienzan habilitadas. La próxima vez que el Context Builder de escritorio la cargue, AICB intenta cada eje aún no configurado. Si un sidecar ya cubre un eje, la GUI ofrece restaurarlo sin una llamada de modelo. De lo contrario, con un perfil de modelo predeterminado utilizable, una solicitud de LLM propone reglas de capas y exclusiones de listas de espacios de nombres declarados y referenciados; la detección de pruebas se deriva localmente de los proyectos analizados y los atributos de prueba. El diálogo de confirmación decide si se aplica la propuesta: la solicitud de LLM ya ha ocurrido en ese punto. Un perfil de modelo faltante, ninguna prueba detectada o rechazar la propuesta puede dejar un eje sin configurar. Las elecciones existentes nunca se sobrescriben.
La autoinicialización exitosa de la GUI almacena los perfiles elegidos en la base de datos local.
No crea <SolutionName>.aicb.json automáticamente. Usa Espacio de trabajo → Perfiles → Exportar configuración para escribir ese sidecar portátil y luego confírmalo. Una GUI
posterior puede restaurar los ejes compatibles desde él sin una llamada de LLM; los consumidores sin
interfaz gráfica aplican las reglas por eje descritas en la matriz de configuración. Initialize Now realiza
solo una restauración inmediata del sidecar: no llama a un modelo ni analiza la solución.
Un agente puede guiar la misma configuración explícitamente:
solution_config_statusinforma qué ejes están inicializados y si sus valores activos provienen de la base de datos local, el sidecar o ninguno.init_solution_configdevuelve material de propuesta: espacios de nombres declarados para el mapa de capas, espacios de nombres referenciados para exclusiones y proyectos de prueba detectados y atributos para el perfil de pruebas.- Después de revisar o adaptar esa propuesta,
apply_solution_configcrea y activa las entradas personalizadas, marca los ejes como inicializados y escribe tanto la base de datos de configuración local como<SolutionName>.aicb.jsonjunto a la solución. - Confirma el sidecar para que la configuración de solución portátil viaje con el
repositorio. Cada consumidor aplica los ejes compatibles descritos anteriormente; no
asumas que cada superficie resuelve cada campo de manera idéntica. Más tarde,
check_solution_config_driftinforma espacios de nombres o proyectos de prueba que ya no están cubiertos por esa configuración.
aicb init es una operación diferente: conecta un repositorio al servidor MCP
e instala la habilidad de agente y el guardián de símbolos opcional. No inicializa
estos tres ejes de solución ni crea <SolutionName>.aicb.json.
Consulta perfiles y configuración de solución para conocer la precedencia, el esquema del sidecar y el comportamiento completo de inicialización.
Plantillas de contexto y plantillas de ejecución
Los dos tipos de plantillas tienen diferentes responsabilidades:
| Tipo de plantilla | Propósito |
|---|---|
Plantilla de contexto (Templates) | Define qué entra en una exportación: prompt, perfil de Markdown, ajustes preestablecidos de detalle, estrategias de expansión, compresión, ajustes de calidad y interruptores de exportación |
Plantilla de ejecución (Run Templates) | Define cómo se ejecuta una tarea: tipo de ejecución, plantilla de contexto seleccionada, valores predeterminados de modelo y opciones específicas de ejecución |
Los ajustes preestablecidos de detalle, los perfiles de Markdown, las estrategias de expansión, las reglas de compresión, los perfiles de canalización y los perfiles de calidad son bloques de construcción reutilizables a los que hace referencia una plantilla de contexto; una plantilla de ejecución selecciona esa plantilla de contexto.
Dirección del producto, no un compromiso de lanzamiento
La dirección para la aplicación de escritorio es un espacio de orquestación orientado a humanos: un desarrollador selecciona y restringe el contexto, inspecciona resultados intermedios, aprueba decisiones y controla qué ejecuta a continuación un modelo de IA. Manual es el tipo de ejecución publicado hoy. Iteration está pensado para procesar nodos seleccionados uno por uno, y Preselection para permitir que un modelo reduzca el contexto relevante antes de la ejecución principal; ambos están representados en la aplicación pero aún no se han publicado. Pipeline actualmente existe solo como marcador de posición en el modelo de datos y no ejecuta nada.
Instalación
Instala una forma por máquina:
| Lo que quieres | Instalación | Plataforma |
|---|---|---|
| Servidor MCP y CLI | Herramienta global .NET aicb-roslyn-mcp | Windows, Linux, macOS |
| Aplicación de escritorio más el mismo servidor MCP y CLI | Instalador de Windows o ZIP portátil | Windows |
La herramienta .NET necesita el SDK de .NET 8. Sin .NET 8, se ejecuta en la siguiente versión más reciente de .NET en la máquina y necesita el SDK de esa versión, por lo que solo el SDK de .NET 10 funciona:
dotnet tool install -g aicb-roslyn-mcp
aicb --version
Hasta la versión 0.5.465.1, el paquete se llamaba AIContextBuilder. Una actualización no cruza ese cambio de nombre: elimina primero el paquete antiguo y luego instala el nuevo como se indicó anteriormente.
dotnet tool uninstall -g AIContextBuilder
Actualízalo más tarde con dotnet tool update -g aicb-roslyn-mcp. Para un contenedor, el Dockerfile del repositorio instala la misma herramienta .NET y sirve MCP a través de stdio.
Si la herramienta informa que MSBuild no pudo registrarse, el .NET en el que se ejecuta no tiene SDK propio (por ejemplo, un runtime de .NET 9 junto al SDK de .NET 10): instala el SDK de .NET 8 o establece la variable de entorno DOTNET_ROLL_FORWARD=LatestMajor para que use el .NET más reciente.
Las descargas de Windows son autocontenidas, pero analizar una solución aún requiere MSBuild de un SDK de .NET o Visual Studio. El instalador aún no está firmado con código, por lo que Windows SmartScreen muestra una advertencia; cada versión proporciona sumas de verificación SHA-256.
Conectar un agente de codificación
Ejecuta esto desde el proyecto en el que quieres que trabaje el agente:
aicb init
Escribe .mcp.json, la configuración de MCP que lee Claude Code (otros clientes necesitan el paso manual mencionado a continuación), y la habilidad de agente aicb-csharp-context en .claude/skills/, sin sobrescribir archivos existentes. Si detecta configuración de proyecto de Claude Code, Codex u OpenCode, también instala un guardia de símbolos que bloquea las búsquedas de símbolos de C# mediante grep y redirige al agente a la herramienta semántica. Esto cambia intencionalmente el comportamiento del agente. Opta por no participar con:
aicb init --hooks none
Estado específico del cliente:
| Cliente | Configuración de MCP | Habilidad y guardia |
|---|---|---|
| Claude Code | .mcp.json escrito por aicb init | Habilidad y guardia opcional instalados |
| Codex | Agrega aicb mcp a través de la configuración de MCP del cliente | Guardia opcional compatible; la ubicación de la habilidad no se adivina |
| OpenCode | Agrega aicb mcp a opencode.json | Guardia opcional compatible; la ubicación de la habilidad no se adivina |
| Cursor / Cline / otros clientes stdio | Agrega el comando aicb con el argumento mcp | Usa la habilidad publicada si el cliente admite Agent Skills |
Configuración manual de .mcp.json para clientes que la leen:
{
"mcpServers": {
"aicb": {
"command": "aicb",
"args": ["mcp"]
}
}
}
Verifica la conexión pidiendo al cliente que llame a server_info. Cada herramienta de análisis acepta una ruta absoluta de .sln, .slnx o .slnf como su sesión, por lo que no se requiere un paso de análisis separado. Consulta la guía de cinco minutos para la configuración, las primeras preguntas y la resolución de problemas.
Conjuntos de herramientas y Agent Skills
| Conjunto | Tamaño | Propósito |
|---|---|---|
| Perfil MCP predeterminado | 54 herramientas | Herramientas semánticas y estructurales seleccionadas para el trabajo normal del agente |
| Perfil Full Select | 72 herramientas | Conjunto predeterminado más la cola larga medida |
| Superficie completa del servidor | 82 herramientas | Full Select más las herramientas opcionales de memoria de sesión, base de datos y comparación de API |
Inicia el perfil Full Select con aicb mcp --mcp-profile mcp-profile/full. Establece AICB_MCP_TOOLS=all para agregar también las herramientas opcionales. La referencia de herramientas generada documenta el conjunto predeterminado; el manual del servidor MCP documenta las 82 herramientas y sus parámetros, y junto a ellas sesiones y obsolescencia, perfiles, pools y facetas, y lo que escribe aicb init: doce capítulos en Markdown, legibles en el navegador y por un agente, y también publicados como PDF.
Los tres recuentos publicados son puntos de partida, no ediciones fijas. En el editor MCP Profiles del escritorio puedes crear o duplicar un perfil, habilitar solo las facetas de tareas que desees y seleccionar herramientas individuales de núcleo y faceta. Cada herramienta de núcleo se puede eliminar excepto el diagnóstico bloqueado server_info, por lo que incluso un tools/list muy pequeño específico de una tarea es posible. El preámbulo fijo del servidor es orientación permanente del agente, no otro grupo de herramientas seleccionable. Para configuración sin interfaz, AICB_MCP_TOOLS=methods:<tool>,<tool>,... expone exactamente las funciones nombradas; también se admiten listas de clases, lean y all. Los cambios de perfil y entorno surten efecto en el próximo inicio del servidor. list_skills muestra las herramientas resultantes dentro y fuera del pool. Consulta perfiles, pools y facetas.
Cuatro Agent Skills se incluyen en skills/:
aicb-csharp-contextenruta preguntas semánticas de C# a la herramienta correcta.aicb-code-reviewverifica un cambio completado para detectar corrección.aicb-code-simplifierbusca complejidad innecesaria.aicb-usage-checkinforma para qué se utilizó realmente este servidor.
Las últimas tres son opcionales: aicb init --skills=all.
Escala, versiones y compatibilidad
AICB no tiene un límite de recuento de proyectos publicado y duro. El costo inicial y la memoria máxima son específicos de la solución y crecen con los proyectos cargados, documentos, instancias de marco de destino y densidad del grafo. El primer análisis puede tomar de segundos a minutos; las preguntas posteriores reutilizan el grafo cálido, y las ediciones de fuente guardadas elegibles usan la ruta de actualización incremental. Para un repositorio muy grande, usa un .slnf para reducir lo que carga MSBuild y opcionalmente establece analyzePreferredTfmOnly para evitar analizar cada instancia de marco de destino. summaryOnly, los ámbitos de consulta y los presupuestos de tokens reducen el volumen de respuesta; no necesariamente reducen el análisis de solución subyacente. El load-perf.log del escritorio y el usage_report de MCP proporcionan mediciones locales de fase y latencia. Un punto de referencia estandarizado de tiempo frío/caliente y RAM en tres soluciones .NET públicas (≈ 25k, ≈ 55k y ≈ 1.8M líneas de C#) se publica en la guía de arquitectura y evidencia; estos controles aún no son una afirmación universal de rendimiento, pero ahora hay un límite medido.
Las versiones públicas actualmente no tienen una ventana LTS declarada, SLA de tiempo de respuesta ni promesa de que cada respuesta de MCP y esquema persistido permanezca sin cambios entre versiones. Las salvaguardas operativas son explícitas en su lugar: el changelog registra versiones; server_info informa versión, compilación y desviación de configuración; los análisis persistidos llevan identidades de esquema de carga útil y analizador y recurren a un análisis en vivo cuando son incompatibles; y el escritorio se niega a escribir una base de datos creada por un esquema más nuevo. Las migraciones de base de datos pueden ser unidireccionales, por lo que una reversión confiable significa hacer una copia de seguridad antes de una actualización y usar la compilación anterior con una base de datos previa a la migración separada o restaurada. Los acuerdos comerciales pueden definir compromisos más sólidos de soporte, tiempo de respuesta y mantenimiento de versiones cuando sea necesario; consulta Soporte.
CLI de un vistazo
aicb init Connect a project to the MCP server and install the agent skill.
aicb analyze Analyze a solution and emit context Markdown.
aicb export Re-render Markdown from an existing session database.
aicb import Import a constellation JSON.
aicb list List built-in and custom profiles and presets.
aicb mcp Start the stdio MCP server.
aicb call Invoke one MCP tool without an MCP client.
Ejecuta aicb <command> --help para ver las opciones.
Local por defecto
- El CLI y el servidor MCP no tienen capacidad de red saliente y no modifican el código fuente que analizan.
- No hay telemetría saliente, análisis, verificación de actualizaciones, cuenta ni servidor de licencias. El servidor MCP registra sus llamadas de herramientas localmente para
usage_reporty la página MCP Usage de la aplicación de escritorio; ese registro nunca sale de la máquina. - La aplicación de escritorio solo puede contactar un endpoint de LLM que configures: para una ejecución manual, una prueba de conexión de perfil de modelo, o propuestas de primera carga para Layer Profile y Exclude Namespaces cuando esos indicadores de autoinicialización están armados. El endpoint puede ser un modelo local. La pestaña Details también es un editor real y guarda un archivo solo cuando usas explícitamente Save.
- Abrir una solución ejecuta su lógica de MSBuild para resolver referencias, y compilar su compilación ejecuta los generadores de código fuente que sus proyectos referencian, como en un IDE o
dotnet build. Analiza solo soluciones en las que confíes. AICB no ejecuta analizadores Roslyn de terceros.
Un pequeño número de herramientas explícitamente nombradas puede escribir configuración o una exportación; sus descripciones de herramientas lo indican. El modelo de amenazas completo y la ruta de informes privados están en SECURITY.md.
Licencia de un vistazo
El uso es gratuito para:
- uso privado, hobby y educativo por personas naturales,
- instituciones educativas acreditadas para enseñanza, aprendizaje e investigación no comercial,
- organizaciones que no alcanzan ninguno de estos umbrales: 100 empleados, EUR 10 millones de facturación anual, 21 desarrolladores.
Los umbrales se aplican a tu organización, no a tus clientes. Después de alcanzar por primera vez cualquier umbral, tienes 90 días para acordar una licencia comercial; el uso sigue siendo gratuito durante ese período. Los 90 días son solo texto contractual: AICB no inicia un temporizador de licencia, no envía datos de umbral o fecha límite, no bloquea ninguna función y no deja de funcionar técnicamente cuando termina el período. Las licencias comerciales comienzan en EUR 25 por desarrollador licenciado por mes; el precio exacto y el alcance dependen del número de usuarios, el nivel de soporte solicitado y cualquier prioridad acordada para solicitudes de mejora. Un acuerdo comercial puede incluir soporte, compromisos definidos de respuesta o mantenimiento, consideración priorizada o implementación de mejoras, por ejemplo, hacer que un analizador generalmente útil maneje patrones encontrados en el código del cliente con mayor precisión. Dicho trabajo mejora el producto general de AICB; no crea un fork específico del cliente ni especializa AICB a un solo código base. El código del cliente nunca se recopila ni se usa para mejoras automáticamente; examinarlo requiere material o acceso proporcionado deliberadamente por el cliente y un acuerdo separado sobre alcance y confidencialidad. Los entregables exactos, prioridades y garantías existen solo cuando se escriben en el acuerdo individual. Conectar AICB a clientes MCP, marcos de agentes, scripts, sistemas de compilación y CI a través de sus interfaces documentadas está permitido. Redistribuir, modificar, reempaquetar, revender u ofrecer los binarios de AICB como un servicio alojado no lo está. Contacta a aicb@dadera.de. Consulta la guía en lenguaje sencillo, LICENSE.txt y el EULA.md bilingüe completo.
Soporte y desarrollo continuo
AICB está en desarrollo activo: el changelog registra cada versión, y las versiones publicadas aparecen en la página Releases.
El soporte sigue la licencia:
| Gratuito | Acuerdo comercial | |
|---|---|---|
| Quién | Todos por debajo de los umbrales | Organizaciones en o por encima de un umbral, o cualquier persona que quiera términos más sólidos |
| Canal | GitHub Discussions, Issues | Contacto directo más los canales públicos |
| Objetivo de respuesta | Mejor esfuerzo | ≤ 2 días hábiles |
| Correcciones de seguridad | Enviadas a través de versiones públicas | Objetivo de corrección ≤ 10 días hábiles para vulnerabilidades confirmadas |
| Mantenimiento de versiones | Versión actual | Ventana de mantenimiento acordada individualmente |
| Solicitudes de mejora | Impulsadas por la comunidad | Consideración priorizada; las prioridades acordadas se escriben en el contrato |
| Acceso al código fuente | Ninguno | Se puede acordar revisión de código bajo NDA |
Los objetivos en esta tabla son valores típicos que un acuerdo individual puede incluir; solo son vinculantes cuando se escriben en el acuerdo, y el pago solo no crea un SLA no declarado. Los precios están en Licencia de un vistazo. Contacta a aicb@dadera.de.
Las preguntas y solicitudes de funciones son bienvenidas en
GitHub Discussions. Reporta errores
a través de GitHub Issues e incluye
aicb --version y, para problemas de MCP, la salida de server_info. Reporta problemas de
seguridad de forma privada como se describe en SECURITY.md.
Documentación
- Primeros pasos - instalar, conectar y hacer la primera pregunta
- Referencia de herramientas - referencia generada para el perfil MCP predeterminado
- Arquitectura, límites y evidencia - modelo en memoria, actualización, selección de contexto, límites de análisis estático y estado de referencia
- Manual del servidor MCP - la referencia completa en doce capítulos Markdown: conexión de un cliente,
aicb init, sesiones y obsolescencia, perfiles y facetas, cada herramienta, solución de problemas - Manual de referencia general - la referencia completa en doce capítulos Markdown, con el PDF imprimible en la misma carpeta
- Manual de referencia de la aplicación de escritorio - la referencia completa en once capítulos Markdown, con el PDF imprimible en la misma carpeta
- Registro de cambios y última versión
"AIContextBuilder" y "AIContextBuilder for .NET" son nombres de productos utilizados por Gregor Dadera; no se reclama registro alguno.





