Песочница

Использование Лиспекса с AI-ассистентом

Подключите локальный MCP-сервер, выполните правило Лиспекса и прочитайте результат и диагностику.

Подключение локального сервера

Установите исполняемый файл Native со страницы загрузок. Проверьте версию в терминале.

SH
lispex --version

Вывод показывает точную установленную версию. Сравните её с версией загруженного файла.

Команда завершается с кодом 0. Используйте ассистента с поддержкой локальных MCP-серверов. MCP — протокол, по которому приложение получает список инструментов и вызывает их.

Добавьте эту запись в настройки MCP вашего приложения. Приложение запускает lispex mcp serve и обменивается сообщениями через стандартный ввод и вывод, которые также называют stdio.

JSON
{
  "mcpServers": {
    "lispex": {
      "command": "lispex",
      "args": ["mcp", "serve"]
    }
  }
}

Если приложение не находит lispex, укажите в command абсолютный путь к установленному исполняемому файлу. В Windows путь в JSON можно записать с прямыми слешами, например D:/Tools/lispex.exe. Укажите своё место установки.

Переподключите сервер в приложении. Станут доступны четыре инструмента.

ИнструментЧто можно сделать
lispex_referenceНайти формы, процедуры, синтаксис исходника, профили ресурсов и способы выполнения
lispex_evalВыполнить проверенный исходник и прочитать значения, вывод и диагностику
lispex_diagnosticНайти описание кода диагностики и причину его появления
lispex_compare_routesСравнить результаты выбранного набора реализаций среды выполнения

Выполнение правила одобрения

Попросите ассистента использовать подключённые инструменты.

Проверь форму if в Лиспексе. Напиши правило, которое возвращает approve при вводе не меньше 10 и review в остальных случаях. Выполни его с вводом 12 и покажи результат инструмента.

Следующие блоки JSON содержат аргументы инструментов, а не команды терминала. Сначала вызовите lispex_reference.

JSON
{
  "topic": "forms",
  "name": "if"
}

В ответе поле structuredContent.result.known равно true. Запись содержит форму (if test consequent alternate). Обе ветви обязательны. Только #f считается ложным значением.

Затем вызовите lispex_eval, передав полную программу и ввод.

JSON
{
  "source": "(if (>= input 10) 'approve 'review)",
  "input": "12"
}

Строка source содержит всю программу, поэтому отдельный файл исходника не нужен. Строка input содержит одно значение данных Лиспекса. Сервер делает это значение доступным программе под именем input.

Ниже приведены выбранные поля из structuredContent ответа.

JSON
{
  "status": "ok",
  "values": ["approve"],
  "stdout": "approve\n",
  "diagnostics": [],
  "warnings": [],
  "exit_status": 0
}

Правило вернуло символ approve. Массив values содержит его печатное представление. Этот инструмент также записывает значение верхнего уровня в stdout; \n означает перевод строки. Вычисление завершилось с кодом 0, а сервер ждёт следующего запроса. Этот вызов не создаёт файл результата.

Замените аргумент ввода на "9". Результат станет ["review"], а stdout будет содержать "review\n". Код успешного завершения останется прежним.

Если в ответе есть диагностика, найдите её код через lispex_diagnostic. Например, {"code": "E302"} объясняет неверное число аргументов. Исправьте исходник и выполните его снова. Полный запрос и выдержка из ответа приведены в справочнике MCP.

Сравнение встроенных реализаций

Вызовите lispex_compare_routes с такими аргументами.

JSON
{
  "court": "tree-rust",
  "source": "(+ input 1)",
  "input": "41"
}

Поле court выбирает сравнение. tree-rust запускает интерпретатор Лиспекса и ВМ Лиспекса. Интерпретатор вычисляет формы исходника; виртуальная машина выполняет скомпилированные инструкции.

Ответ содержит следующие поля в structuredContent.

JSON
{
  "court": "tree-rust",
  "status": "completed",
  "required_routes": ["tree", "rust-vm"],
  "agreement": true,
  "partial_comparison": false,
  "answer_selected": false
}

Обе записи в observations содержат ["42"] в semantic.values и "42\n" в semantic.stdout. Поле agreement показывает, совпадают ли результаты и наблюдения за ресурсами согласно правилам сравнения.

Другие значения court из схемы инструмента описаны в справочнике MCP.

Данные, лимиты и разрешения приложения

Используйте эти инструменты при написании программ, исходник которых вы проверили. Один запрос принимает до 65 536 байт исходника и 16 384 байт ввода. На вычисление отведено 5 секунд, размер результата — до 1 МиБ. Профиль ресурсов также задаёт лимиты сравнения и описывает результаты при сбоях. Для правил приложения от недоверенных пользователей используйте вычислитель с управлением ресурсами.

Программа обрабатывает переданные данные операциями Лиспекса. Сервер возвращает хеш исходника, результат, вывод и диагностику. По завершении запроса он освобождает его данные. К тексту, введённому в ассистент, применяется политика данных этого приложения.

Вызывающее приложение управляет доступом к инструментам и внешними действиями. Например, approve — ответ правила. Приложение решает, выполнять ли действие по этому ответу и какие разрешения для него нужны. Для подписанной записи решения используйте Ваучер Лиспекса. Он добавляет аутентификацию издателя, привязку к запросу и повторное выполнение. Принимающее приложение затем применяет свои правила допуска.

Закончив работу, отключите MCP-сервер в приложении. Закрытие соединения stdio завершает локальный процесс и освобождает состояние запроса.

Справочник MCP · Путь обучения