CSL-Core
CSL-Core
❤️ Наши контрибьюторы!
CSL-Core (Chimera Specification Language) — это детерминированный уровень безопасности для ИИ-агентов. Пишите правила в файлах .csl, проверяйте их математически с помощью Z3, обеспечивайте их соблюдение во время выполнения — вне модели. LLM никогда не видит эти правила. Она просто не может их нарушить.
pip install csl-coreИзначально создано для Project Chimera, теперь с открытым исходным кодом для любой системы ИИ.
Зачем?
prompt = """You are a helpful assistant. IMPORTANT RULES:
- Never transfer more than $1000 for junior users
- Never send PII to external emails
- Never query the secrets table"""Это не работает. LLM подвержены промпт-инъекциям, правила носят вероятностный характер (99% ≠ 100%), и нет аудиторского следа, когда что-то идет не так.
CSL-Core меняет подход: правила находятся вне модели в скомпилированных, проверенных Z3 файлах политик. Принудительное исполнение является детерминированным — это не рекомендация.
Быстрый старт (60 секунд)
1. Напишите политику
Создайте my_policy.csl:
CONFIG {
ENFORCEMENT_MODE: BLOCK
CHECK_LOGICAL_CONSISTENCY: TRUE
}
DOMAIN MyGuard {
VARIABLES {
action: {"READ", "WRITE", "DELETE"}
user_level: 0..5
}
STATE_CONSTRAINT strict_delete {
WHEN action == "DELETE"
THEN user_level >= 4
}
}2. Проверка и тестирование (CLI)
# Compile + Z3 formal verification
cslcore verify my_policy.csl
# Test a scenario
cslcore simulate my_policy.csl --input '{"action": "DELETE", "user_level": 2}'
# → BLOCKED: Constraint 'strict_delete' violated.
# Interactive REPL
cslcore repl my_policy.csl3. Использование в Python
from chimera_core import load_guard
guard = load_guard("my_policy.csl")
result = guard.verify({"action": "READ", "user_level": 1})
print(result.allowed) # True
result = guard.verify({"action": "DELETE", "user_level": 2})
print(result.allowed) # FalseБенчмарк: Устойчивость к состязательным атакам
Мы протестировали правила безопасности на основе промптов против принудительного исполнения CSL-Core на 4 передовых LLM с использованием 22 состязательных атак и 15 легитимных операций:
Подход | Заблокировано атак | Уровень обхода | Пройдено легитимных операций | Задержка |
GPT-4.1 (промпт-правила) | 10/22 (45%) | 55% | 15/15 (100%) | ~850мс |
GPT-4o (промпт-правила) | 15/22 (68%) | 32% | 15/15 (100%) | ~620мс |
Claude Sonnet 4 (промпт-правила) | 19/22 (86%) | 14% | 15/15 (100%) | ~480мс |
Gemini 2.0 Flash (промпт-правила) | 11/22 (50%) | 50% | 15/15 (100%) | ~410мс |
CSL-Core (детерминированный) | 22/22 (100%) | 0% | 15/15 (100%) | ~0.84мс |
Почему 100%? Принудительное исполнение происходит вне модели. Промпт-инъекция не имеет значения, потому что нет ничего, против чего можно было бы совершить инъекцию. Категории атак: прямое переопределение инструкций, джейлбрейки через ролевые игры, трюки с кодированием, эскалация в несколько шагов, подмена имен инструментов и многое другое.
Полная методология:
benchmarks/
Интеграция с LangChain
Защитите любого агента LangChain с помощью 3 строк — никаких изменений промптов, никакого дообучения:
from chimera_core import load_guard
from chimera_core.plugins.langchain import guard_tools
from langchain_classic.agents import AgentExecutor, create_tool_calling_agent
guard = load_guard("agent_policy.csl")
# Wrap tools — enforcement is automatic
safe_tools = guard_tools(
tools=[search_tool, transfer_tool, delete_tool],
guard=guard,
inject={"user_role": "JUNIOR", "environment": "prod"}, # LLM can't override these
tool_field="tool" # Auto-inject tool name
)
agent = create_tool_calling_agent(llm, safe_tools, prompt)
executor = AgentExecutor(agent=agent, tools=safe_tools)Каждый вызов инструмента перехватывается до выполнения. Если политика запрещает, инструмент не запускается. Точка.
Внедрение контекста
Передавайте контекст выполнения, который LLM не может переопределить — роли пользователей, окружение, лимиты запросов:
safe_tools = guard_tools(
tools=tools,
guard=guard,
inject={
"user_role": current_user.role, # From your auth system
"environment": os.getenv("ENV"), # prod/dev/staging
"rate_limit_remaining": quota.remaining # Dynamic limits
}
)Защита цепочек LCEL
from chimera_core.plugins.langchain import gate
chain = (
{"query": RunnablePassthrough()}
| gate(guard, inject={"user_role": "USER"}) # Policy checkpoint
| prompt | llm | StrOutputParser()
)Инструменты CLI
CLI — это полноценная среда разработки для политик: тестируйте, отлаживайте и развертывайте без написания кода на Python.
verify — Компиляция + доказательство Z3
cslcore verify my_policy.csl
# ⚙️ Compiling Domain: MyGuard
# • Validating Syntax... ✅ OK
# ├── Verifying Logic Model (Z3 Engine)... ✅ Mathematically Consistent
# • Generating IR... ✅ OKsimulate — Тестовые сценарии
# Single input
cslcore simulate policy.csl --input '{"action": "DELETE", "user_level": 2}'
# Batch testing from file
cslcore simulate policy.csl --input-file test_cases.json --dashboard
# CI/CD: JSON output
cslcore simulate policy.csl --input-file tests.json --json --quietrepl — Интерактивная разработка
cslcore repl my_policy.csl --dashboard
cslcore> {"action": "DELETE", "user_level": 2}
🛡️ BLOCKED: Constraint 'strict_delete' violated.
cslcore> {"action": "DELETE", "user_level": 5}
✅ ALLOWEDformal — Модельная проверка TLA⁺
cslcore formal my_policy.cslЗапускает официальный инструмент проверки моделей TLC (java -jar tla2tools.jar) для вашей политики. TLC исчерпывающе исследует каждое достижимое состояние в пространстве абстрактных состояний и доказывает, что каждое временное свойство соблюдается — или возвращает конкретный контрпример с точным состоянием, которое нарушает ваш инвариант.
╔══════════════════════════════════════════════════════════════════════════════╗
║ TLA⁺ FORMAL VERIFICATION ENGINE ║
║ Chimera Specification Language · Temporal Logic of Actions ║
║ ║
║ ⚡ REAL TLC · java -jar tla2tools.jar · Exhaustive Model Checking ║
║ TLC2 Version 2026.03.31.154134 (rev: becec35) · pid 48146 · 1 ║
║ worker(s) ║
╚══════════════════════════════════════════════════════════════════════════════╝
Variable Domain Cardinality
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
agent_tier {"STANDARD", "PREMIUM"} |2|
task_type {"READ", "WRITE", "ANALYZE"} |3|
risk_score 0..5 |6|
├─ □(no_destructive_ops) ✅ HOLDS [288 states 349ms]
├─ □(no_production_access) ✅ HOLDS [288 states 349ms]
├─ □(bounded_risk) ✅ HOLDS [288 states 349ms]
└─ Proof hash: 17dd1564897d242fc045a3a884a52bbb… ✅
╔══════════════ TLA⁺ VERIFICATION COMPLETE — ALL PROPERTIES HOLD ══════════════╗
║ ✅ Domain: AIAgentSafetyDemo · ⬡ 144 states · ⏱ 1047ms ║
╚══════════════════════════════════════════════════════════════════════════════╝Включите в любой политике, добавив одну строку в CONFIG:
CONFIG {
ENFORCEMENT_MODE: BLOCK
ENABLE_FORMAL_VERIFICATION: TRUE // ← triggers cslcore formal automatically
}Или запустите отдельно:
cslcore formal policy.csl # real TLC (Java required, JAR auto-downloaded)
cslcore formal policy.csl --mock # Python BFS fallback (no Java needed)
cslcore formal policy.csl --timeout 120
cslcore formal policy.csl --export-tla ./specs/ # save .tla + .cfg for TLA+ ToolboxНет Java? CSL-Core автоматически переключается на Python-реализацию проверки моделей BFS. Баннер четко указывает, какой движок был запущен. JAR скачивается автоматически при первом использовании (~4 МБ из официального релиза TLA+ на GitHub).
CI/CD конвейер
# GitHub Actions
- name: Verify policies
run: |
for policy in policies/*.csl; do
cslcore verify "$policy" || exit 1
doneMCP-сервер (Claude Desktop / Cursor / VS Code)
Пишите, проверяйте и обеспечивайте соблюдение политик безопасности прямо из вашего ИИ-ассистента — код не требуется.
pip install "csl-core[mcp]"Добавьте в конфигурацию Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"csl-core": {
"command": "uv",
"args": ["run", "--with", "csl-core[mcp]", "csl-core-mcp"]
}
}
}Инструмент | Что он делает |
| Формальная верификация Z3 — обнаруживает противоречия на этапе компиляции |
| Тестирование политик на входных данных JSON — РАЗРЕШЕНО/ЗАБЛОКИРОВАНО |
| Понятное человеку резюме любой политики CSL |
| Генерация шаблона CSL на основе описания на обычном английском |
Вы: "Напиши мне политику безопасности, которая предотвращает переводы свыше $5000 без одобрения администратора"
Claude: scaffold_policy → вы редактируете → verify_policy обнаруживает противоречие → вы исправляете → simulate_policy подтверждает работу
Архитектура
┌──────────────────────────────────────────────────────────┐
│ 1. COMPILER .csl → AST → IR → Compiled Artifact │
│ Syntax validation, semantic checks, functor gen │
├──────────────────────────────────────────────────────────┤
│ 2. Z3 VERIFIER Theorem Prover — Static Analysis │
│ Contradiction detection, reachability, rule shadowing │
│ ⚠️ If verification fails → policy will NOT compile │
├──────────────────────────────────────────────────────────┤
│ 3. TLA⁺ VERIFIER Model Checker — Temporal Safety │
│ Exhaustive state-space exploration via TLC │
│ Predicate abstraction for large numeric domains │
│ Counterexample traces + automated fix suggestions │
│ (opt-in: ENABLE_FORMAL_VERIFICATION: TRUE) │
├──────────────────────────────────────────────────────────┤
│ 4. RUNTIME Deterministic Policy Enforcement │
│ Fail-closed, zero dependencies, <1ms latency │
└──────────────────────────────────────────────────────────┘Тяжелые вычисления выполняются один раз на этапе компиляции. Время выполнения — это чистая оценка.
Используется в продакшене
Используете CSL-Core? Дайте нам знать, и мы добавим вас сюда.
Примеры политик
Пример | Домен | Ключевые особенности |
Безопасность ИИ | RBAC, защита PII, разрешения инструментов | |
Финансы | Скоринг рисков, VIP-уровни, санкции | |
Web3 | Мультиподпись, временные блокировки, аварийный обход | |
Формальные методы | Модельная проверка TLA⁺ — все свойства соблюдаются | |
Формальные методы | Контрпример TLA⁺ + предложения по исправлению |
python examples/run_examples.py # Run all with test suites
python examples/run_examples.py banking # Run specific exampleСправочник API
from chimera_core import load_guard, RuntimeConfig
# Load + compile + verify
guard = load_guard("policy.csl")
# With custom config
guard = load_guard("policy.csl", config=RuntimeConfig(
raise_on_block=False, # Return result instead of raising
collect_all_violations=True, # Report all violations, not just first
missing_key_behavior="block" # "block", "warn", or "ignore"
))
# Verify
result = guard.verify({"action": "DELETE", "user_level": 2})
print(result.allowed) # False
print(result.violations) # ['strict_delete']Полная документация: Начало работы · Спецификация синтаксиса · Справочник CLI · Философия
Дорожная карта
✅ Сделано: Базовый язык и парсер · Верификация Z3 · Среда выполнения с отказом по умолчанию · Интеграция с LangChain · CLI (verify, simulate, repl, formal) · MCP-сервер · Модельная проверка TLA⁺ с реальным TLC · Абстракция предикатов · Анализ контрпримеров · Развертывание в продакшене в Chimera v1.7.0
🚧 В процессе: Версионирование политик · Интеграция с LangGraph
🔮 Планируется: LlamaIndex и AutoGen · Композиция нескольких политик · Горячая перезагрузка · Маркетплейс политик · Облачные шаблоны
🔒 Enterprise (исследования): Причинно-следственный вывод · Мультиарендность
Вклад в проект
Мы приветствуем вклад! Начните с good first issue или ознакомьтесь с CONTRIBUTING.md.
Области с высоким влиянием: Реальные примеры политик · Интеграции с фреймворками · Веб-редактор политик · Покрытие тестами
Лицензия
Apache 2.0 (open-core модель). Весь язык, компилятор, верификатор Z3, среда выполнения, CLI, MCP-сервер и все примеры имеют открытый исходный код. См. LICENSE.
Создано с ❤️ компанией Chimera Protocol · Issues · Discussions · Email
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Chimera-Protocol/csl-core'
If you have feedback or need assistance with the MCP directory API, please join our Discord server