Skip to content

kranks-uga/app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gаврик

Умный настольный помощник для Arch Linux с локальной AI интеграцией

Gаврик — графическое приложение, которое помогает управлять системой Arch Linux через естественный диалог. Использует локальную AI модель через Ollama, не отправляя данные на внешние серверы.

Возможности

AI Ассистент

  • Локальная языковая модель через 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 Резервное копирование

Система

Команда Описание
выключить пк Выключение компьютера
перезагрузить Перезагрузка системы

AI инструменты

Инструмент Описание
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)

Конфигурация AI модели

Файл: 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

Тестирование Ollama API

# Проверка соединения
curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Привет!",
  "stream": false
}'

Решение проблем

Ollama не отвечает

# Проверить статус
systemctl status ollama

# Перезапустить
systemctl restart ollama

# Проверить порт
curl http://localhost:11434/api/tags

Модель не найдена

# Список установленных моделей
ollama list

# Загрузить llama3
ollama pull llama3

yay не установлен

Приложение автоматически предложит установить yay. Или вручную:

git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

Лицензия

GPL-3.0 — свободное программное обеспечение.

  • Вы можете использовать, изменять и распространять код
  • При распространении изменённых версий обязаны публиковать исходный код
  • Производные работы должны использовать ту же лицензию

Автор: kranks-uga

Благодарности

  • Ollama — локальный AI runtime
  • egui — графический интерфейс
  • Arch Linux — лучший дистрибутив

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages