Дата публикации
coding

llm-coding-agent 0.1a0: простой Python-агент, который сам пишет и чинит код

Что нового

Simon Willison выкатил первую «грязную» альфу llm-coding-agent 0.1a0 — это отдельная Python-библиотека, построенная на его фреймворке llm, который сейчас больше похож на агентную платформу.

Главное:

  • Новый агент llm code для автоматизации рутинной разработки.
  • Пакет уже доступен на PyPI как slop-alpha (0.1a0).
  • Агент умеет читать, искать, редактировать и создавать файлы, а также запускать shell-команды.
  • Есть и CLI, и Python API.
  • В README заложены готовые «рецепты» вроде llm code --yolo и более безопасные сценарии с whitelisting команд.
  • В Python API используется класс CodingAgent(model="gpt-5.5", root="/path", approve=True).run("Fix the failing test in tests/test_parser.py").

Цифр по скорости, цене токена или размеру контекста автор не приводит: акцент на функциональности и рабочем прототипе.

Как это работает

llm-coding-agent — это надстройка над библиотекой llm, которая превращает LLM в «кодового агента» с инструментами. Агент получает доступ к файловой системе проекта и shell, но все операции идут через ограниченный набор инструментов.

Набор инструментов, которые библиотека регистрирует внутри llm:

  • Редактирование файлов

    CodingTools_edit_file(path: str, old_string: str, new_string: str, replace_all: bool = False) -> str
    

    Агент заменяет точное вхождение строки в файле. old_string должен совпадать с содержимым байт-в-байт (включая пробелы и переносы). Если replace_all=False, строка должна встречаться единожды. Возвращается diff, чтобы человек мог проверить изменения.

  • Запуск команд

    CodingTools_execute_command(command: str, timeout: int = 120) -> str
    

    Агент запускает shell-команду в корне сессии. Возвращает stdout и stderr, а в конце добавляет строку с кодом выхода. Таймаут в секундах, максимум 600. При превышении таймаута процесс и его дочерние процессы убиваются.

  • Список файлов

    CodingTools_list_files(pattern: str = '**/*', path: str = '.') -> str
    

    Агент выводит список файлов по glob-шаблону, отсортированный по времени изменения (новые сверху). Пропускает скрытые директории, node_modules, __pycache__ и всё, что игнорирует .gitignore. Максимум 200 путей, относительных к указанной директории.

  • Чтение файлов

    CodingTools_read_file(path: str, offset: int = 0, limit: int = 2000) -> str
    

    Агент читает текстовый файл и возвращает его с нумерацией строк в стиле cat -n. Пути — относительно корня сессии. offset — номер первой строки (0-базный), limit — максимум строк за раз. Это позволяет постранично читать большие файлы.

  • Поиск по содержимому

    CodingTools_search_files(pattern: str, path: str = '.', glob: str = None, max_results: int = 100) -> str
    

    Агент ищет регулярное выражение по содержимому файлов. Формат результата: path:line_number:line. Не больше max_results совпадений. Параметр glob (например, "*.py") сужает поиск до нужных типов файлов.

  • Запись файлов

    CodingTools_write_file(path: str, content: str) -> str
    

    Агент создаёт или перезаписывает файл указанным содержимым. Недостающие директории создаются автоматически. Для изменения существующих файлов автор рекомендует использовать edit_file, чтобы сохранять контроль через diff.

Сам проект автор запустил через свой шаблон python-lib-template-repository, а затем отдал разработку самому агенту Fable (Claude Code / Claude Mythos). Сначала агент написал spec.md с требованиями, затем выполнил серию TDD-коммитов: красный/зелёный цикл тестов, обновлённая документация и периодические ручные проверки через OpenAI API-ключ в окружении.

Что это значит для вас

llm-coding-agent — это инструмент для разработчиков, которые уже используют LLM в работе и хотят меньше переключаться между IDE, терминалом и браузером.

Где полезно:

  • Рефакторинг и поддержка кода

    • «Почини упавший тест» в духе:
      CodingAgent(
          model="gpt-5.5",
          root="/path",
          approve=True
      ).run("Fix the failing test in tests/test_parser.py")
      
    • Агент сам найдёт тест, прочитает связанный код, предложит правки и покажет diff.
  • Навигация по незнакомому репозиторию

    • Быстрое сканирование структуры проекта через list_files.
    • Поиск нужных участков кода по регуляркам с search_files.
  • Рутинные правки

    • Массовая замена строк с контролем через diff.
    • Генерация новых файлов (конфиги, шаблоны, тесты) через write_file.
  • Полуавтоматический TDD

    • Агент может запускать команды вроде pytest, анализировать вывод и предлагать точечные исправления.

Где лучше не полагаться на него вслепую:

  • Безопасность: агент умеет выполнять shell-команды и писать файлы. Нужен строгий контроль контекста, прав и команд.
  • Критичные системы: для инфраструктуры продакшена и финансовых систем лучше использовать его как помощника, а не как автономного исполнителя.
  • Проекты без тестов: агенту тяжело оценивать, что он не сломал, если нет автоматической проверки.

Доступность:

  • Пакет лежит на PyPI, так что его можно поставить из любой страны, где работает PyPI.
  • Для работы нужен LLM-доступ (например, через OpenAI или Anthropic). Если выбранный провайдер блокирует Россию, придётся использовать VPN и обходные способы оплаты.

Место на рынке

llm-coding-agent ближе всего к «тонкому» кодовому агенту, который вы можете встроить в свой рабочий процесс. Это не IDE-плагин вроде GitHub Copilot, а Python-библиотека и CLI, которые вы контролируете сами.

По сравнению с крупными hosted-решениями:

  • Он не привязан к конкретному облаку — вы сами выбираете модель (в README пример с gpt-5.5).
  • Весь контекст работы — файлы, команды, diff — остаётся в вашей среде, а агент ходит к LLM только за рассуждениями.
  • Управление инструментами явно описано: вы точно знаете, какие операции доступны агенту.

Прямых числовых сравнений с Copilot, Cursor или Claude Code автор не приводит. Фокус на том, что это лёгкий, прозрачный агент поверх уже существующей llm-библиотеки, а не конкурирующий монолитный продукт.

Установка

Пакет уже опубликован на PyPI как альфа-версия. Автор использует инструмент uv для запуска:

uvx --prerelease=allow --with llm-coding-agent llm code

Ключи здесь важны:

  • --prerelease=allow — разрешает ставить альфа-версию пакета.
  • --with llm-coding-agent — подтягивает нужный пакет.
  • llm code — запускает сам кодовый агент внутри экосистемы llm.

Перед запуском нужно:

  1. Установить и настроить uv.
  2. Установить базовую библиотеку llm (нужна последняя alpha с PyPI).
  3. Прописать в окружении ключи доступа к выбранной LLM (например, переменную OPENAI_API_KEY).

Как запустить

CLI-сценарии

Автор приводит несколько «рецептов» в README, написанном агентом Fable. Среди них:

  • Агрессивный автопилот:

    llm code --yolo
    

    Подразумевается, что агенту дают больше свободы для правок и команд. Использовать стоит только в изолированных ветках или тестовых репозиториях.

  • Более безопасный режим с whitelisting команд:

    llm code --allow "pytest*" --allow "git diff*"
    

    В этом случае агент может запускать только команды, которые подходят под шаблоны "pytest*" и "git diff*". Это сильно снижает риск неожиданных действий.

Python API

Пример из README, который агент добавил сам:

from llm_coding_agent import CodingAgent

agent = CodingAgent(
    model="gpt-5.5",
    root="/path",
    approve=True,
)

agent.run("Fix the failing test in tests/test_parser.py")

Ключевые параметры:

  • model="gpt-5.5" — конкретная LLM, через которую идёт вся логика.
  • root="/path" — корень проекта, в котором агент может читать и менять файлы.
  • approve=True — режим, при котором агент может применять изменения без дополнительного подтверждения (используйте осторожно).

Дальше вы можете строить поверх этого свои сценарии: автопочинка тестов, полуавтоматический рефакторинг, миграции и т.п. Главное — держать под контролем права на запись и список разрешённых команд.

Кому это особенно зайдёт

  • Python‑разработчикам, которые уже работают с LLM и хотят собрать своего «локального Copilot-агента» под свои правила.
  • Тем, кто любит TDD и хочет, чтобы агент сам проходил цикл: упавший тест → правка → зелёный тест.
  • Авторам библиотек и CLI, которые хотят быстро накидывать прототипы и сразу снабжать их тестами и документацией.

Если вы предпочитаете готовые IDE-плагины и не хотите возиться с Python-окружением, llm-coding-agent может показаться излишне ручным. Но если вам важен контроль над тем, какие файлы и команды доступны LLM, этот агент даёт именно такой уровень управления.


Читайте также