UNCUT CLI
Агент для кода без интерфейса в одном бинарнике на Go: читает и правит файлы, запускает команды и не обрезает контекст молча
- 609 ★ репозитория
- Последний коммит
- MIT
Широкий доступ
Почему такой уровень
- Модель выполняет команды оболочки с правами вашего пользователя, окон подтверждения нет
- Файловые инструменты записывают и заменяют файлы в рабочем каталоге
- Файл сессии хранит исходный код, вывод команд и возможные секреты
Установка
В терминале, через SkillFoxx CLI
npx skillfoxx add cli/uncutОпределит агенты на машине, покажет уровень доступа и зафиксирует версию.
Другие способы установки
Доступ и проверки
Как мы проверяемШирокий доступИнструмент может менять данные, выполнять команды или работать с секретами.
- Модель выполняет команды оболочки с правами вашего пользователя, окон подтверждения нет
- Файловые инструменты записывают и заменяют файлы в рабочем каталоге
- Файл сессии хранит исходный код, вывод команд и возможные секреты
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
UNCUT — агент для работы с кодом из командной строки: статический бинарник на Go без интерфейса, телеметрии и плагинов. У него четыре инструмента: `read_file`, `write_file`, `replace` и `run_command`. Задачу передают аргументом, а лог или `git diff` подают через конвейер: `git diff | uncut "Review this diff. Do not edit files."`. Модели при каждом вызове уходит вся переписка целиком. Содержимое файлов и объединенный вывод команд агент не обрезает и не сжимает. Если провайдер оборвал ответ на лимите токенов, агент завершается с кодом 3 и неполный текст за успех не выдает. Без итогового ответа за 32 шага (значение `--max-steps` по умолчанию) работа заканчивается кодом 4. Модель подключается через любой OpenAI-совместимый эндпоинт Chat Completions, в том числе локальный: связку с Ollama автор проверил на `qwen3:8b`. Флаг `--json` выводит события в формате NDJSON, а `--session файл.jsonl` дописывает историю в файл и продолжает работу с того же места.
Для кого. Разработчикам, которые запускают агента в CI-джобах, контейнерах и shell-скриптах и хотят видеть весь контекст без скрытых сокращений.
Подходит, если
- Лог упавших тестов надо прогнать через модель прямо в конвейере: `cat failing-test.log | uncut "Find the likely cause"`
- Задачу выполняет CI-джоб, а результат читает другая программа, поэтому подойдет поток событий NDJSON из `--json`
- Рефакторинг идет в несколько запусков, и историю между ними хранит файл сессии `--session`
- Модель работает локально через Ollama, и обрезать контекст молча нельзя
Не подходит, если
- Требуется интерактивный интерфейс с подтверждением правок: в UNCUT нет окон и запросов на согласие
- Модель должна читать изображения: агент работает только с текстом и вызовами инструментов
- Задачу надо изолировать от системы: оболочка выполняет команды с правами вашего пользователя
- Ждете плагины, фоновых агентов или автоматические повторы запросов: автор их намеренно не добавил
Пример запроса к агенту
Запусти uncut с моделью из UNCUT_MODEL и поручи ему найти причину падения тестов в этом репозиторииОграничения
UNCUT не песочница: модель исполняет команды оболочки с правами вашего пользователя, а проверка путей относится только к файловым инструментам. Бинарные файлы и невалидный UTF-8 агент отклоняет, вывод в UTF-16 на Windows тоже. Бинарники не подписаны, поэтому SmartScreen или Gatekeeper могут предупредить: сверьте SHA-256 с `checksums.txt` из релиза. Окно контекста модели агент не расширяет: при превышении лимита провайдер отклонит запрос или оборвет ответ.
Как отключить. Удалите бинарник `uncut` из `$HOME/.local/bin` (на Windows из `%LOCALAPPDATA%\Programs\UNCUT`) и уберите переменные `UNCUT_API_KEY`, `UNCUT_MODEL` и `UNCUT_BASE_URL`. Файлы сессий `.jsonl` удаляются отдельно.
Частые вопросы
Что значит код выхода 3?
Провайдер вернул `finish_reason=length` или `max_tokens`: ответ оборван на лимите. UNCUT такой ответ не принимает. Поднимите `--max-tokens` или возьмите модель с более длинным выходным окном и повторите запуск.
Как подключить локальную модель через Ollama?
Скачайте модель с поддержкой инструментов, например `ollama pull qwen3:8b`, и задайте `UNCUT_BASE_URL=http://localhost:11434/v1` и `UNCUT_MODEL=qwen3:8b`. Ключ API для локального адреса не нужен. Как модель вызывает инструменты, зависит от самой модели.
Читает ли UNCUT файл AGENTS.md?
Да, берет его целиком из корня рабочего каталога и добавляет в системное сообщение. Отключает чтение флаг `--no-agents`. При возобновлении сессии используется системное сообщение, сохраненное в файле.
Как проверить, что контекст не обрезается?
Соберите бинарник и запустите `python bench/proof.py ./bin/uncut`. Скрипт гоняет настоящий бинарник против локального детерминированного провайдера, ключ API не нужен. Он проверяет передачу данных, а качество моделей не оценивает.
Что происходит, если замена в файле не находит совпадение?
`replace` меняет ровно одно вхождение: при нуле или нескольких совпадений инструмент возвращает ошибку, и файл остается как был. Пути файловых инструментов должны лежать внутри рабочего каталога, который задает `--cwd`. Команды `run_command` идут через `/bin/sh -c` на Unix и `cmd.exe /D /S /C` на Windows.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыУчебный терминальный агент для кода на Python, задуманный как «nanoGPT для агентов»: прочитать, разобрать и форкнуть
Открытый кодовый агент для терминала, браузера и десктопа, который работает с моделями от OpenAI и Claude до Ollama
CLI на Go, который настраивает уже установленные у вас ИИ-агенты: дает им общую память, рабочий процесс и детерминированные шаги, не подменяя сами агенты
Обвязка для своего агента: цикл инструментов, сессии, согласования, REPL и дашборд, где инструмент и скилл лежат в файлах.
Кодинговый агент на Go для открытых моделей: из беседы делает задачи в отдельных ветках, сам проверяет и вливает результат, ведет все проекты в одном окне
Самохостящийся ИИ-агент в одном бинарнике на Go: терминал, веб-интерфейс, мессенджеры и десктоп работают с любой совместимой моделью
Сравнение с похожими
Карточки с тем же главным запросом: чем они отличаются.
| Инструмент | Официальный | Звезды репозитория | Главное отличие |
|---|---|---|---|
| UNCUT (эта карточка) | нет | 609 | |
| Aider | нет | 49 976 | ведет диалог в терминале, показывает правки и коммитит их в git, а UNCUT работает без интерфейса и без автокоммитов |
| OpenCode | нет | 224 828 | агент с режимами разработки и планирования в терминале и на десктопе, а UNCUT сводится к четырем инструментам и конвейеру |
Коротко о README
Описание открывается обещанием: один бинарник на 7 МБ, четыре инструмента, обычные stdin и stdout. Затем идут установка для Linux, macOS и Windows с проверкой контрольных сумм, быстрый старт, таблицы переменных, флагов и кодов выхода. Отдельный раздел объясняет, что автор называет «lossless», и предупреждает, что UNCUT не песочница.