TuBrief
Subscribed Channels
Videos
Community

Cara Mengorganisasi Direktori agar Agen AI Tidak Mengubah Kode yang Salah dalam Monolit yang Membesar

TuBrief Editorial
August 21, 2026
0
Computing/Software

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

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

Related Video

Proyek Besar Selalu Gagal... Anthropic Sedang Memperbaikinya14:08

Proyek Besar Selalu Gagal... Anthropic Sedang Memperbaikinya

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

Cara Mengorganisasi Direktori agar Agen AI Tidak Mengubah Kode yang Salah dalam Monolit yang Membesar

Ketika Anda menghubungkan Claude Code atau Aider ke repositori tunggal berukuran ratusan ribu baris, agen tersebut akan mulai membaca dari berkas yang salah. Jendela konteks model terbatas, namun saat mengumpulkan berkas yang tidak relevan, model akan menghabiskan batas token dan memodifikasi kode yang salah.

Masalah ini tidak dapat diselesaikan hanya dengan menulis prompt yang panjang. Anda harus memperkecil radius fisik kode yang dijelajahi oleh agen dan menanamkan aturan verifikasi mekanis secara lokal.

1. Memisahkan Direktori yang Menyebabkan Referensi Melingkar (Circular Dependency)

Titik di mana agen terjebak dalam penjelajahan tak terbatas pada repositori monolit biasanya ada di tiga tempat: folder utilitas umum tempat fungsi pembantu serabutan berkumpul (src/utils/), lapisan layanan tempat logika bisnis saling terikat (src/services/), dan direktori model global (src/models/). Ketika ketiga folder ini mulai saling merujuk, agen harus membaca puluhan berkas hanya untuk memperbaiki satu baris kode.

Dengan mengelompokkan folder yang dibagi berdasarkan lapisan teknis ke dalam unit domain untuk diisolasi, rentang penjelajahan akan berkurang.

Kategori Struktur Berpusat Lapisan Struktur Pemisahan Domain Perubahan Perilaku Agen
Kriteria Folder Pemisahan lapisan teknis (/controllers, /services) Pemisahan domain (/domains/order) Hanya mencari berkas yang diperlukan dalam satu folder
Koneksi Dependensi Impor entitas global secara langsung Berkomunikasi melalui batas antarmuka domain Mencegah fenomena pemuatan berantai hingga ke berkas yang tidak relevan
Logika Umum Fungsi tercampur dalam satu src/utils/ Dipisahkan menjadi utilitas khusus domain dan paket umum Mencegah kontaminasi konteks global yang tidak perlu

Urutan untuk memindahkan direktori tanpa menghentikan layanan yang sedang berjalan adalah sebagai berikut:

  1. Periksa hubungan dependensi yang dipanggil secara berlebihan oleh agen untuk menentukan domain yang akan dipisahkan.
  2. Buat antarmuka batas layanan untuk memutus referensi langsung antar-domain.
  3. Pindahkan logika bisnis terkait ke folder src/domains/{nama_domain}/ dan perbarui alias jalur di tsconfig.json.
  4. Masukkan berkas konfigurasi khusus domain tersebut (CLAUDE.md) di dalam subdirektori yang telah dipisahkan.

2. Mengubah Aturan Bahasa Alami yang Ambigu menjadi Batasan Numerik

Konvensi penulisan kode yang ditulis panjang lebar dalam bahasa alami sering kali dilewatkan begitu saja oleh agen. Anda harus menempatkan angka yang jelas dan hal-hal yang dilarang di bagian atas berkas konfigurasi agar instruksi dipatuhi secara akurat.

`markdown

Batasan Proyek (Ditempatkan di bagian atas CLAUDE.md)

  1. Keamanan dan Penanganan Pengecualian
  • 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. Batasan Numerik Struktur Kode
  • 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.

`

Jika berkas konfigurasi melebihi 200 baris, instruksi di bagian belakang sering kali terlewat.

  • Di CLAUDE.md pada direktori root, pertahankan perintah build dan aturan commit global di bawah 200 baris.
  • Aturan folder subdirektori seperti src/domains/order/ disebar ke berkas aturan khusus di dalam direktori tersebut.
  • Tulis pengaturan pribadi pengembang di CLAUDE.local.md dan daftarkan ke .gitignore untuk mencegah konflik.

3. Memverifikasi Kode Modifikasi Agen Secara Otomatis dengan Hook Lokal

Kesalahan sintaks atau bug regresi dari kode yang dibuat oleh agen harus ditangkap secara otomatis pada tahap commit. Menggunakan Lefthook yang beroperasi dengan biner tunggal Go memungkinkan Anda menjalankan pemeriksaan paralel yang lebih ringan daripada alat berbasis Node.js.

Letakkan lefthook.yml di root untuk memisahkan pemeriksaan statis yang ringan dan tahap pengujian yang berat.

`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

`

pre-commit pada tahap commit hanya memeriksa berkas yang di-stage dalam waktu 10 detik, sementara pemeriksaan tipe keseluruhan dan pengujian unit dialihkan ke tahap push yaitu pre-push.

Daftarkan interseptor .claude/hooks/block-no-verify.mjs agar agen tidak dapat melewati hook dengan menggunakan opsi --no-verify.

`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);

`

Jika hook gagal, output error konsol akan masuk ke prompt berikutnya sehingga agen dapat memperbaiki kodenya sendiri.

4. Mencegah Pemborosan Token dengan Membatasi Cakupan Penjelajahan

Jika agen mulai membaca hasil build atau berkas lock, token akan cepat terkuras. Anda dapat mencegah timbulnya biaya yang tidak disengaja dengan menutup rentang penjelajahan berkas.

Buat .ignore atau .aiderignore di root proyek dan daftarkan artefak berukuran besar.

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

`

Saat menjalankan perintah di terminal, tentukan direktori kerja untuk memblokir pemindaian global.

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

`

Sebelum memodifikasi kode, pastikan untuk memeriksa perubahan dalam mode perencanaan (plan mode), menulis pengujian unit yang gagal terlebih dahulu, lalu membuat kode yang lolos pengujian tersebut agar radius kerja agen tetap aman.