rich

command module
v0.0.0-...-a5f3e7c Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 19, 2025 License: MIT Imports: 15 Imported by: 0

README

Rich - Инструмент обогащения markdown-контента с помощью AI

Go Version License Coverage

Rich - это утилита командной строки, разработанная на Go, которая автоматически обогащает markdown-файлы с использованием различных моделей искусственного интеллекта (GPT, Claude, OpenRouter). Инструмент анализирует содержимое markdown-файлов и дополняет их детальной информацией, ссылками и пояснениями.

Возможности

  • 🤖 Поддержка различных AI-моделей (OpenAI, Anthropic Claude, OpenRouter)
  • 📁 Пакетная обработка markdown-файлов
  • ⚙️ Гибкая настройка через конфигурационный файл
  • 🔄 Сохранение оригинальной структуры документов
  • 🎯 Настраиваемые промпты для точной генерации контента
  • 🚫 Автоматическое исключение обработанных файлов
  • 🔒 Безопасная обработка файлов с проверкой размера и содержимого
  • 📊 Ограничение частоты запросов к API (rate limiting)
  • ✂️ Построчная обработка: каждая строка как отдельный промпт (-per-line)
  • 🔎 Выбор строк для обработки: 15, 1-20, 31-, -40 (-lines "…")
  • 🏷️ Автоимя файла из ответа по title:Title или title:[Title]

Установка

go install github.com/Headcrab/rich@latest

Или сборка из исходного кода:

git clone https://github.com/Headcrab/rich.git
cd rich
go build
Сборка с помощью Task

Для удобства разработки в проекте используется Task - современная альтернатива Make.

Установка Task
# Windows (Chocolatey)
choco install go-task

# Windows (Scoop)  
scoop install task

# macOS (Homebrew)
brew install go-task/tap/go-task

# Linux (Snap)
sudo snap install task --classic

# Или через Go
go install github.com/go-task/task/v3/cmd/task@latest
Доступные команды
# Показать все доступные задачи
task

# Настройка проекта (создание директорий)
task setup

# Сборка приложения
task build

# Запуск тестов
task test

# Запуск с покрытием кода
task test-coverage

# Форматирование кода
task fmt

# Статический анализ
task vet

# Полная проверка (fmt + vet + test)
task check

# Очистка артефактов сборки
task clean

# Очистка логов
task clean-logs

# Полная очистка
task clean-all

# Запуск приложения
task run

# Сборка и запуск
task run-build

Конфигурация

Создайте файл rich.cfg в директории проекта:

[DIRECTORIES]
input_dir  = ./todo    # Директория с исходными файлами
output_dir = ./done    # Директория для обработанных файлов

[EXCLUSIONS]
excluded_files = README.md, CHANGELOG.md, LICENSE.md

[MODEL]
name        = gpt-3.5-turbo
api_url     = https://api.openai.com/v1/chat/completions
api_key_env = OPENAI_API_KEY    # Переменная окружения для API ключа
temperature = 0.7
max_tokens  = 1000

[PROMPT]
text = """Ваш промпт для обогащения контента"""
Поддерживаемые API

Rich автоматически определяет формат запроса на основе URL API:

  • OpenAI: https://api.openai.com/v1/chat/completions
  • Anthropic: https://api.anthropic.com/v1/messages
  • OpenRouter: https://openrouter.ai/api/v1/chat/completions

Ключи API могут быть указаны напрямую в конфигурации или через переменные окружения:

  • OPENAI_API_KEY - для OpenAI
  • ANTHROPIC_API_KEY - для Anthropic
  • OPENROUTER_API_KEY - для OpenRouter

Использование

  1. Подготовьте markdown-файлы в директории input_dir
  2. Настройте параметры в rich.cfg
  3. Запустите обработку:
./rich -config rich.cfg
Параметры командной строки
  • -config - путь к конфигурационному файлу (по умолчанию: rich.cfg)
  • -per-line - построчная обработка: каждая непустая строка файла отправляется отдельным запросом и сохраняется в свой файл
  • -lines - выбор строк для построчной обработки, формат: одиночные номера и диапазоны, разделённые запятыми. Примеры:
    • "15" — только 15-я строка
    • "1-20" — строки 1..20
    • "31-" — строки 31..конец файла
    • "-40" — строки 1..40
    • "15,1-20,31-,-40" — комбинирование нескольких диапазонов
Ограничения
  • Максимальный размер обрабатываемого файла: 10 МБ
  • Ограничение запросов к API: 10 запросов в минуту

Структура проекта

rich/
├── main.go          # Основной код программы
├── rich.cfg         # Конфигурационный файл
├── rich.log         # Файл журнала
├── todo/            # Директория с исходными файлами
└── done/            # Директория с обработанными файлами

Формат выходных файлов

В обычном режиме обработанные файлы сохраняются в следующем формате:

<Обогащенное содержимое>

```old
<Оригинальное содержимое>
```

Если в ответе присутствует строка заголовка в одной из форм

  • title:[FileTitle]
  • title:FileTitle

то эта строка удаляется из текста результата и имя выходного файла будет [FileTitle].md (после санитизации имени).

В построчном режиме каждая выбранная строка сохраняется в отдельный файл:

  • По умолчанию: <basename>__line-<NNN>.md
  • Если в ответе есть title, то: [FileTitle]__line-<NNN>.md

Где <NNN> — номер строки с лидирующими нулями по ширине числа строк в файле. В построчном режиме, помимо строки с title, также удаляется первая пустая строка сразу после неё (если есть).

Требования

  • Go 1.24 или выше
  • Доступ к API выбранной AI-модели

Безопасность

  • Используются переменные окружения для хранения API ключей
  • Проверка безопасности путей (защита от path traversal)
  • Валидация размера и содержимого входных файлов
  • Безопасная запись файлов через временные файлы
  • Строгие проверки ответов API

Лицензия

MIT License. См. файл LICENSE для подробностей.

Вклад в проект

  1. Форкните репозиторий
  2. Создайте ветку для ваших изменений
  3. Внесите изменения и создайте pull request

Контакты

Создайте issue в репозитории для сообщения о проблемах или предложений по улучшению.

Спасибо

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL