LLM Butler - это учебный C++20 CLI-проект, с которого начинается разработка будущего local-first runtime manager для LLM backend'ов.
Сейчас это ранний V0-скелет:
- проект собирается в один CLI-бинарь;
- поддерживает базовые команды
help,init,status; initсоздаёт базовую структуру каталогов в~/Butlerи безопасно работает при повторном запуске;statusтолько проверяет состояние workspace и не меняет файловую систему.
butler helpиbutler --helpпоказывают справку по доступным командам.butler initсоздаёт~/Butlerи базовые подпапкиlogs,artifacts,runtime.- повторный
butler initне считается ошибкой, если директории уже существуют. butler statusпроверяетroot,logs,artifacts,runtimeи сообщает итог:Butler is initializedилиButler is not initialized.- неизвестная команда возвращает ошибку и подсказывает вызвать help.
cmake -S . -B build
cmake --build buildПосле сборки бинарь будет доступен как build/butler.
ctest --test-dir build --output-on-failure# нужно еще заранее установить библиотеку <nlohmann/json.hpp>
# т.к она не является дефолтной в с++, на arch linux делается следующим образом
# sudo pacman -S nlohmann-json
mkdir -p build
g++ -std=c++20 apps/cli/main.cpp src/cli/commands.cpp src/fs/filesystem.cpp src/fs/filesystem_ops.cpp src/fs/app_paths.cpp src/fs/butler_config.cpp -Iinclude -o build/butler./build/butler
./build/butler --help
./build/butler help
./build/butler init
./build/butler status
./build/butler abracadabra- создаёт директории
~/Butler,~/Butler/logs,~/Butler/artifacts,~/Butler/runtime; - печатает отдельные сообщения для созданных или уже существующих директорий;
- завершает работу сообщением
Butler is initialized, только если все обязательные директории в корректном состоянии.
- печатает путь до workspace Butler;
- сообщает статус каждой обязательной директории;
- не создаёт и не исправляет каталоги;
- завершает работу сообщением
Butler is initializedилиButler is not initialized.
apps/cli/main.cpp # точка входа CLI
include/butler/cli/commands.hpp # объявления CLI-команд
include/butler/fs/app_paths.hpp # пути приложения Butler
include/butler/fs/filesystem.hpp # файловые утилиты и базовый root path Butler
include/butler/fs/filesystem_ops.hpp # операции с директориями Butler
src/cli/commands.cpp # реализация CLI-команд
src/fs/app_paths.cpp # реализация путей приложения
src/fs/filesystem.cpp # реализация базовых файловых утилит
src/fs/filesystem_ops.cpp # реализация операций с директориями Butler
CMakeLists.txt # конфигурация сборки через CMake