EnglishРусский Map

cli-anything

title
cli-anything
type
toolbox
summary
Плагин для Claude Code, создающий полноценный Python CLI и SKILL.md для настоящего бэкенда любого GUI-приложения
tags
python, agent, cli, skills, claude-code, codegen
language
Python
license
Apache-2.0
created
2026-05-03
updated
2026-05-03
lang
ru
translation_of
cli-anything
source_updated
2026-05-03
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

CLI-Anything - плагин для Claude Code от HKUDS (с параллельной установкой для Pi, OpenClaw, OpenCode, Codex, Goose, Qodercli, GitHub Copilot CLI), который принимает путь к файлам или GitHub URL любого GUI-приложения и генерирует для него полноценный CLI на Python с использованием Click: вызов /cli-anything ./gimp запускает конвейер из 7 этапов, завершающийся pip install -e . и появлением cli-anything-gimp в PATH. Позиционирование в README сформулировано так: "Today's software serves humans. Tomorrow's users will be agents" ("Современный софт служит людям. Пользователями завтрашнего дня станут агенты"). Идея в том, что автоматизация GUI, RPA по скриншотам и кликам, а также урезанные SaaS API не дают агенту настоящих возможностей профессионального софта; правильный подход - сгенерированный CLI, обращающийся напрямую к реальному бэкенду (bpy для Blender, melt для Shotcut/Kdenlive, sox для Audacity, headless LO для LibreOffice) без каких-либо игрушечных реимплементаций.

Как это устроено

Вся методология описана в одном документе - cli-anything-plugin/HARNESS.md, который каждая агентская интеграция загружает в качестве skill'а. Семь этапов:

  1. Codebase analysis (анализ кодовой базы) - найти движок бэкенда (когда GUI выступает тонкой обёрткой над библиотекой), сопоставить действия в интерфейсе с вызовами API, определить формат файлов проекта, каталогизировать систему команд и отмены действий (undo).
  2. CLI architecture design (проектирование архитектуры CLI) - выбрать между stateful REPL и CLI с подкомандами (по умолчанию реализуются оба варианта), разбить группы команд по логическим доменам приложения (проект, базовые операции, импорт/экспорт, конфигурация, сессии), спроектировать модель состояния в JSON, заложить вывод как в --json, так и в человекочитаемом виде.
  3. Implementation (реализация) - начать со слоя данных, добавить команды зондирования (probe) перед мутациями, собрать utils/<software>_backend.py, оборачивающий реальный CLI программы, добавить управление сессиями с блокировкой файлов и объединить всё в единый REPL через общий repl_skin.py. Click-группа настраивается с параметром invoke_without_command=True, поэтому cli-anything-gimp без аргументов сразу запускает REPL.
  4. Test plan (план тестирования) - подготовить TEST.md со списком запланированных файлов тестов, перечнем модульных тестов, сквозными (E2E) сценариями и свойствами выходных данных, которые проверяет каждый E2E-тест. Этот файл обязателен до написания кода тестов.
  5. Test implementation (реализация тестов) - модульные тесты с синтетическими данными, E2E-тесты с вызовом реального бэкенда программы (никаких мягких пропусков при отсутствии программы - тесты должны падать), верификация результатов по сигнатурам (magic bytes), структуре ZIP, попиксельному анализу или уровням RMS, а также тесты через подпроцессы к установленному CLI.
  6. Documentation (документация) - обновить TEST.md с учётом результатов, сгенерировать SKILL.md (этап 6.5) на основе декораторов Click, setup.py и README с помощью skill_generator.py.
  7. Publish (публикация) - сформировать setup.py, выполнить pip install -e ., после чего бинарник оказывается в PATH.

Команда /cli-anything:refine ./gimp [focus] выполняет gap-анализ между всеми возможностями программы и текущим покрытием CLI, а затем инкрементально дописывает новые команды - без деструктивных изменений и с возможностью повторного запуска сколько угодно раз.

Два артефакта на обвязку: бинарник CLI + SKILL.md

Каждая сгенерированная обвязка поставляет канонический SKILL.md по пути skills/cli-anything-<software>/SKILL.md (монорепозиторий можно подключать через npx skills add HKUDS/CLI-Anything --skill <name>) и упакованную копию для совместимости в cli_anything/<software>/skills/SKILL.md. Баннер REPL выводит абсолютный путь к skill'у, чтобы управляющий им агент мог его прочитать.

Именно этот паттерн описан в mcp-vs-skills: бинарник CLI даёт возможность (с корректной авторизацией, реальным бэкендом, структурированным выводом в JSON), а SKILL.md - знание (как этим пользоваться, нюансы параметров, формат вывода). CLI-Anything генерирует обе части одновременно. Это не контрпример к аргументации Мола, а рабочий пример гибридного паттерна, где в роли "сервиса" выступает локальный подпроцесс, а SKILL.md объясняет агенту, как им управлять.

Обратная сторона: сгенерированный CLI остаётся локальным бинарником, а не удалённым сервером MCP. Переносимости в окружения без вычислений (мобильный Claude, веб-версия ChatGPT) здесь нет - агенту нужен доступ к командной оболочке. CLI-Anything явно ориентирован только на среды с поддержкой вычислений (flue, Claude Code, Pi, pi-coding-agent, OpenClaw, Codex).

CLI-Hub: каталог и мета-skill

Команда pip install cli-anything-hub устанавливает пакетный менеджер (cli-hub install <name> / update / uninstall), опирающийся на public_registry.json. Источниками служат pip, npm, brew и встроенные инструменты, так что это не просто обёртка над обвязками из репозитория. Веб-интерфейс на clianything.cc позволяет просматривать как CLI-Anything CLIs (обвязки, сгенерированные внутри проекта), так и Public CLIs (сторонние инструменты под их кураторством).

Наиболее интересная деталь - мета-skill: отдельный skill, который агент устанавливает один раз; он указывает на актуальный каталог (reeceyang.sgp1.cdn.digitaloceanspaces.com/SKILL.md) со списком всех доступных CLI и однострочными командами установки. Агент читает мета-skill, выбирает подходящий для задачи CLI, выполняет установку и затем изучает собственный SKILL.md этого инструмента. Каталог обновляется автоматически при любом изменении registry.json: новые созданные сообществом CLI становятся доступны без повторной публикации мета-skill'а. Благодаря этому каталог открыт для обнаружения самими агентами, а не только людьми.

Покрытие и заявления о тестировании

В README перечислено 18 демонстрационных приложений с 2269 успешно проходящими тестами по состоянию на апрель-май 2026 года: GIMP (107), Blender (208), Inkscape (202), Audacity (161), LibreOffice (158), OBS Studio (153), Kdenlive (155), Shotcut (154), а также FreeCAD (258 команд), QGIS, Godot, Krita, Draw.io, Mermaid, Excalidraw, RenderDoc, MuseScore, Zotero, Obsidian, n8n, WireMock, Exa, VideoCaptioner, ComfyUI, Stable Diffusion WebUI, AnythingLLM, Slay the Spire II и другие. Правило "тесты должны падать, а не пропускаться" принципиально важно: именно так подтверждается утверждение о работе с настоящим бэкендом.

Доступны реальные демо-видео (FreeCAD собирает марсоход в духе Curiosity, Blender моделирует орбитальный дрон-ретранслятор, Draw.io рисует диаграмму рукопожатия HTTPS, агент играет в Slay the Spire II). В демо используется связка preview + preview live + trajectory.json, благодаря чему человек может наблюдать за изменением состояния в реальном времени во время работы агента. Воспроизведение траектории встроено в саму обвязку, а не сделано одноразовой бутафорией для демо.

Ограничения

  • Только Python ≥3.10. Нет поддержки обвязок на Go/Rust/Node; плагин рассчитан на Click + setup.py.
  • Требуется локальная установка целевого софта. Вспомогательные функции find_<software> в utils/<software>_backend.py выбрасывают RuntimeError с инструкциями по установке, но сами ничего не ставят: агентам нужно уметь запускать apt/brew/winget самостоятельно.
  • Качество генерации зависит от понятности кодовой базы. Семиэтапный пайплайн исходит из того, что GUI - это тонкая обёртка над библиотекой с понятным набором команд/API. Приложения с плотно связанной логикой интерфейса, закрытыми проприетарными бэкендами или без возможности скриптинга дадут поверхностные обвязки (или завершатся ошибкой уже на этапе 1).
  • Состояние stateful REPL хранится в JSON-файлах на диске. Нескольким агентам, одновременно работающим с одной обвязкой, приходится координироваться через блокировку файлов: режим демона в обвязке не предусмотрен.
  • Совместимость с Windows по остаточному принципу. Некоторым CLI требуется cygpath (Git for Windows или WSL); в README описаны специфические обходные пути для Claude Code под Windows.

Сценарии, где инструмент действительно к месту

  • Агент, которому нужно полностью отрендерить 3D-сцену через bpy без накладных расходов на GUI.
  • Конвейер в CI: LibreOffice -> PDF / DOCX / XLSX / PPTX на основе контента, сгенерированного агентом.
  • Производство аудио, где агент объединяет Audacity + sox без RPA по скриншотам.
  • Создание клиентских сценариев под управлением агентов поверх опенсорсных аналогов SaaS (NextCloud, Mattermost, Plane, n8n) без необходимости писать 50 обёрток для REST API.
  • Синтез задач для бенчмарков GUI-агентов: когда CLI готов, можно генерировать валидаторы и траектории прямо в коде, не записывая сессии интерфейса.

Звёзды и лицензия

github.com/HKUDS/CLI-Anything - 33 258★, Apache-2.0, основной язык Python, создан 2026-03-08, последний коммит 2026-05-02. HKUDS - лаборатория Data Science Гонконгского университета (HKU); исследовательская группа, создавшая LightRAG и другие инструменты для агентов. Активный поток правок от сообщества с принятыми CLI от сторонних авторов (@TianyuFan0504, @WEIFENG2333, @zhangxilong-43 и др.) - разработка не замкнута на одного вендора.