TuBrief
Subscribed Channels
Videos
Community

Cómo organizar directorios para evitar que los agentes de IA toquen código incorrecto en monolitos masivos

TuBrief Editorial
August 21, 2026
0
Computing/Software

Written with AI assistance from the source video. The video is the authority.

Español한국어English中文العربيةहिन्दीDeutschFrançaisPortuguêsРусскийBahasa Indonesia日本語

Related Video

Los grandes proyectos siempre fallan... Anthropic está solucionando eso14:08

Los grandes proyectos siempre fallan... Anthropic está solucionando eso

AI LABS

More from the community

사내 시스템에 llm api 붙일 때 마주하는 현실적인 한계와 대응법

September 13, 2026

레거시 백엔드에 GPT-6 Astra 붙일 때 예산 승인과 보안 통과를 먼저 끝내는 법이 있습니다

September 13, 2026

에이전트끼리 대화하다 6천만 원 청구서가 나오는 이유

September 13, 2026

사내 RAG 벡터 검색에 Okta 권한 필터를 직접 거는 방법

September 13, 2026

브라우저 에이전트에게 내 구글 계정을 통째로 넘기면 안 되는 이유

September 12, 2026

Apple Won the AI Race

September 12, 2026

Comments (0)

Log in to leave a comment

No posts yet

© 2026 . All rights reserved.

TuBrief
Subscribed Channels
Videos
Community
Log in

Cómo organizar directorios para evitar que los agentes de IA toquen código incorrecto en monolitos masivos

Cuando conectas Claude Code o Aider a un repositorio monolítico de cientos de miles de líneas, este empieza a leer archivos equivocados desde el principio. La ventana de contexto del modelo es limitada, por lo que al recopilar archivos irrelevantes agota el límite de tokens y termina modificando el código equivocado.

Este problema no se resuelve escribiendo un prompt largo. Debes reducir el radio físico del código que el agente explora e implantar reglas de verificación mecánica a nivel local.

1. Separar los directorios que causan referencias circulares

En un repositorio monolítico, los puntos donde el agente cae en una exploración infinita suelen ser tres: la carpeta de utilidades comunes con funciones auxiliares dispersas (src/utils/), la capa de servicios con lógica de negocio entrelazada (src/services/) y el directorio de modelos globales (src/models/). Si estas tres carpetas comienzan a referenciarse entre sí, el agente termina leyendo docenas de archivos solo para corregir una sola línea de código.

Agrupar las carpetas divididas por capas técnicas en unidades de dominio ayuda a aislar y reducir el alcance de la búsqueda.

Categoría Estructura centrada en capas Estructura de dominios separados Cambio en el comportamiento del agente
Criterio de carpetas Separación por capas técnicas (/controllers, /services) Separación por dominios (/domains/order) Busca únicamente los archivos necesarios dentro de una sola carpeta
Conexión de dependencias Importación directa de entidades globales Comunicación mediante límites de interfaz de dominio Bloquea la carga en cadena de archivos irrelevantes
Lógica común Funciones mezcladas en un src/utils/ único Separación en utilidades exclusivas del dominio y paquetes comunes Previene la contaminación innecesaria del contexto global

El orden para mover los directorios sin detener el servicio en ejecución es el siguiente:

  1. Identifica las relaciones de dependencia que el agente llama en exceso para determinar el dominio a separar.
  2. Crea interfaces de límite de servicio para cortar las referencias directas entre dominios.
  3. Traslada la lógica de negocio relacionada a la carpeta src/domains/{nombre-dominio}/ y actualiza los alias de ruta en tsconfig.json.
  4. Coloca un archivo de configuración exclusivo para ese dominio (CLAUDE.md) dentro del subdirectorio separado.

2. Cambiar reglas de lenguaje natural ambiguas por restricciones numéricas

Las convenciones de código escritas extensamente en lenguaje natural son pasadas por alto fácilmente por el agente. Es necesario colocar números claros y prohibiciones en la parte superior del archivo de configuración para que sigan las directrices con precisión.

`markdown

Restricciones del proyecto (ubicadas en la parte superior de CLAUDE.md)

  1. Seguridad y manejo de excepciones
  • NEVER allow raw SQL string concatenation. ALWAYS use parameterized queries with ORM.
  • NEVER throw generic Exception or Error. ALWAYS throw domain-specific exceptions inheriting from BaseDomainException.
  • ALWAYS enforce tenant_id filtering in all database queries under src/domains/.
  1. Restricciones numéricas de la estructura de código
  • Functions MUST NOT exceed 40 lines of code.
  • Cyclomatic complexity MUST be kept under 8 per function.
  • ALWAYS return Result<T, E> pattern for business layer operations instead of null.

`

Si el archivo de configuración supera las 200 líneas, es común que se pasen por alto las instrucciones posteriores.

  • En el CLAUDE.md del directorio raíz, mantén solo los comandos de compilación y las reglas de confirmación globales en menos de 200 líneas.
  • Distribuye las reglas de carpetas secundarias, como src/domains/order/, en archivos de reglas dedicados dentro de esos mismos directorios.
  • Escribe las configuraciones personales del desarrollador en CLAUDE.local.md y regístralas en .gitignore para evitar conflictos.

3. Verificación automática del código modificado por el agente mediante ganchos locales

Los errores de sintaxis o de regresión en el código creado por el agente deben detectarse automáticamente al momento de realizar el commit. Utilizar Lefthook, que funciona como un binario único de Go, permite ejecutar comprobaciones en paralelo de manera más ligera que las herramientas basadas en Node.js.

Coloca lefthook.yml en la raíz para separar las comprobaciones estáticas ligeras de las fases de pruebas pesadas.

`yaml
pre-commit:
parallel: true
commands:
linter:
glob: ".{ts,tsx}"
run: npx eslint --fix {staged_files}
stage_fixed: true
formatter:
glob: "
.{ts,tsx,json,md}"
run: npx prettier --write {staged_files}
stage_fixed: true
security-scan:
run: gitleaks git --staged --no-banner

pre-push:
parallel: false
commands:
typecheck:
run: npx tsc --noEmit
unit-tests:
run: npm run test:unit -- --passWithNoTests

`

El pre-commit de la fase de confirmación verifica únicamente los archivos en área de preparación (staged) en menos de 10 segundos, mientras que la verificación completa de tipos y las pruebas unitarias se trasladan a la fase de push (pre-push).

Para evitar que el agente use la opción --no-verify y evada los ganchos, registra el interceptor .claude/hooks/block-no-verify.mjs.

`javascript
import fs from 'fs';

const input = fs.readFileSync(0, 'utf8');
const parsed = JSON.parse(input);

if (parsed.tool_input?.command?.includes('--no-verify')) {
console.error("Policy Violation: --no-verify flag is strictly prohibited.");
process.exit(1);
}
process.exit(0);

`

Si un gancho falla, la salida de error de la consola se introduce en el siguiente mensaje para que el agente corrija el código por sí mismo.

4. Limitación del alcance de exploración para prevenir el desperdicio de tokens

Si el agente comienza a leer resultados de compilación o archivos de bloqueo (lockfiles), los tokens se agotan rápidamente. Es necesario cerrar el rango de búsqueda de archivos para prevenir costos imprevistos.

Crea un archivo .ignore o .aiderignore en la raíz del proyecto y registra los artefactos pesados.

`text
node_modules/
dist/
build/
coverage/
*.min.js
*.svg
*.lock
package-lock.json
public/assets/
db/migrations/

`

Especifica también el directorio de trabajo al ejecutar comandos en la terminal para bloquear el escaneo global.

`bash
aider "Refactor Order validation logic" --path=src/domains/order/ --exclude=src/domains/order/tests/

`

Verificar primero los cambios en modo de planificación antes de modificar el código, escribir pruebas unitarias fallidas y hacer que elabore únicamente código que las supere mantendrá el radio de trabajo del agente de forma segura.