TuBrief
구독 채널
비디오
커뮤니티

Wie man Verzeichnisstrukturen bereinigt, damit KI-Agenten in riesigen Monolithen nicht den falschen Code anfassen

TuBrief 편집팀
2026년 8월 21일
0
Computing/Software

원본 영상을 바탕으로 AI의 도움을 받아 작성했습니다. 원본 영상이 기준입니다.

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

관련 영상

Große Projekte scheitern immer... Anthropic behebt das14:08

Große Projekte scheitern immer... Anthropic behebt das

AI LABS

커뮤니티의 다른 글

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

2026년 9월 13일

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

2026년 9월 13일

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

2026년 9월 13일

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

2026년 9월 13일

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

2026년 9월 12일

Apple Won the AI Race

2026년 9월 12일

댓글 (0)

Log in to leave a comment

아직 작성된 글이 없습니다

© 2026 . All rights reserved.

TuBrief
구독 채널
비디오
커뮤니티
로그인

Wie man Verzeichnisstrukturen bereinigt, damit KI-Agenten in riesigen Monolithen nicht den falschen Code anfassen

Wenn man Claude Code oder Aider an ein Repository mit Hunderttausenden von Zeilen Code anbindet, fangen sie an, in den falschen Dateien zu lesen. Das Kontextfenster des Modells ist begrenzt, aber durch das Zusammenkratzen irrelevanter Dateien wird das Token-Limit gesprengt und am Ende wird der falsche Code modifiziert.

Dieses Problem lässt sich nicht durch längere Prompts lösen. Man muss den physischen Suchradius des Codes, den der Agent durchsucht, verkleinern und mechanische Prüfregeln lokal verankern.

1. Trennung von Verzeichnissen, die zirkuläre Abhängigkeiten verursachen

In einem Monolith-Repository gibt es meist drei Punkte, an denen Agenten in endlose Suchschleifen geraten: der gemeinsame Hilfsfunktionen-Ordner (src/utils/), die Service-Schicht, in der sich die Geschäftslogik verstrickt (src/services/), und das globale Modell-Verzeichnis (src/models/). Wenn diese drei Ordner anfangen, sich gegenseitig zu referenzieren, liest der Agent Dutzende von Dateien, nur um eine einzige Zeile Code zu korrigieren.

Wenn man nach technischer Schicht aufgeteilte Ordner stattdessen nach Domänen bündelt und isoliert, verringert sich der Suchbereich.

Unterscheidung Schichtenbasierte Struktur Domänengetrennte Struktur Veränderung des Agentenverhaltens
Ordnerkriterium Trennung nach technischer Schicht (/controllers, /services) Trennung nach Domäne (/domains/order) Sucht nur notwendige Dateien innerhalb eines Ordners
Abhängigkeitsverbindung Direktes Importieren globaler Entitäten Kommunikation über Domänen-Schnittstellengrenzen Blockiert das kettenartige Laden irrelevanter Dateien
Gemeinsame Logik Funktionen vermischt in einem einzigen src/utils/ Aufteilung in domänenspezifische Utils und gemeinsame Pakete Verhindert unnötige globale Kontextverschmutzung

Die Reihenfolge beim Verschieben von Verzeichnissen, damit der laufende Service nicht unterbrochen wird, sieht wie folgt aus:

  1. Identifizieren Sie die übermäßig aufgerufenen Abhängigkeitsbeziehungen des Agenten und bestimmen Sie die zu trennende Domäne.
  2. Erstellen Sie Schnittstellen für die Servicegrenzen, um direkte Verweise zwischen Domänen zu unterbrechen.
  3. Verschieben Sie die relevante Geschäftslogik in den Ordner src/domains/{Domänenname}/ und aktualisieren Sie die Pfadaliase in der tsconfig.json.
  4. Fügen Sie im getrennten Unterverzeichnis eine domänenspezifische Konfigurationsdatei (CLAUDE.md) hinzu.

2. Umwandlung vager natürlichsprachlicher Regeln in numerische Einschränkungen

Ausführlich in natürlicher Sprache verfasste Coding-Conventions werden vom Agenten leicht übersehen. Klare Zahlenwerte und Verbote müssen am Anfang der Konfigurationsdatei platziert werden, damit die Richtlinien exakt eingehalten werden.

`markdown

Projektbeschränkungen (am Anfang von CLAUDE.md platziert)

  1. Sicherheit und Fehlerbehandlung
  • 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. Numerische Einschränkungen der Codestruktur
  • 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.

`

Wenn eine Konfigurationsdatei 200 Zeilen überschreitet, werden Anweisungen am Ende häufiger übersehen.

  • In der CLAUDE.md des Stammverzeichnisses sollten nur Build-Befehle und globale Commit-Regeln auf unter 200 Zeilen gehalten werden.
  • Regeln für Unterordner wie src/domains/order/ werden auf dedizierte Regelfunktionen innerhalb dieses Verzeichnisses verteilt.
  • Persönliche Entwicklereinstellungen werden in CLAUDE.local.md eingetragen und in der .gitignore registriert, um Konflikte zu vermeiden.

3. Automatische Überprüfung von Agenten-Änderungen durch lokale Hooks

Syntaxfehler oder Regressionsbugs in vom Agenten generiertem Code sollten zum Zeitpunkt des Commits automatisch abgefangen werden. Mit Lefthook, das als einzelnes Go-Binary arbeitet, lassen sich parallele Prüfungen leichter als mit Node.js-basierten Tools ausführen.

Platzieren Sie eine lefthook.yml im Stammverzeichnis und trennen Sie leichte statische Prüfungen von schweren Testphasen.

`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

`

Der pre-commit-Schritt prüft nur die gestagten Dateien in weniger als 10 Sekunden, während vollständige Typüberprüfungen und Unit-Tests an die pre-push-Phase übergeben werden.

Um zu verhindern, dass der Agent die Option --no-verify verwendet, um den Hook zu umgehen, registrieren Sie den 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);

`

Wenn ein Hook fehlschlägt, fließt die Konsolenfehlerausgabe in den nächsten Prompt ein, sodass der Agent den Code eigenständig korrigiert.

4. Verhinderung von Token-Verschwendung durch Einschränkung des Suchbereichs

Wenn der Agent beginnt, Build-Ergebnisse oder Lock-Dateien zu lesen, sind die Tokens schnell aufgebraucht. Der Dateisuchbereich muss eingeschränkt werden, um unbeabsichtigte Kosten zu verhindern.

Erstellen Sie eine .ignore oder .aiderignore im Projektstammverzeichnis und registrieren Sie große Artefakte.

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

`

Geben Sie auch bei der Ausführung im Terminal das zu bearbeitende Verzeichnis explizit an, um globale Scans zu blockieren.

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

`

Indem Sie vor der Code-Modifikation in den Planungsmodus wechseln, um Änderungen vorab zu prüfen, fehlschlagende Unit-Tests schreiben und erst danach den passenden Code erstellen lassen, bleibt der Arbeitsradius des Agenten sicher.