Минималистичный агент для программирования без интерфейса: статический бинарный файл на Go размером 7 МБ, имеющий всего четыре инструмента — чтение файлов, запись файлов, замена и выполнение команд. Он считывает задачи из стандартного ввода и записывает результаты в стандартный вывод, что делает его удобным для использования в shell-конвейерах, CI и контейнерах. При каждом вызове отправляется полная история диалога, без сжатия и усечения.
Звёзды: 572 (+295 / 24 ч)
Причины
- Основной принцип — «не терять контекст незаметно»: не выполняется суммаризация, усечение или использование скользящего окна; содержимое файлов и вывод команд передаются модели целиком. Если провайдер модели обрезает вывод, программа завершается с ошибкой, а не считает неполный ответ успешным.
- Совместимость с любым интерфейсом Chat Completions, совместимым с OpenAI, включая локальный Ollama (автор проводил дымовое тестирование с qwen3:8b). Есть опциональное продолжение работы через файлы сессий в формате JSONL и вывод структурированных событий с помощью флага --json. Реализация занимает 837 строк на Go, что облегчает модификацию.
Использование
- Скачайте бинарный файл для вашей платформы из раздела Releases (прилагается контрольная сумма SHA-256) или выполните go install github.com/Balanov/uncut/cmd/uncut@latest (требуется Go 1.26+).
- Установите переменные UNCUT_API_KEY и UNCUT_MODEL (при использовании OpenRouter и подобных сервисов также установите UNCUT_BASE_URL), затем выполните: uncut "Inspect this repository and fix the failing tests". Также можно использовать конвейер: git diff | uncut "Review this diff. Do not edit files."
Риски
- Автор прямо указывает, что это не песочница: модель может выполнять произвольные shell-команды с правами вашего пользователя, без запросов на подтверждение. Недоверенные задачи следует запускать в одноразовых контейнерах. Файлы сессий могут содержать исходный код и секреты.
- При каждом вызове отправляется полная история диалога, поэтому расходы на токены для длительных задач быстро растут. При превышении контекстного окна происходит сбой. Поддержка изображений отсутствует. Бинарный файл не подписан. Репозиторий новый (создан 1 11), количество звёзд растёт быстро, на сайте указано «наблюдать». README выглядит как описание обычного инструмента разработки. Лицензия MIT.