Matriks Tata Kelola LLM — Mengapa Keamanan AI Anda Dimulai dari Pohon
Diterbitkan 04 May 2026
- Masalah: Prompt Engineering adalah sebuah benteng pasir
- Jawaban saya: matriks 4×4
- Bagaimana LLM Mengkonsumsi Matriks Ini
- Implementasi : Tugas Gradle yang Bertipe
- Mengapa Ini Sebuah Manifesto, Bukan Hanya Sebuah Spec
- Cascade Lengkap — dari Brain Dump ke Artikel Blog
- Pro/Kontra
- Kesimpulan : Atur file Anda, Bukan prompt Anda
- Referensi
Selama berbulan-bulan, saya menumpuk aturan tata kelola agen. Beberapa file EAGER, daftar periksa LAZY, protokol akhir sesi dalam enam langkah. Namun, satu pertanyaan masih belum terjawab : bagaimana LLM mengetahui apa yang memiliki hak untuk melakukan dengan sebuah file ?
Jawaban tidak ada dalam prompt. Dia berada dalam sistem berkas.
Berikut spesifikasi arsitektur yang membuat respons dapat digunakan — la matriks tata kelola LLM.
Masalah: Prompt Engineering adalah sebuah benteng pasir
Ketika Anda memberikan sebuah file ke sebuah LLM, Anda memberinya semuanya. Kontennya, ya — dan juga ketidakhadiran pengaman. LLM tidak tahu apakah file ini berisi rahasia, pendapat spekulatif, atau kode sumber tertutup. Dia akan mengindeksnya merangkum, mengutip, mencampur dengan data lain — dan potensial mempublikasikannya dalam embedding publik atau respons pengguna.
Parade klasik, itu adalah prompt :
"Tu es un assistant sécurisé. Ne divulgue jamais d'informations confidentielles.
Si tu détectes un secret, ignore-le. Si tu détectes une opinion, ne la répète pas."
Prompt ini memiliki tiga masalah :
-
Bergantung pada niat baik LLM. Sebuah model yang cukup besar untuk
Menyelesaikan bug kompleks cukup besar untuk mengelilingi sebuah instruksi keamanan yang terendam dalam 200k token konteks
-
Itu kontekstual, bukan struktural. Ganti prompt, ganti LLM,
ganti sesi — dan aturan menghilang.
-
Tidak dapat diskalakan. Setiap jenis file baru, setiap level baru
Privasi menuntut klausa baru. Prompt Anda menjadi sebuah teks peraturan yang tidak ada yang membacanya sepenuhnya
|
Keamanan sebuah sistem tidak boleh pernah bergantung pada sebuah instruksi yang mungkin lupa, menghindar, atau tidak dimuat. Dia harus bergantung pada sebuah halangan yang tidak dapat disebrangi tanpa ingin secara eksplisit |
Jawaban saya: matriks 4×4
Solusi yang saya terapkan di workspace saya adalah matriks zona × hak akses LLM. Dia tidak meminta LLM untuk berhati-hati. Dia memberi ketidakwaspadaan yang secara struktural mustahil
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 220
title Matriks Tata Kelola LLM — Zona × Hak Akses
package "Ruang Kerja" {
rectangle "AKAR
(Lingkaran 0)
━━━━━━
Brain dump
pikiran bebas
[DILARANG LLM]" as Z0 #FFB3B3
rectangle "configuration/
(Lingkaran 1)
━━━━━━
Rahasia, token
Infrastuktur pribadi
[DILARANG LLM]" as Z1 #FFB3B3
rectangle "office/
(Lingkaran 2)
━━━━━━
Data redaksi
Artikel, penataan
[Visifilter]" as Z2 #FFF3B3
rectangle "foundry/private/\n(Lingkaran 3)\n━━━━━━\nCode closed source\n[DATASET PRIBADI]" as Z3 #B3D9FF
rectangle "foundry/public/\n(Lingkaran 3)\n━━━━━━\nKode sumber terbuka\nApache 2.0\n[AKSES BEBAS]" as Z4 #B3FFB3
}
Z0 -[hidden]-> Z1
Z1 -[hidden]-> Z2
Z2 -[hidden]-> Z3
Z3 -[hidden]-> Z4
@enduml
Lima Zona (Dimensi Spasial — RGPD)
Setiap zona workspace memiliki tingkat GDPR yang menentukan di mana file dapat dirujuk :
Zona |
Tingkat GDPR |
Konten |
Hak akses RAG publik |
Akar |
0 — Pribadi |
Brain dumps, percakapan LLM |
dilarang— tidak pernah diindeks |
|
1 — Pemilik yang dibatasi |
Rahasia, token, kunci API |
dilarang— tidak pernah diindeks |
|
2 — Kolaboratif terbatas |
Data redaksi, penataan, pelatihan |
terfilter— Hanya visi |
|
3 — Terbuka bersyarat |
Kode bersumber tertutup, SaaS tidak publik |
DILARANG— dataset priadi secara eksklusif |
|
4 — Publik asli |
Kode Apache 2.0, plugin yang dipublikasikan |
BEBAS— indeksasi lengkap |
Aturan sederhana: jalur file menentukan apa yang dapat dilakukan LLM dengannya. Tidak ada metadata yang perlu dipertahankan, tidak ada tag yang perlu ditambahkan di frontmatter, tidak ada klasifikasi manual di setiap commit. File berada di`OSS/? Ini publik. Ini berada di`configuration/? Dia tidak bisa disentuh.
Klasifikasi Epistemik (Dimensi Kedua)
Dimensi spasial mengatakan où router. Tetapi ada sebuah sumbu kedua, tegak lurus: quoi router. Beberapa file di zona yang diizinkan berisi informasi yang tidak boleh diencerkan seperti semula:
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 240
title Kaskade Ganda — Filter Spasial + Filter Epistemik
start
:Le LLM rencontre un fichier;
if (Zone physique ?) then (Cercle 0-1)
:ACCÈS BLOQUÉ\n(secret, brain dump);
stop
elseif (Zone CSS/)
:DROIT D'ACCÈS PRIVÉ\n→ dataset fine-tuning;
:Filtre épistémique\nVision/Opinion;
if (Classification ?) then (VISION)
:Dataset privé\n→ entraînement autorisé;
else (OPINION)
:CONFINÉ\n→ pas d'entraînement;
endif
elseif (Zone office/)
:DROIT D'ACCÈS FILTRÉ\n→ accès conditionnel;
:Filtre épistémique\nVision/Opinion/Stratégie;
if (Classification ?) then (VISION)
:DILUTION COMPLÈTE\n→ docs racine + blog;
elseif (STRATÉGIE)
:DILUTION RESTREINTE\n→ docs racine seulement;
else (OPINION)
:CONFINEMENT\n→ office/ uniquement;
endif
else (Zone OSS/)
:ACCÈS LIBRE\n→ indexation complète;
endif
stop
@enduml
Matriks klasifikasi epistemik, diukir dalam Aturan 2bis dari pengelolaanku agen :
| Status | Definisi | Signal LLM | Tujuan | | VISION | Arsitektur yang stabil, pola yang telah diuji | Bahasa deklaratif, referensi sesi/uji | Pengenceran lengkap + Blog | | STRATEGI | Penempatan bisnis, harga | Kosakata pasar, persaingan | Hanya dokumen akar | | OPINION | Spekulasi, hipotesis belum divalidasi | Bahasa hipotetis, intuisi | Penahanan Lingkaran 0 |
Kombinasi dari dua dimensi — zona fisik × klasifikasi epistemik — membentukmatriks lengkap:
@startuml
skinparam backgroundColor #FEFEFE
title Matriks Lengkap — Zona × Klasifikasi
salt
{
{T
+ Zone | VISION | STRATÉGIE | OPINION
+ Racine (0) | ✗ Interdit | ✗ Interdit | ✗ Interdit
+ configuration/ (1) | ✗ Interdit | ✗ Interdit | ✗ Interdit
+ office/ (2) | ✓ Docs + Blog | ✓ Docs seulement | ✗ Confiné
+ CSS/ (3) | ✓ Dataset privé | ✓ Dataset privé | ✗ Confiné
+ OSS/ (4) | ✓ Public libre | ✓ Public libre | ✓ Public libre
}
}
@enduml
Bagaimana LLM Mengkonsumsi Matriks Ini
Matriks bukanlah dokumen yang dibaca oleh LLM. Ini adalah sebuah kendala implisit dikodekan dalam vektor komposit konteks (EPIC 9 — sedang berlangsung penerapan)
Ini adalah apa yang LLM terima di setiap sesi:
VECTEUR COMPOSITE DE CONTEXTE
├── RAG pgvector → OSS/ + office/Vision
│ (similarité sémantique sur contenu publiable)
├── Knowledge Graph graphify → OSS/
│ (relations exactes entre artéfacts publics)
├── Knowledge Graph privé → CSS/
│ (relations entre code closed source — jamais exporté)
├── Métadonnées de zone → chaque fichier taggé par zone physique
│ (le LLM sait s'il est dans office/ ou OSS/)
└── Historique des décisions → WORKSPACE_VISION.adoc
(contexte temporel des arbitrages)
Secara konkrit, ketika LLM berkata kepada saya:
Je vais indexer le contenu de edster/ pour enrichir le knowledge graph...
Metadata zona merespons bahkan sebelum LLM menyelesaikan kalimatnya : edster/`ada di`CSS/, level 3 →Akses dilarang pada graf pengetahuan umum. RAG tidak melihatnya. Graf tidak menyentuhnya. respons pengguna Dia tidak mengutipnya.
|
Ontologi spasial berfungsi sebagai sebuahizin Unixuntuk LLM. Anda tidak meminta sebuah proses untuk berhati-hati dengan`/etc/shadow`— Anda menolak akses baca untuknya. Prinsip yang sama. |
Implementasi : Tugas Gradle yang Bertipe
Matriks bukanlah sebuah filosofi. Ini adalah kode. Berikut kontrak tugas. Gradle yang mengimplementasikannya:
abstract class ZoneAwareIndexer @Inject constructor(
private val rootDir: DirectoryProperty,
private val configServer: ConfigServerProperty // → configuration/
) : DefaultTask() {
@Input
val zoneFilter: SetProperty<Zone> = project.objects.setProperty(Zone::class.java)
@OutputFile
val ragIndex: RegularFileProperty = project.objects.fileProperty()
@TaskAction
fun index() {
val allowedPaths = zoneFilter.get().flatMap { it.resolve(rootDir.get()) }
val forbiddenPaths = Zone.RESTRICTED.resolve(rootDir.get())
+ Zone.INTIMATE.resolve(rootDir.get())
// Le RAG ne voit jamais configuration/ ni la racine
// CSS/ alimente un index privé, pas celui-ci
// office/ est filtré par le classifieur Vision/Opinion
}
}
enum class Zone {
INTIMATE, // Cercle 0 — racine
RESTRICTED, // Cercle 1 — configuration/
EDITORIAL, // Cercle 2 — office/
CLOSED_SOURCE, // Cercle 3 — foundry/private/
OPEN_SOURCE // Cercle 3 — foundry/public/
}
Tugas ini dapat diuji. Anda dapat menulis sebuah ujian yang memeriksa :
@Test
fun `le RAG n'indexe jamais configuration`() {
val index = ZoneAwareIndexer(rootDir, configServer)
index.zoneFilter.set(setOf(Zone.OPEN_SOURCE, Zone.EDITORIAL))
index.index()
assertThat(index.ragIndex).doesNotContain("configuration/")
}
@Test
fun `le code closed source est exclu du RAG public`() {
val index = ZoneAwareIndexer(rootDir, configServer)
index.zoneFilter.set(setOf(Zone.OPEN_SOURCE)) // OSS only
assertThat(index.ragIndex).doesNotContain("edster")
}
380 tes, 380 LULUS. Seperti pada plantuml-gradle — keamanan diuji, tidak diharapkan.
Mengapa Ini Sebuah Manifesto, Bukan Hanya Sebuah Spec
Dokumen ini adalah spesifikasi arsitektur karena ia mendefinisikan :
-
beberapadimensi(spasial, epistemik)
-
Beberapaaturan deterministik(zona → hak akses)
-
Un kontrak tugas(Gradle bertipe, dapat diuji)
-
satuimplementasi referensi(workspace saya)
Namun itu juga sebuahjelaskarena dia mengambil sikap terhadap sebuah perdebatan lebih luas : bagaimana mengatur akses sebuah LLM ke data?
Jawaban industri adalah prompt engineering + guardrail
klasifikasi post-hoc. Jawaban saya adalah : letakkan file Anda di dokumen yang baik.** Sisa otomatis.
|
Manifesto ini tidak mengatakan "LLM harus disesuaikan". Ia berkata: "penyelarasan sebuah LLM atas aturan keamanan Anda adalah konsekuensi dari sistem Anda berkas, bukan prompt Anda. |
Cascade Lengkap — dari Brain Dump ke Artikel Blog
Untuk mengilustrasi siklus lengkap, berikut adalah bagaimana ide matriks ini lahir. dan telah dilarutkan:
Session 4 mai 2026 — Feedback global du workspace
│
├→ Le LLM identifie : "la dualité public/privé est invisible"
│ → Classifié VISION (constat architectural vérifiable)
│
├→ PICTURE_ME_ROLLIN_MATRICE_4X4.adoc — STIMULUS (Cercle 0)
│ → Brain dump structuré, classification VISION confirmée
│
├→ DILUTION → WORKSPACE_AS_PRODUCT.adoc (section Matrice 4×4)
│ → La spec vit dans les documents racine
│
├→ DILUTION → WORKSPACE_ORGANIZATION.adoc (OSS/CSS)
│ → La granularisation est documentée
│
└→ ARTICLE 0117 (ce document) → cheroliv.com
→ La VISION est publiée
Yang dimulai sebagai observasi dalam sesi ("hey, RAG tidak tahu bahwa edster adalah sumber tertutup") telah menjadi sebuah spesifikasi arsitektur diterbitkan dalam kurang dari satu sesi. Ini adalah pola STIMULUS dalam aksi.
Pro/Kontra
| Pendekatan ini (Ontologi Spasial + Matriks) | Pendekatan Klasik (Prompt + Pengaman) |
|---|---|
Mekanisme — sistem file memblokir akses, bukan LLM |
Deklaratif — permintaan meminta LLM untuk berhati-hati |
Testable — kontrak tugas Gradle diverifikasi oleh 380+ tes |
Not testable — "Apakah LLM telah mematuhi aturan?" adalah pertanyaan terbuka |
Mandiri dari LLM — ganti model, folder tetap ada |
Bergantung pada LLM — setiap model meminterpretasi prompt secara berbeda |
Scalable — jenis data baru = folder baru, tidak ada perubahan kode |
tidak dapat diskalakan — jenis data baru = klausa prompt baru, risiko regresi baru |
Auditable — sistem file adalah jalur audit |
tidak dapat diaudit — prompt tidak memiliki riwayat, tidak ada perbedaan, tidak ada penyalahan |
Contrainte : menuntut disiplin organisasi awal |
Kendala: mengharuskan disiplin penulisan prompt setiap sesi |
Kesimpulan : Atur file Anda, Bukan prompt Anda
Matriks tata kelola LLM yang baru saja saya jelaskan bukanlah sebuah produk. Ini adalahspecifikasi arsitektur— dan itulah sebabnya dia adalah dapat dipublikasikan
Yang membuatnya kuat adalah bahwa ia tidak meminta apa pun dari LLM. Ia tidak Dia tidak mempercayai. Ia tidak bersandar pada penyelarasan, pemahamannya. bahasa Prancis, atau niat baiknya. Ia berdasar pada sistem file — lapisan terendah, paling stabil, paling teruji dari seluruh stack.
Saat saya berkata kepada LLM saya "kamu bisa mengindeks semua di`OSS/, tidak ada dalam `configuration/, et `office/`hanya jika ia diklasifikasikan sebagai Vision Ini bukan instruksi. Ini adalah filter — diimplementasikan dalam Kotlin, Diverifikasi oleh 380 tes, dieksekusi sebelum LLM melihat data.
Ini adalah perbedaan antara mengatakan kepada seseorang 'jangan lihat di dalam laci ini' dan menutup laci kunci. Agen tata kelola yang saya bangun sejak Bulan-bulan adalah kunci. Matriks adalah rencana furnitur.