CLI утилита для работы с терминалом Linux через Google Gemini API. Помогает быстро получать команды терминала, отвечая на вопросы на естественном языке.
- 🚀 Одноразовое взаимодействие: задайте вопрос, получите ответ
- 📋 Копирование ответа в буфер обмена одной клавишей
- 🔑 Настраиваемый системный промпт
- 📊 Отображение использованных токенов
- 🏷️ Поддержка алиасов для вызова утилиты
- ⚙️ Гибкая конфигурация через YAML файл или переменные окружения
- Go 1.21 или выше
- API ключ Google Gemini (получить можно в Google AI Studio)
- Для работы с буфером обмена (копирование): одна из утилит:
xclip(для X11):sudo apt install xclipилиsudo yum install xclipwl-copy(для Wayland):sudo apt install wl-clipboardилиsudo yum install wl-clipboardxsel(альтернатива для 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?"Добавьте в ваш ~/.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)
- Перейдите на Google AI Studio
- Войдите в свой Google аккаунт
- Создайте новый API ключ
- Скопируйте ключ и добавьте его в конфигурацию или переменную окружения
Важно: Подписка на Gemini Advanced не дает автоматический доступ к API. Нужно отдельно получить API ключ через AI Studio.
- Бесплатный тариф Gemini API имеет лимиты (например, ~60 запросов в минуту)
- При превышении лимитов запросы могут быть отклонены
- Утилита работает только в одноразовом режиме (без REPL)
go mod downloadgo build -o ask ./cmd/askgo test ./...Нет лицензии
@minlebay