Об этом проекте

Iris — это open-source MCP-сервер (Model Context Protocol), предназначенный для оценки выходных данных ИИ-агентов по качеству, безопасности и стоимости. Он полностью работает на вашей машине, хранит трассировки в локальной базе данных SQLite и не требует аккаунта, SDK и телеметрии. Проект распространяется по лицензии MIT и требует Node.js 20 или новее. Основные возможности включают журналирование трассировок с иерархическими деревьями спанов, задержку каждого вызова инструмента, использование токенов и отслеживание стоимости в долларах США. Оценка выходных данных использует 20 встроенных детерминированных правил в четырёх категориях: полнота, релевантность, безопасность и стоимость. Правила безопасности обнаруживают PII (19 паттернов, включая SSN, кредитные карты, телефоны, email, IBAN, DOB, MRN, IP, ключи API, паспорта и токены облачных провайдеров), промпт-инъекции (37 паттернов), маркеры галлюцинаций (25 контекстно-обоснованных сигналов фабрикации) и нарушения траектории, такие как необъявленные неудачные вызовы инструментов, повторные вызовы, аргументы, отклонённые схемой, и цитируемые источники, которые агент никогда не читал. Опциональная функция LLM-as-judge обеспечивает семантическую оценку через Anthropic или OpenAI с жёстким ограничением стоимости на одну оценку (по умолчанию $0.25). Iris регистрирует двенадцать MCP-инструментов, которые может вызывать любой MCP-совместимый агент: log_trace, evaluate_output, get_traces, list_rules, deploy_rule, delete_rule, delete_trace, evaluate_with_llm_judge, verify_citations, compare_runs, compare_traces и evaluate_runs. Инструмент verify_citations извлекает цитаты из выходных данных, загружает источники через резолвер с защитой от SSRF и использует LLM-judge для проверки того, поддерживает ли каждый источник процитированное утверждение. Веб-панель доступна по адресу http://localhost:6920 и открывается на списке сбоев, отсортированных по убыванию серьёзности и новизне. Она предоставляет визуализацию трассировок, результаты оценок, разбивку затрат и палитру команд (Cmd+K) для поиска по правилам, трассировкам и оценкам. Панель также предоставляет HTTP-эндпоинт приёма данных (POST /api/v1/traces) для захвата трассировок без модели в цикле и эндпоинт возможностей (GET /api/v1/capabilities), который описывает, что сервер может оценивать. Для интеграции с CI/CD команда ingest CLI читает трассировки в формате JSON или NDJSON из stdin или файла, оценивает их, выводит по одной строке JSON на каждую трассировку с вердиктом и завершается с кодом 1, когда вердикт соответствует фильтру --fail-on. Это позволяет блокировать развёртывание агентов на основе результатов оценки. Пользовательские правила можно создавать инлайн (до 10 на один вызов evaluate_output) или развёртывать постоянно через deploy_rule. Типы правил включают regex_match, regex_no_match, min_length, max_length, contains_keywords, excludes_keywords, json_schema и cost_threshold. Развёрнутые правила сохраняются в файле custom-rules.json в домашнем каталоге Iris и срабатывают при каждом будущем вызове evaluate_output в своей категории. Уровни серьёзности (low, medium, high, critical) определяют, приводит ли сбой правила к жёсткому провалу оценки или только влияет на балл. Вердикт о прохождении определяется композитором, который интерпретирует каждое правило по типу его утверждения: настроенные политики выступают шлюзом, критические детекторы накладывают вето, критические проверки, не получившие ответа, дают вердикт unknown, а остальные детекторы объединяются в вероятность, взвешиваемую с учётом настраиваемого коэффициента потерь. Настоящие нарушения безопасности (no_pii, no_injection_patterns, no_blocklist_words) по умолчанию приводят к жёсткому провалу. Каждое встроенное правило имеет опубликованные показатели precision, recall и F1 с 95% доверительными интервалами, измеренные на размеченном корпусе в репозитории. CI перезапускает измерение для каждого pull request и завершается сбоем, если зафиксированные числа отличаются от того, что выдаёт код. Iris является local-first: всё хранится в SQLite на диске. Исходящий HTTP происходит только там, где вы даёте согласие — собственный ключ LLM-judge, загрузка цитат или настроенный вами экспортёр OpenTelemetry. Проект поддерживает развёртывание в Docker с двумя портами (3000 для MCP HTTP-транспорта, 6920 для панели и приёма данных) и интегрируется с Claude Desktop, Claude Code, Cursor, Windsurf, Continue, VS Code, Cline, Zed, Codex CLI, Gemini CLI и любым другим MCP-совместимым агентом.