Skip to content

jf17/shell-agent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Умный Linux Shell Агент (Go версия)

Это Go версия умного Linux Shell агента, который преобразует запросы на естественном языке в команды Linux с использованием локальной LLM модели через Ollama.

Возможности

  • 🤖 Преобразование естественного языка в команды Linux
  • 🎯 Выбор модели из доступных в Ollama при старте
  • 📚 Контекстная память (последние 30 команд)
  • ⚡ Интерактивный режим с подтверждением выполнения
  • 🔄 Смена модели во время работы
  • 🔒 Безопасное выполнение с запросом разрешения

Требования

  1. Go 1.21+
  2. Ollama с любой установленной моделью (программа покажет список доступных)

Установка и запуск

1. Установка Ollama и моделей

# Установка Ollama (если не установлен)
curl -fsSL https://ollama.ai/install.sh | sh

# Загрузка рекомендуемых моделей
ollama pull qwen2.5-coder:3b    # Быстрая модель для кода
ollama pull llama3.2:3b         # Универсальная модель
ollama pull codellama:7b        # Более мощная модель для кода

# Запуск Ollama сервера
ollama serve

2. Сборка и установка

Быстрый запуск

# Компиляция и запуск
go run main.go

# Или через Make
make run

Сборка исполняемого файла

# Сборка
make build
./shell-agent

# Или напрямую через Go
go build -o shell-agent main.go
./shell-agent

Установка в систему

# Установка в /usr/local/bin (требует sudo)
make install

# После установки можно запускать из любой директории
shell-agent

Удаление из системы

make uninstall

3. Доступные Make команды

make help          # Показать все доступные команды
make build         # Собрать проект
make run           # Собрать и запустить
make clean         # Очистить собранные файлы
make test          # Запустить тесты
make fmt           # Форматировать код
make vet           # Проверить код
make deps          # Обновить зависимости
make build-all     # Собрать для всех платформ
make install       # Установить в систему
make uninstall     # Удалить из системы

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

Выбор модели при запуске

При первом запуске программа покажет список доступных моделей:

🔍 Получаю список доступных моделей...

📋 Доступные модели:
============================================================
1. qwen2.5-coder:3b (1.9 GB)
2. llama3.2:3b (2.0 GB)
3. codellama:7b (3.8 GB)
============================================================
Выберите модель (1-3): 1
✅ Выбрана модель: qwen2.5-coder:3b

Интерактивный режим

После выбора модели вводите запросы на естественном языке:

👤 Ваш запрос: покажи файлы в текущей папке
💡 Предлагаемая команда: ls -la
❓ Выполнить эту команду? (да/нет/d/n): да

Примеры запросов

  • "покажи файлы в текущей папке"
  • "кто я в системе"
  • "информация о системе"
  • "создай файл test.txt"
  • "покажи содержимое файла" (после создания)
  • "сколько свободной памяти"
  • "найди все .go файлы"

Специальные команды

  • история - показать историю выполненных команд
  • очистить историю - очистить контекст
  • сменить модель - выбрать другую модель без перезапуска
  • exit - выход из программы

Архитектура

Основные компоненты

  1. ShellAgent - основная структура агента
  2. CommandHistory - история выполненных команд
  3. Ollama API клиент - интеграция с LLM и управление моделями
  4. Model selector - выбор и смена моделей
  5. Shell executor - безопасное выполнение команд

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

  • Все команды требуют подтверждения пользователя
  • Таймаут выполнения команд (60 секунд)
  • Ограничение истории команд (30 последних)
  • Изолированное выполнение через bash -c
  • Проверка доступности Ollama при запуске

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

По умолчанию используется:

  • Ollama URL: http://localhost:11434
  • Модель: выбирается пользователем из доступных
  • Таймаут: 60 секунд
  • Максимум истории: 30 команд

Для изменения параметров отредактируйте константы в NewShellAgent().

Рекомендуемые модели

  • qwen2.5-coder:3b - быстрая и эффективная для команд Linux
  • llama3.2:3b - универсальная модель с хорошим пониманием
  • codellama:7b - более мощная для сложных задач (требует больше ресурсов)

Устранение неполадок

Ollama недоступен

# Проверьте, запущен ли Ollama
curl http://localhost:11434/api/tags

# Если не отвечает, запустите сервер
ollama serve

Нет доступных моделей

# Установите хотя бы одну модель
ollama pull qwen2.5-coder:3b