Skip to content

minlebay/askcli

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ask CLI

CLI утилита для работы с терминалом Linux через Google Gemini API. Помогает быстро получать команды терминала, отвечая на вопросы на естественном языке.

Возможности

  • 🚀 Одноразовое взаимодействие: задайте вопрос, получите ответ
  • 📋 Копирование ответа в буфер обмена одной клавишей
  • 🔑 Настраиваемый системный промпт
  • 📊 Отображение использованных токенов
  • 🏷️ Поддержка алиасов для вызова утилиты
  • ⚙️ Гибкая конфигурация через YAML файл или переменные окружения

Установка

Требования

  • Go 1.21 или выше
  • API ключ Google Gemini (получить можно в Google AI Studio)
  • Для работы с буфером обмена (копирование): одна из утилит:
    • xclip (для X11): sudo apt install xclip или sudo yum install xclip
    • wl-copy (для Wayland): sudo apt install wl-clipboard или sudo yum install wl-clipboard
    • xsel (альтернатива для X11): sudo apt install xsel или sudo yum install xsel

Сборка из исходников

git clone <repository-url>
cd askCli
go build -o ask ./cmd/ask
sudo mv ask /usr/local/bin/

Проверка установки

ask --help

Настройка

Конфигурационный файл

Создайте файл конфигурации в одном из следующих мест:

  • ~/.config/ask/config.yaml (рекомендуется)
  • ~/.askrc.yaml

Пример конфигурации (config.example.yaml):

gemini:
  api_key: "your-api-key-here"
  model: "gemini-2.5-flash-lite"  # модель Gemini
  base_url: ""                    # опционально

prompt:
  template: "ask > "   # настраиваемый промпт
  system_message: "Ты помощник для работы с терминалом Linux. Отвечай только командами терминала без дополнительных объяснений."

alias:
  name: "ask"          # имя алиаса (для отображения)
  enabled: true

ui:
  show_tokens: true    # показывать токены по умолчанию
  copy_hint: "[C] копировать, [Q] выйти"

Переменные окружения

Вместо файла конфигурации можно использовать переменные окружения:

export ASK_GEMINI_API_KEY="your-api-key"
export ASK_GEMINI_MODEL="gemini-pro"

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

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

ask "как вывести последние десять введенных команд?"

Утилита отправит вопрос в Gemini API, получит ответ и отобразит его:

Ответ:
history 10

Токены: входные 12 / выходные 3 / всего 15

[C] копировать, [Q] выйти

Флаги

  • --show-tokens - принудительно показать количество использованных токенов
  • --config <path> - указать путь к файлу конфигурации

Пример:

ask --show-tokens "как найти все файлы с расширением .txt?"

Настройка алиасов

Shell alias (bash/zsh)

Добавьте в ваш ~/.bashrc или ~/.zshrc:

alias a="ask"
# или
alias askcli="ask"

После этого можно использовать:

a "как проверить использование диска?"

Утилита автоматически определит имя, под которым она была вызвана, и отобразит его в конце работы.

Символическая ссылка

sudo ln -s /usr/local/bin/ask /usr/local/bin/a

Копирование ответа

После получения ответа утилита предложит:

  • Нажмите C (и Enter) - скопировать команду в буфер обмена
  • Нажмите Q (и Enter) - выйти
  • Нажмите Enter - просто продолжить (ничего не делать)

После копирования команду можно вставить в терминал через Ctrl+Shift+V или правой кнопкой мыши.

Примеры использования

# Получить команду для поиска файлов
ask "как найти все файлы с расширением .log в текущей директории?"

# Получить команду для работы с процессами
ask "как убить процесс по имени?"

# Получить команду для работы с сетью
ask "как проверить открытые порты на системе?"

# С отображением токенов
ask --show-tokens "как установить пакет в Ubuntu?"

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

askCli/
├── cmd/ask/              # Точка входа
├── internal/
│   ├── config/           # Управление конфигурацией
│   ├── gemini/           # Интеграция с Gemini API
│   ├── ui/               # Интерактивный интерфейс
│   └── cli/              # Парсинг команд и алиасов
├── config.example.yaml   # Пример конфигурации
└── README.md             # Документация

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

  • ⚠️ Не коммитьте API ключи в репозиторий
  • Используйте переменные окружения для хранения секретов
  • Файлы конфигурации с ключами автоматически исключены из git (см. .gitignore)

Получение API ключа

  1. Перейдите на Google AI Studio
  2. Войдите в свой Google аккаунт
  3. Создайте новый API ключ
  4. Скопируйте ключ и добавьте его в конфигурацию или переменную окружения

Важно: Подписка на Gemini Advanced не дает автоматический доступ к API. Нужно отдельно получить API ключ через AI Studio.

Ограничения

  • Бесплатный тариф Gemini API имеет лимиты (например, ~60 запросов в минуту)
  • При превышении лимитов запросы могут быть отклонены
  • Утилита работает только в одноразовом режиме (без REPL)

Разработка

Зависимости

go mod download

Сборка

go build -o ask ./cmd/ask

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

go test ./...

Лицензия

Нет лицензии

Автор

@minlebay

About

linux terminal commands CLI-helper

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages