Skip to content

mickleburg/tfl-solver

v1.0.0Apache-2.0

Solve and explain formal-language theory tasks and build standalone laboratory projects.

tfl-solver

Агент и набор Python-оракулов для задач по теории формальных языков: РК, лабораторных и экзамена курса ИУ9 МГТУ.

Агент получает полное условие текстом или фотографией, сам определяет класс задачи, подбирает рецепт и проверяет содержательные гипотезы исполняемыми оракулами. Номер варианта для запуска не требуется.

Основные сценарии — быстрые объяснения любой теории ТФЯ, проверяемые решения задач, предварительная подготовка к контролю и создание законченных проектов лабораторных. На РК и экзамене агент использоваться не предполагается: он помогает заранее научиться решать и объяснять самостоятельно.

Форма контроля 2026 года описана в docs/COURSE-2026.md: четыре лабораторные с обязательным раскрытием использования ИИ, карточки РК под таймер и экзаменационный поиск ошибки в готовом ИИ-решении. Big Pharma в текущем курсе нет; её старые задачи сохранены только как регрессии.

Установка плагина из GitHub

Репозиторий одновременно является плагином для Codex и Claude Code. Отдельно копировать skill-файлы или запускать tfl setup не требуется.

Codex CLI:

codex plugin marketplace add Mickleburg/tfl-solver
codex plugin add tfl-solver@tfl-solver-marketplace

В новой сессии используй $tfl <запрос> или сформулируй задачу обычным языком: skill допускает автоматический выбор.

Claude Code:

/plugin marketplace add Mickleburg/tfl-solver
/plugin install tfl-solver@tfl-solver-marketplace

После перезапуска вызови /tfl-solver:tfl <запрос>. Claude Code добавляет к командам плагина пространство имён, поэтому это имя намеренно длиннее /tfl.

Для объяснений и работы с текстовым корпусом достаточно установленного плагина. Исполняемые оракулы и создание проектов ЛР требуют Python 3.11+; в каталоге плагина агент запускает их через scripts/tfl_plugin.py. Полная инструкция, обновление, локальная установка и перенос CLI — в docs/INSTALLATION.md.

Для разработки самого проекта:

git clone https://github.com/Mickleburg/tfl-solver.git
cd tfl-solver
py -3 -m pip install -e ".[dev]"

Старый вариант с pip и tfl setup сохранён: он устанавливает самостоятельную CLI, ненеймспейсную команду Claude Code /tfl, Codex skill $tfl-solver и prompt /prompts:tfl.

Детерминированная командная строка

tfl doctor
tfl intake --file task.txt
tfl intake --text "Проверить завершимость SRS ..." --hint ЛР
tfl srs critical-pairs --rule "aab -> ba" --rule "aaa -> ab"
tfl srs critical-pairs --file system.srs --format json
tfl lab init path/to/lab --file task.txt
tfl lab check path/to/lab
tfl eval
tfl holdout list

lab init создаёт неперезаписываемую заготовку с условием, кодом, unittest и отчётом. lab check не принимает оставшиеся заглушки, сторонние импорты, файлы зависимостей или упавшие/пропущенные тесты. Готовый проект использует только Python 3.11+ и стандартную библиотеку; tfl-solver остаётся оракулом разработки, а не зависимостью сдаваемого решения. Полный контракт — docs/LAB-PROJECT-STANDARD.md.

Для коротких вопросов действует отдельный docs/THEORY-ANSWER-STANDARD.md: прямой ответ, точное определение, минимальный пример и граница применимости без ненужного запуска всего корпуса.

Если tfl не найден в PATH, из клона или распакованного плагина используй py -3 scripts/tfl_plugin.py <команда>; из установленного Python-пакета — py -3 -m tfl <команда>. Старое имя tfl-agent сохранено для совместимости. Командная строка выполняет диагностику, классификацию и eval; рассуждающий цикл выполняет LLM по repo-skill.

Сквозная оценка агента

Обычный eval проверяет отдельные Python-оракулы. Замороженный holdout проверяет весь маршрут агента на задачах 2021–2025 и читает реальные события запуска инструментов Codex CLI или Claude Code:

py -3 -m tfl holdout run `
  --runner codex `
  --case exam-2024-b15-q1 `
  --output reports/agent-holdout/codex-exam-smoke.jsonl

py -3 -m tfl holdout score `
  --input reports/agent-holdout/codex-exam-smoke.jsonl `
  --report reports/agent-holdout/codex-exam-smoke.md

--runner codex (по умолчанию) запускает случай в read-only sandbox. --runner claude использует non-interactive stream-json, отключает сохранение сессии и оставляет только skill, чтение, поиск и Python-команды. Оба backend'а требуют установленный и аутентифицированный CLI и запрашивают итог по одной JSON Schema. Полный набор вызывается только явным --all, поскольку это реальные LLM-запуски. Контракты сверены с официальной документацией Codex и Claude Code.

Устройство

  • skills/tfl/SKILL.md — единый канонический цикл решения для обоих клиентов;
  • plugin.json, .codex-plugin/, .claude-plugin/ — переносимые манифесты;
  • .agents/plugins/marketplace.json — каталог установки Codex;
  • tfl/ — проверяющие оракулы;
  • docs/recipes/ — рецепты 18 содержательных классов задач;
  • corpus/txt/ — версионируемое текстовое зеркало официальных источников;
  • corpus/knowledge/ — обезличенные вопросы, методы и типовые ошибки;
  • evals/ — исполняемая оценка покрытия;
  • evals/agent_holdout/ — замороженные задачи и контракт сквозного eval;
  • docs/COURSE-2026.md — актуальная форма контроля и неизвестные детали;
  • docs/LAB-PROJECT-STANDARD.md — автономный код, тесты и описание ЛР;
  • docs/LAB-AI-DISCLOSURE.md — обязательный раздел лабораторного отчёта;
  • docs/THEORY-ANSWER-STANDARD.md — быстрые и проверяемые объяснения теории;
  • docs/INSTALLATION.md — установка из GitHub и глобальные команды клиентов;
  • docs/PROJECT-STATE.md — единое актуальное состояние;
  • docs/OPEN-GAPS.md — незакрытые задачи;
  • references/ — локальные исходные материалы, не входящие в Git.

Официальные материалы курса считаются первоисточником. Вторичные заметки используются только как гипотезы и тестовые данные и проверяются независимо. Текстовые зеркала и производные конспекты официальных материалов сохраняют лицензию CC BY-SA 4.0; точная область действия, ссылка на источник и описание изменений приведены в THIRD_PARTY_NOTICES.md.