92 lines
3.4 KiB
Markdown
92 lines
3.4 KiB
Markdown
# Ludmila AI TUI
|
||
|
||
Терминальный клиент для OpenAI-совместимых API LLM. Написан на Go с использованием [Bubble Tea](https://github.com/charmbracelet/bubbletea).
|
||
|
||
## Возможности
|
||
|
||
- Поддержка нескольких OpenAI-совместимых провайдеров одновременно
|
||
- Потоковый вывод ответов (streaming)
|
||
- Управление сессиями (создание, переключение, удаление, автосохранение)
|
||
- Выбор модели из списка доступных через интерфейс
|
||
- Markdown-рендеринг: **жирный**, *курсив*, `код`, заголовки, блоки кода
|
||
- Навигация по истории сообщений
|
||
- Выделение и копирование текста мышью
|
||
- Visual mode для выделения текста клавиатурой
|
||
- Настраиваемая цветовая тема
|
||
- Анимированный индикатор ожидания ответа
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
go install ./cmd/ludmila-ai-tui
|
||
```
|
||
|
||
Или соберите из исходников:
|
||
|
||
```bash
|
||
git clone <repo-url>
|
||
cd ludmila-ai-tui
|
||
go build -o ludmila-ai-tui
|
||
```
|
||
|
||
## Конфигурация
|
||
|
||
Файл: `~/.config/ludmila-ai-tui/config.json`
|
||
|
||
```json
|
||
{
|
||
"theme": "system",
|
||
"default_provider": "openai",
|
||
"providers": {
|
||
"openai": {
|
||
"name": "OpenAI",
|
||
"base_url": "https://api.openai.com",
|
||
"api_key": "$OPENAI_API_KEY",
|
||
"type": "openai-compat"
|
||
},
|
||
"local": {
|
||
"name": "Local (Ollama)",
|
||
"base_url": "http://localhost:11434",
|
||
"type": "openai-compat"
|
||
}
|
||
}
|
||
}
|
||
```
|
||
|
||
- `api_key` можно указать напрямую или через переменную окружения (`$NAME`)
|
||
- Провайдеров может быть любое количество
|
||
- Модели загружаются автоматически через эндпоинт `/api/tags` при запуске
|
||
|
||
### Темы
|
||
|
||
По умолчанию используется системная тема. Чтобы добавить кастомную, создайте `~/.config/ludmila-ai-tui/themes/<name>.json` и укажите `"theme": "<name>"` в конфиге.
|
||
|
||
## Использование
|
||
|
||
| Клавиша | Действие |
|
||
|---|---|
|
||
| `Enter` | Отправить сообщение |
|
||
| `Ctrl+O` | Выбрать модель |
|
||
| `Ctrl+S` | Список сессий |
|
||
| `Ctrl+N` | Новая сессия |
|
||
| `Ctrl+W` | Закрыть текущую сессию |
|
||
| `Ctrl+V` | Visual mode (выделение текста) |
|
||
| `Ctrl+C` | Выход |
|
||
| `Esc` | Отменить streaming / закрыть диалог |
|
||
| `↑` / `↓` | История сообщений |
|
||
| `PgUp` / `PgDn` | Прокрутка |
|
||
| Мышь | Выделение и копирование в буфер обмена |
|
||
|
||
В visual mode:
|
||
- `j`/`k` — перемещение курсора
|
||
- `v` — начать/закончить выделение
|
||
- `Enter` — скопировать выделенное
|
||
|
||
## Хранилище
|
||
|
||
Сессии сохраняются в `~/.local/share/ludmila-ai-tui/sessions/`. Каждая сессия — отдельный JSON-файл. Удаление помечает сессию как удалённую (флаг `deleted`), файл не стирается.
|
||
|
||
## Лицензия
|
||
|
||
MIT
|