Матрица управления LLM — Почему безопасность вашего ИИ начинается с иерархии
Опубликовано 04 May 2026
- Проблема: Инженерия промптов — это песочный замок.
- Мой ответ: Матрица 4×4
- Как LLM потребляет эту матрицу
- Реализация: Типизированные задачи Gradle
- Почему это манифест, а не просто спецификация
- Полный каскад — от Brain Dump до блоговой статьи
- За/против
- Вывод: Организуйте свои файлы, а не свои подсказки
- Ссылки
В течение месяцев я накопил правила управления агентом. Файлы EAGER, контрольные списки LAZY, шестиэтапные протоколы завершения сеанса. И всё же один вопрос оставался открытым: как LLM знает, что оно У него есть право делать с файлом ?
Ответ не в подсказке. Он находится в файловой системе.
Вот спецификация архитектуры, которая делает ответ пригодным для использования — la матрица управления LLM.
Проблема: Инженерия промптов — это песочный замок.
Когда вы даёте файл LLM, вы даёте ему всё. Содержание, да — но и отсутствие средств защиты. LLM не знает, содержит ли этот файл Секрет, гипотетическое мнение или закрытый исходный код. Он проиндексирует его. резюмировать, цитировать, смешивать с другими данными — и потенциально опубликовать его в публичном embedding или ответе пользователя
Классический парад, это подсказка:
"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."
Этот промпт имеет три проблемы:
-
Он полагается на добрую волю LLM. Достаточно большая модель для
Решение сложных багов достаточно велико, чтобы обойти инструкцию. безопасности, утопленной в 200k токенах контекста.
-
Он контекстуальный, а не структурный. Смените запрос, смените LLM,
переключитесь на другую сессию — и правило исчезает.
-
Он не масштабируется. Каждый новый тип файла, каждый новый уровень
конфиденциальность требует нового пункта. Ваш запрос становится регламентированный текст, который никто не читает полностью.
|
Безопасность системы никогда не должна зависеть от инструкции, которую может забыть, обойти или не загрузить. Она должна зависеть от барьер, который невозможно преодолеть без явного намерения |
Мой ответ: Матрица 4×4
Решение, которое я реализовал в моём рабочем пространстве, является матрица зона × право доступа к LLM**. Она не требует от LLM быть осторожным. Она делает. структурно невозможная неосторожность.
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 220
title Матрица управления LLM — Зона × Право доступа
package "" {
rectangle "RACINE\n(Круг 0)\n━━━━━━\nМозговой дамп\nСвободная мысль\n[INTERDIT LLM]" as Z0 #FFB3B3
rectangle "configuration/\n(Круг 1)\n━━━━━━\nСекреты, токены\nПриватная инфраструктура\n[INTERDIT LLM]" as Z1 #FFB3B3
rectangle "office/\n(Круг 2)\n━━━━━━\nРедакционные данные\nСтатьи, оформление\n[FILTRÉ Vision]" as Z2 #FFF3B3
rectangle "foundry/private/\n(Круг 3)\n━━━━━━\nЗакрытый исходный код\n[DATASET PRIVÉ]" as Z3 #B3D9FF
rectangle "foundry/public/\n(Круг 3)\n━━━━━━\nОткрытый исходный код\nApache 2.0\n[ACCÈS LIBRE]" as Z4 #B3FFB3
}
Z0 -[hidden]-> Z1
Z1 -[hidden]-> Z2
Z2 -[hidden]-> Z3
Z3 -[hidden]-> Z4
@enduml
Пять зон (Пространственная размерность — RGPD)
Каждая область рабочего пространства имеет уровень GDPR, который определяет где файл может быть маршрутизированным :
| Зона | Уровень ОЗПД | Содержание | Право доступа RAG публичный |
|---|---|---|---|
Корень |
0 — интимный |
Дампы мозга, беседы LLM |
Запрещено— никогда не индексировался |
|
1 — Ограниченный владелец |
Секреты, токены, ключи API |
ЗАПРЕЩЕНО— никогда не индексировался |
|
2 — Ограниченный совместный |
Редакционные данные, кадрирование, обучение |
отфильтрованный— Только видение |
|
3 — Условно открыто |
Код закрытого исходного кода, SaaS не публичный |
запрещено— частный набор данных исключительно |
|
4 — Коренная аудитория |
Код Apache 2.0, опубликованные плагины |
свободный— полная индексация |
Правило простое : путь к файлу определяет, что LLM может с ним делать. Нет метаданных, которые нужно поддерживать, нет тега, который нужно добавить во frontmatter, нет ручной классификации при каждом коммите. Файл находится в`OSS/? Он общедоступен. Он в`configuration/? Он недоступен.
Эпистемологическая классификация (второе измерение)
Пространственная размерность говорит куда маршрутизировать. Но есть вторая ось, перпендикулярная: quoi маршрутизатор. Некоторые файлы в авторизованной зоне содержат информацию которые не должны быть разбавлены как есть:
@startuml
skinparam backgroundColor #FEFEFE
skinparam defaultTextAlignment center
skinparam wrapWidth 240
title Double Каскад — пространственный фильтр + эпистемологический фильтр
start
:LLM встречает файл;
if (Zone physique ?) then (Cercle 0-1)
:ACCесть BLOQUÉ\n(secret, brain dump);
stop
elseif (Zone CSS/)
:DROIT D'ACCÈS PRIVÉ\n→ настройка датасета;
:Фильтр эпистемологический\nЗрение/Opinion;
if (Classification ?) then (VISION)
:Приватный набор данных \n → обучение разрешено;
else (OPINION)
:CONFINÉ\n→ нет тренировок;
endif
elseif (Zone office/)
:DROIT D'ACCÈS FILTRÉ\n→ условный доступ;
:Эпистемный фильтр\nВидение/Opinion/Stratégie;
if (Classification ?) then (VISION)
:DILUTION COMPLÈTE\n→ docs корень + blog;
elseif (STRATÉGIE)
:DILUTION RESTREINTE\n→ docs только корень;
else (OPINION)
:CONFINEMENT\n→ офис/ только;
endif
else (Zone OSS/)
:ACCÈS LIBRE\n→ полная индексация;
endif
stop
@enduml
Сетка эпистемологической классификации, выгравированная в Правило 2bis моего управления агент :
| Статус | Определение | Сигнал LLM | Назначение | | ВИДЕНИЕ | Стабилизированная архитектура, проверенный шаблон | Декларативный язык, ссылки на сеансы/тесты | Полное разбавление + Блог | | СТРАТЕГИЯ | Позиционирование бизнеса, цены | Словарь рынка, конкуренция | Только корневые документы | | OPINION | Спекуляция, неподтверждённая гипотеза | Гипотетический язык, интуиция | Ограничение круг 0 |
Комбинация двух измерений — физическая зона × эпистемная классификация — формируетполная матрица:
@startuml
skinparam backgroundColor #FEFEFE
title Полная матрица — Зона × Классификация
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
Как LLM потребляет эту матрицу
Матрица не является документом, который читает LLM. Это ограничение неявно** закодирована в составном векторе контекста (EPIC 9 — в процессе) реализации).
Вот что получает LLM в каждой сессии :
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)
Конкретно, когда LLM мне говорит :
Je vais indexer le contenu de edster/ pour enrichir le knowledge graph...
Метаданные зоны отвечают, даже прежде чем LLM закончит свою фразу: edster/`находится в`CSS/, уровень 3 →Доступ к публичному knowledge graph запрещён. RAG не видит его. Граф его не касается. Ответ пользователя ne Он не цитирует его.
|
Пространственная онтология функционирует какразрешение Unixдля LLM. Вы не просите, чтобы процесс был осторожен с`/etc/shadow`— Вы ему отказываете в доступе для чтения. Тот же принцип. |
Реализация: Типизированные задачи Gradle
Матрица — это не философия. Это код. Вот контракт задачи. Gradle, который это реализует:
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/
}
Задача тестируемая. Вы можете написать тест, который проверяет:
@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 tests, 380 PASS. Как и для plantuml-gradle — безопасность тестируется, не ожидаемая.
Почему это манифест, а не просто спецификация
Этот документ является архитектурной спецификацией, поскольку он определяет:
-
Некоторыеразмеры(пространственная, эпистемологическая)
-
некоторыедетерминированные правила(zone → право доступа)
-
Un контракт на задачу(Типизированный Gradle, тестируемый)
-
Однаэталонная реализация(моя рабочая область)
Но это такжеявныйпотому что он занимает позицию в дебатах больше : как управлять доступом LLM к данным?
Ответ отрасли — это инжиниринг промптов + системы ограничений
пост-хок классификаторы. Мой ответ: расположите свои файлы в правильные папки. Остальное автоматически.
|
Этот манифест не говорит "LLM должны быть выровнены". Он говорит: "выравнивание Один LLM на ваши правила безопасности является следствием вашей системы файлы, не ваш запрос. |
Полный каскад — от Brain Dump до блоговой статьи
Чтобы проиллюстрировать полный цикл, вот как эта идея матрицы возникла и была разбавлена :
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
Что началось как наблюдение в сеансе ("эй, RAG не знает que edster est closed source") стал спецификацией архитектуры опубликовано менее чем за одну сессию. Это шаблон STIMULUS в действии.
За/против
| Этот подход (пространственная онтология + матрица) | Классический подход (Prompt + Guardrails) |
|---|---|
Механика — файловая система блокирует доступ, а не LLM |
Декларативный — промпт просит LLM быть осторожным |
Testable — контракт задачи Gradle проверяется 380+ тестами |
Не тестируемый — "Соблюдал ли LLM правило?" — это открытый вопрос. |
Независимая от LLM — меняйте модель, папки останутся |
Зависимая от LLM — каждая модель интерпретирует запрос по‑разному |
Scalable — новый тип данных = новая папка, нулевое изменение кода |
Не масштабируемый — новый тип данных = новое условие промпта, новый риск регрессии |
Auditable — файловая система является audit trail |
Не проверяемый — у промпта нет истории, нет diff, нет blame |
Ограничение : требует начальной организационной дисциплины |
Ограничение : требует дисциплины составления промптов в каждой сессии |
Вывод: Организуйте свои файлы, а не свои подсказки
Матрица управления LLM, которую я только что описал, не является продуктом. Это однаспецификация архитектуры— и это потому, что она пригодный для публикации.
Что делает её надёжной, так это то, что она ничего не требует от LLM. Она не ему Она не доверяет. Она не полагается на своё выравнивание, своё понимание. из французского, или её доброй воли. Она основана на файловой системе — самый нижний, самый стабильный, самый протестированный слой всего стека.
Когда я говорю своему LLM"ты можешь проиндексировать всё в`OSS/, ничего в `configuration/, et `office/`seulement если это классифицировано как Vision— Это фильтр — реализованный на Kotlin, проверено 380 тестами, выполнено до того, как LLM увидел данные.
Это разница между тем, чтобы сказать кому-то "не смотри в этот ящик и закрыть ящик с ключом. Управление агентом, которое я строю с месяцев — это ключ. Матрица — это план мебели.
Ссылки
-
Статья 0108 — Управление агентом ИИ с использованием AsciiDoc