← На главную

Джейми Бич: 8-строчный агент на Common Lisp сам пишет функции

07.07.2026 21:21 · hackernews

Джейми Бич, который 25 лет назад учился на курсе AI в Университете Гуэлфа и запомнил только Lisp, решил проверить, пригодится ли этот язык для современных агентов. Оказалось — вполне. Он написал агентский цикл на Common Lisp в 8 строк. Всё работает на SBCL с двумя библиотеками: dexador для HTTP и shasht для JSON. Запускается через OpenRouter.

Агент — это рекурсивная функция. Получает список сообщений, отправляет модели. Если модель просит инструмент — выполняет и рекурсивно вызывает себя с дополненным списком. Базовый случай: модель отвечает словами.

Главная фишка — Lisp homoiconic: код и данные — одно и то же. Поэтому Бич дал агенту всего один инструмент — lisp-eval. Тот принимает строку с Lisp-формой, читает, выполняет и возвращает результат. Модель сама пишет нужные функции. Например, для 30-го числа Фибоначчи она не вспомнила ответ, а написала рекурсивный fibonacci и вызвала его.

Память реализована без внешних баз: агент просто сохраняет весь список сообщений в JSON-файл (через shasht) и читает его при новом запуске. Никаких схем, миграций, pgvector. Недостаток — бесконечный рост контекста, но автор предлагает сжимать историю через вызов модели для саммари.

Самое интересное: когда Бич вставил ключ Brave Search API в диалог, модель сама написала функцию brave-search, используя dexador и shasht для парсинга ответа. Она не ждала готового инструмента — она создала его на лету, через eval. Функция живёт только в памяти Lisp-процесса, но её исходный код остаётся в истории. При новом запуске агент перечитывает свои же сообщения и восстанавливает функцию — способности хранятся как воспоминания.

Такой подход переворачивает обычную логику фиксированного каталога инструментов (как в MCP или Agent Foundry). Модель сама решает, какой инструмент ей нужен, и пишет его. Единственный ограничитель — песочница (весь код выполняется в Docker). Полный исходник и Dockerfile — на GitHub: https://github.com/jamiebeach/lisp-agent.

Читать оригинал →