Умный настольный помощник для Arch Linux с локальной AI интеграцией
Gаврик — графическое приложение, которое помогает управлять системой Arch Linux через естественный диалог. Использует локальную AI модель через Ollama, не отправляя данные на внешние серверы.
- Локальная языковая модель через Ollama (llama3)
- Кастомная модель "alfons" с системным промптом для Arch Linux
- Распознавание команд и инструментов из естественной речи
- Информация о системе: память, диск, CPU
- Поиск пакетов в официальных репозиториях и AUR
- Установка и удаление пакетов через yay/pacman
- Обновление системы
- Диалоги подтверждения для критических операций
- 8 встроенных пошаговых инструкций
- Темы: pacman, AUR, WiFi, systemd, GPU драйверы, звук, локализация, бэкапы
- Команды с примечаниями и объяснениями
- Автоматическое определение окружения рабочего стола (GNOME, KDE и др.)
- Установка в систему с интеграцией в меню приложений
- Автоустановка зависимостей (Ollama, yay)
| Компонент | Версия | Описание |
|---|---|---|
| Arch Linux | — | Основная ОС |
| Rust | 1.70+ | Компилятор |
| Ollama | latest | Локальный AI runtime |
# Клонировать репозиторий
git clone https://github.com/kranks-uga/app.git
cd app
# Установить Rust (если не установлен)
sudo pacman -S rustup
rustup default stable
# Собрать и запустить
cargo run --releaseПриложение может автоматически установить зависимости при первом запуске, или вы можете сделать это вручную:
# Установка Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# Загрузка модели
ollama pull llama3
# Создание кастомной модели (опционально)
ollama create alfons -f ModelfileПосле сборки можно установить приложение в систему через меню настроек в приложении. Это создаст:
- Бинарник:
~/.local/bin/alfons - Desktop файл:
~/.local/share/applications/alfons.desktop - Иконку:
~/.local/share/icons/alfons.png
| Команда | Описание |
|---|---|
время |
Текущее время |
дата |
Текущая дата |
помощь |
Список команд |
очистить |
Очистить чат |
| Команда | Описание |
|---|---|
найти <пакет> |
Поиск в репозиториях и AUR |
установить <пакет> |
Установка пакета |
удалить <пакет> |
Удаление пакета |
обновить систему |
Полное обновление системы |
| Команда | Описание |
|---|---|
гайд pacman |
Основы пакетного менеджера |
гайд aur |
Работа с AUR и yay |
гайд wifi |
Настройка беспроводной сети |
гайд systemd |
Управление сервисами |
гайд gpu |
Установка видеодрайверов |
гайд audio |
Настройка звуковой системы |
гайд locale |
Локализация и языки |
гайд backup |
Резервное копирование |
| Команда | Описание |
|---|---|
выключить пк |
Выключение компьютера |
перезагрузить |
Перезагрузка системы |
| Инструмент | Описание |
|---|---|
TOOL:memory |
Информация об оперативной памяти |
TOOL:disk |
Использование дискового пространства |
TOOL:cpu |
Информация о процессоре |
TOOL:system |
Общая информация о системе |
┌─────────────────────────────────────────────┐
│ AssistantApp │
├─────────────────────────────────────────────┤
│ UI Layer (egui/eframe) │
│ ├── Основное окно чата │
│ ├── Панель настроек │
│ └── Диалоговые окна │
├─────────────────────────────────────────────┤
│ Chat & Task Management │
│ ├── История сообщений (до 100) │
│ ├── Фоновые задачи (tokio) │
│ └── Обработка результатов │
├─────────────────────────────────────────────┤
│ Command Processor │
│ ├── Парсинг команд [CMD:...] │
│ ├── Выполнение системных команд │
│ └── Обработка гайдов │
├─────────────────────────────────────────────┤
│ AI Engine (Ollama) │
│ ├── HTTP клиент (reqwest) │
│ ├── Парсинг инструментов [TOOL:...] │
│ └── Генерация ответов │
└─────────────────────────────────────────────┘
alfons-assistant/
├── src/
│ ├── main.rs # Точка входа, конфигурация окна
│ └── app/
│ ├── mod.rs # Экспорт модулей
│ ├── assistant_app.rs # Главная структура приложения
│ ├── chat.rs # Чат, история, фоновые задачи
│ ├── config.rs # Пользовательские настройки
│ ├── constants.rs # Константы и строки
│ ├── command_log.rs # Логирование команд
│ ├── desktop.rs # Определение DE, стили
│ ├── installer.rs # Установка в систему
│ ├── ai/
│ │ ├── mod.rs # Экспорт AI модулей
│ │ ├── local_provider.rs # Клиент Ollama API
│ │ └── tools.rs # Реестр инструментов
│ ├── commands/
│ │ ├── mod.rs # Обработчик команд
│ │ ├── base.rs # Базовые команды
│ │ ├── package.rs # Пакетный менеджер
│ │ ├── guide.rs # Команды гайдов
│ │ └── system.rs # Системные команды
│ ├── guides/
│ │ └── mod.rs # Реестр обучающих гайдов
│ └── ui/
│ ├── mod.rs # Главный UI модуль
│ ├── widgets.rs # Кастомные виджеты
│ └── dialogs.rs # Диалоговые окна
├── assets/
│ └── icon.png # Иконка приложения
├── Cargo.toml # Манифест проекта
├── Modelfile # Конфигурация AI модели
├── LICENSE # GPL-3.0
└── README.md # Документация
Файл: ~/.config/alfons-assistant/config.json
{
"assistant_name": "Gаврик",
"accent_color": [100, 149, 237]
}| Параметр | Тип | Описание |
|---|---|---|
assistant_name |
string | Имя ассистента в интерфейсе |
accent_color |
[r, g, b] | Цвет акцента (RGB) |
Файл: Modelfile
FROM llama3
SYSTEM """
Ты Gаврик - помощник для Arch Linux...
"""
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER top_k 40
PARAMETER num_ctx 4096
Создание модели:
ollama create alfons -f Modelfile| Компонент | Технология | Назначение |
|---|---|---|
| GUI | egui 0.26 + eframe | Immediate mode графический интерфейс |
| Async Runtime | Tokio 1.0 | Асинхронные операции |
| HTTP Client | reqwest 0.12 | Взаимодействие с Ollama API |
| Serialization | serde + serde_json | Конфигурация и данные |
| Date/Time | chrono 0.4 | Работа с датами |
| Config | confy 0.6 | Управление настройками |
| Regex | regex 1.10 | Парсинг команд |
# Debug сборка
cargo build
# Release сборка
cargo build --release
# Запуск с логами
RUST_LOG=debug cargo run# Проверка соединения
curl http://localhost:11434/api/generate -d '{
"model": "llama3",
"prompt": "Привет!",
"stream": false
}'# Проверить статус
systemctl status ollama
# Перезапустить
systemctl restart ollama
# Проверить порт
curl http://localhost:11434/api/tags# Список установленных моделей
ollama list
# Загрузить llama3
ollama pull llama3Приложение автоматически предложит установить yay. Или вручную:
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -siGPL-3.0 — свободное программное обеспечение.
- Вы можете использовать, изменять и распространять код
- При распространении изменённых версий обязаны публиковать исходный код
- Производные работы должны использовать ту же лицензию
Автор: kranks-uga
- Ollama — локальный AI runtime
- egui — графический интерфейс
- Arch Linux — лучший дистрибутив