Repository navigation
v0.0.1
Changelog
Основные возможности
-
Два режима обработки LLM:
- Map-Reduce — разбивка файла на чанки, параллельная обработка с объединением результатов
- RAG (Agentic Tool Calling) — агентный режим с вызовами инструментов для поиска информации
-
Поддержка двух источников данных:
- Файлы (
--fileили позиционный аргумент) - stdin (для чтения данных из стандартного ввода)
- Файлы (
-
Параллельная обработка с настраиваемой конкурентностью (
-c/--concurrency)
Map-Reduce режим
- Фаза Map: параллельная обработка чанков через LLM API
- Фаза Reduce: синтез финального ответа на основе результатов Map
- Настройка размера чанка (
-l/--length)
RAG режим
- Tool Calling с двумя инструментами:
search_file(query)— поиск подстроки в файле с номерами строкread_lines(start, end)— чтение диапазона строк
- Агентный режим: модель сама решает какие инструменты использовать
- Цикл общения с моделью с автоматическим получением ответа
Клиент LLM
- Поддержка OpenAI-compatible API
- Retry mechanism с экспоненциальным backoff:
- Попроба 1 → задержка 0с (сразу)
- Попроба 2 → задержка 1с
- Попроба 3 → задержка 4с
- Таймауты HTTP запросов (настраиваются через env)
Конфигурация
-
Парсинг CLI флагов с поддержкой алиасов:
Флаг Алиас Описание -f, --fileПуть к файлу -c, --concurrencyКол-во параллельных запросов -l, --lengthРазмер чанка -r, --retryКол-во retry попыток -v, --verboseDebug логирование -
Поддержка переменных окружения для всех параметров
-
Загрузка
.envфайла черезgodotenv
Логирование
- Логи в
stderr, ответ вstdout - Два уровня:
INFO(по умолчанию) иDEBUG(-v/--verbose) - Добавление источника кода в логи
Graceful Shutdown
- Обработка сигналов
SIGINT/SIGTERM(Ctrl+C) - Отмена активных HTTP запросов
- Очистка временных файлов
HTTP таймауты
Настройка через переменные окружения:
HTTP_REQUEST_TIMEOUT— общий таймаут запросаHTTP_DIAL_TIMEOUT— таймаут установления соединенияHTTP_TLS_TIMEOUT— таймаут TLS рукопожатия
Технологии
- Go 1.25.6
sashabaranov/go-openaigolang.org/x/sync
Инфраструктура
- GitHub Actions CI/CD с линтингом и тестами
- Goreleaser для автоматических релизов
Совместимость
Тестируется с:
- LM Studio