Об этом проекте

attini — это командный агент для программирования, предназначенный для автономной работы в вашем рабочем пространстве при сохранении контроля со стороны человека. Он взаимодействует напрямую с DeepSeek Chat Completions API по HTTP/1.1 + TLS с поддержкой потоковой передачи. Агент может перечислять и читать файлы, искать по кодовой базе, применять патчи и запускать команды. Обратимые изменения в файлах, отслеживаемых git, применяются без запроса, тогда как значимые действия — например, создание новых файлов, изменение неотслеживаемых файлов или запуск команд, не входящих в белый список, — показываются в виде предварительного просмотра и требуют явного одобрения. Проект построен на принципе Sans I/O: основные парсеры, типы данных и конечные автоматы не выполняют ввод-вывод, тогда как асинхронный транспорт, TUI и интеграция с файловой системой находятся в окружающих модулях. Такое разделение повышает тестируемость и удобство сопровождения. Ключевые возможности: - **Инструменты только для чтения**: `list`, `read`, `search` для исследования рабочего пространства. - **Инструмент патчей**: применяет добавления и обновления; автоматически применяет обратимые изменения к отслеживаемым файлам, но требует одобрения для новых файлов, изменений неотслеживаемых файлов или записи за пределами рабочего пространства. - **Инструмент команд**: запускает shell-команды под контролем разрешений с настраиваемыми тайм-аутами. - **Система одобрения**: использует `attini approve` для возобновления остановленных сессий, одобрения ожидающих вызовов инструментов и, при необходимости, предоставления постоянных разрешений через `--grant`. - **Разрешения**: простые файлы JSONL (`permissions.jsonl`) для правил уровня рабочего пространства и сессии, редактируемые вручную. - **Управление сессиями**: сессии хранятся как каталоги в `.attini/<NAME>/` с журналами диалогов JSONL, доступными только для добавления, блокнотом и файлами блокировки. Просмотр с помощью `attini status` и `attini ask`. - **Переменные окружения**: настройка API-ключа, базового URL, имени сессии, модели, температуры, тайм-аутов и другого. Философия дизайна делает акцент на управляемости и понятности, а не на автономности. Контекст добавляется только по явному запросу (через промпт или `--stdin`), нет неявного обнаружения навыков или файлов инструкций, нет субагентов или режима планирования. Агент отказывается от рискованных операций, а не угадывает. Намеренно неподдерживаемые функции включают сохранение памяти, делегирование субагентам, сканирование `AGENTS.md`, автоматическую загрузку навыков, режим планирования и удобные инструменты, дублирующие существующие возможности. Это осознанная политика, направленная на то, чтобы агент оставался явным и безопасным. Требования: Rust 1.93+, переменная окружения `DEEPSEEK_API_KEY`, опционально `DEEPSEEK_BASE_URL` для OpenAI-совместимых эндпоинтов.