
ShellGPT — ИИ ассистент в вашем терминале Linux
Обновлено 04.08.2025
Приветствую!
В данной инструкции я расскажу, как интегрировать ИИ ассистента на основе ChatGPT/Gemini/Ollama в вашу Linux систему и взаимодействовать с ним в терминале с помощью консольного приложения — ShellGPT.
Инструкция актуальна для дистрибутивов Linux Mint 22 / Ubuntu 24.04 / Debian 12.
Подписывайтесь на наш телеграм @r4ven_me📱, чтобы не пропустить новые публикации на сайте😉. А если есть вопросы или желание пообщаться по тематике — заглядывайте в Вороний чат @r4ven_me_chat🧐. |
⚠️Перед началом важно отметить, что ShellGPT и Ollama — open source проекты, исходные коды которых размещены на GitHub. В том время, как серверная часть бота ChatGPT/Gemini являются проприетарным ПО, что не даёт возможности узнать все особенности обработки информации, которая происходит на их серверах. Не отправляйте сторонним сервисам никакой конфиденциальной информации.
Подготовка:
# установка необходимых утилит
sudo apt update && sudo apt install -y curl pipx
# установка Ollama
curl -fsSL https://ollama.com/install.sh | sh
# загрузка модели ~10 гб
ollama pull deepseek-coder-v2:latest
# установка ShellGPT
pipx install 'shell-gpt[litellm]'
Далее инициализируем ShellGPT:
sgpt "ping" 2> /dev/null
На запрос API ключа вводим любую строку, главное чтобы значение не было пустым и нажимаем Enter
.
Команда завершится ошибкой — это ожидаемое поведение при использовании Ollama.
Затем открываем на редактирование конфиг ShellGPT:
nvim ~/.config/shell_gpt/.sgptrc
Редактируем следующие параметры:
# любая строка, значение не должно быть пустым
OPENAI_API_KEY=some_random_string
# отключение специфики для openai
OPENAI_USE_FUNCTIONS=false
# использование LLM прокси - litellm
USE_LITELLM=true
# определение модели по умолчанию
DEFAULT_MODEL=ollama/deepseek-coder-v2
# выбор темы оформления (по умолчанию dracula)
CODE_THEME=nord-darker
Запускаем диалог с моделью:
sgpt --repl test_session
Это интерактивный режим, где происходит общение с ботом в формате чата с сохранением контекста.
Опционально: при наличии свободных ресурсов для ускорения отклика модели можно добавить автозагрузку её параметров в память (без выгрузки по таймауту):
cat << EOF > ~/.config/autostart/ollama.desktop
[Desktop Entry]
Type=Application
Name=Ollama
Comment=Запуск ollama при старте системы
Exec=env OLLAMA_KEEP_ALIVE="-1" bash -c 'ollama run deepseek-coder-v2 ping &> /dev/null'
Terminal=false
X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=60
EOF
Введение
Немного про ChatGPT
Определение понятия ChatGPT от него самого:
ChatGPT — это модель искусственного интеллекта, которая используется для создания чат-ботов и виртуальных помощников. Она основана на технологии глубокого обучения и нейронных сетей, которые позволяют ей понимать естественный язык и генерировать ответы на основе анализа входящей информации.
Немного про Gemini
Gemini — это также ИИ модель, только от Google с бесплатным API. Т.к. по умолчанию ShellGPT рассчитан на использование API совместимого с OpenAI, то для его использования в связке с Gemini необходимо настроить специальный прокси на базе node.js
, который будет обрабатывать запросы в формате OpenAI от ShellGPT и перенаправлять их Google Gemini. Про настройку такого прокси будет ниже.
Немного про Ollama
Позвольте без лишних слов отправить вас в отдельную статью на сайте🙃: Ollama — Локальный ИИ на вашем Linux ПК🦙.
Отмечу только, что в качестве локальной модели используется deepseek-code-v2.
Немного про ShellGPT
ShellGPT — Command Line App, программа-помощник в области программирования и системного администрирования. Работает в среде операционной системы Linux и использует командную оболочку для взаимодействия: отвечает на вопросы, даёт советы и рекомендации, выполняет различные команды и т.д.
Форматирование вывода ShellGPT ограничено возможностями терминала. Тем не менее вот, как выглядит одна из последних версий программы (да, это терминал🔥):

Подготовка
Примеры в этом руководстве выполнены в дистрибутиве Linux Mint 22. Но уверен, что аналогичным образом данное ПО можно также установить и использовать на других Linux системах.
Программа ShellGPT написана на языке программирования Python3, соответственно для работы первой необходимо, чтобы последний был установлен в системе.
По умолчанию в Linux Mint, Python3 предустановлен. Проверить текущую версию можно командой:
python3 --version
Предпочтительный вариант установки ShellGPT — использование утилиты pipx
.
💡
pipx
— это инструмент для установки и запуска Python-приложений в изолированной среде (venv), которую он автоматически создает и настраивает под каждую программу.
Пакет pipx
есть в стандартных репозиториях Linux Mint. Устанавливается обычным способом:
sudo apt update && sudo apt install -y pipx
💡
pipx
устанавливает Python-приложения в локальную директорию пользователя~/.local/pipx/venvs/
и делает символьные ссылки на исполняемые файлы в~/.local/bin/
. Для корректной работы эта директория должна быть в списке путей системной переменной$PATH
.
Если используется Gemini
Как уже говорил ранее, для использования ShellGPT в связке с Gemini необходимо доустановить прокси, который будет обрабатывать запросы в формате OpenAI и перенаправлять их Google Gemini.
Прокси устанавливается с помощью npm
и запускается от в контексте обычного пользователя на порту 8080
:
# установка npm
sudo apt install -y npm git
# создание директории с файлами прокси
mkdir -p ~/.local/node_modules/openai-gemini
# клонирование репозитория прокси
git clone https://github.com/PublicAffairs/openai-gemini ~/.local/node_modules/openai-gemini
# переход в рабочую директорию
cd ~/.local/node_modules/openai-gemini
# установка зависимостей
npm install
# запуск прокси
npm run start
💡 Для остановки сервиса используйте клавиши
Ctrl+c
.
Об успешном запуске будет свидетельствовать вывод:
> start
> node node.mjs
Listening on: { address: '::', family: 'IPv6', port: 8080 }
В соседнем терминале проверяем работу сервиса:
curl -I http://localhost:8080
ss -tlnap | grep 8080
В ответ должны получить:
HTTP/1.1 404 Not Found
access-control-allow-origin: *
content-type: text/plain;charset=UTF-8
Date: Mon, 04 Aug 2025 09:47:09 GMT
Connection: keep-alive
Keep-Alive: timeout=5
---
LISTEN 0 511 *:8080 *:* users:(("node",pid=15990,fd=21))
Сервис работает 👍. Настраиваем автозапуск прокси с помощью Systemd:
systemctl --user edit --full --force openai-gemini.service
Наполняем пользовательский юнит:
[Unit]
Description=Openai-gemini proxy service
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/%u/.local/node_modules/openai-gemini
ExecStart=/usr/bin/npm run start
Restart=on-failure
RestartSec=5
[Install]
WantedBy=default.target
Активируем автозапуск при входе на рабочий стол и проверяем статус:
systemctl --user enable --now openai-gemini
systemctl --user status openai-gemini
journalctl --user -fu openai-gemini
Установка и настройка ShellGPT для использования с ChatGPT/Gemini
Получение API токена для ChatGPT
Разумеется, для использования ChatGPT необходим аккаунт на портале OpenAI, чтобы получить API ключ для бота ChatGPT.
⚠️Хочу вас сразу предупредить, что использование API ключей ограничено разработчиками OpenAI. Бесплатный период доступа — 3 месяца после регистрации аккаунта (узнать время окончания можно тут). По истечению срока необходимо приобретать подписку. На данный момент это стоит ~20$ в месяц, что не мало. В качестве бесплатной и конфиденциальной альтернативы рекомендуется использовать ShellGPT совместно с Ollama (читайте ниже).
Сгененрировать такой ключ можно в настройках на странице своего аккаунта по адресу: https://platform.openai.com/account/api-keys

Получение API токена для Gemini
В отличие от ChatGPT у сервиса Gemini бесплатный API хоть и с ограничениями по количеству запросов, но для личного использования или небольшого пет-проекта — этого более, чем достаточно.
Получить API токен Gemibi можно в соответствующем разделе Google AI Studio: https://aistudio.google.com/apikey:
Установка ShellGPT
После генерации ключа выполняем установку shell-gpt с помощью pipx:
pipx install shell-gpt
Тут всё довольно прозаично😏.
После установки в системе появится исполняемый файл sgpt
. Проверяем, что он установился в нашу систему:
whereis sgpt
Пробуем запустить ассистента командой sgpt "Привет!"
. Если все установилось корректно, ты вы увидите запрос на введение API ключа, сгенерированного нами ранее. Вводим ключ и если бот вам ответил, значит все прошло успешно👌:
sgpt 'Привет!'
💡Обращаю ваше внимание на то, что текст обращения к боту из командной строки необходимо обрамлять кавычками..
При первом использовании ShellGPT попросит вас ввести API ключ. Вводим ключ от нужного сервиса: ChatGPT или Gemini.
☝️В случае Gemini команда звершится ошибкой. Это ожидаемое поведение, ведь нужно перенаправить данные в прокси. Это далее.
Файл конфигурации ShellGPT, после введения API ключа, генерируется автоматически по пути: ~/.config/shell_gpt/.sgptrc
Посмотреть его содержимое с помощью известной нам команды cat или консольного редактора nvim:
nvim ~/.config/shell_gpt/.sgptrc
Рассмотрим содержимое конфига немного подробнее:
# ключ API, также можно задать через переменную окружения OPENAI_API_KEY
OPENAI_API_KEY=your_api_key
# базовый URL backend-сервера, если указано "default", он будет определён на основе --model
API_BASE_URL=default
# API_BASE_URL=http://localhost:8080/v1
# максимальное количество кэшируемых сообщений на сессию чата
CHAT_CACHE_LENGTH=100
# папка для кэша чата
CHAT_CACHE_PATH=/tmp/chat_cache
# длина кэша запросов (количество)
CACHE_LENGTH=100
# папка для кэша запросов
CACHE_PATH=/tmp/cache
# тайм-аут запроса в секундах
REQUEST_TIMEOUT=60
# модель OpenAI по умолчанию
DEFAULT_MODEL=gpt-4o
# DEFAULT_MODEL=gemini-2.5-flash
# цвет по умолчанию для shell-ответов и автодополнений кода
DEFAULT_COLOR=magenta
# при использовании режима --shell по умолчанию выполнять команду без запроса
DEFAULT_EXECUTE_SHELL_CMD=false
# отключить потоковую передачу ответов
DISABLE_STREAMING=false
# тема pygment для отображения markdown (по умолчанию или для описания ролей)
CODE_THEME=default
# путь к директории с функциями
OPENAI_FUNCTIONS_PATH=/home/user/.config/shell_gpt/functions
# выводить результат функций, если LLM их использует
SHOW_FUNCTIONS_OUTPUT=false
# разрешить LLM использовать функции
OPENAI_USE_FUNCTIONS=true
# принудительно использовать LiteLLM (для локальных моделей)
USE_LITELLM=false
В случае использования Gemini в параметре API_BASE_URL
укажите адрес к прокси openai-gemini
, который по настроили на этапе подготовки. По умолчанию он такой: http://localhost:8080/v1
. А в качестве модели — Gemini, например: DEFAULT_MODEL=gemini-2.5-flash
.
Остальные параметры вы можете скорректировать под ваши предпочтения.
💡API ключ можно задать и с помощью переменной окружения
$OPENAI_API_KEY
. Если она задана, то ключ будет браться из неё. Если нет, то из файла~/.config/shell_gpt/.sgptrc
. На практике, проще всего использовать автоматически сгенерированный файл конфигурации.
Установка и настройка ShellGPT для использования с Ollama
Для реализации данной связки требуется установленная платформа Ollama. Описание процесса установки смотрите в отдельной статье.
⚠️Если вы ранее установили стандартный ShellGPT, то его желательно сперва удалить:
pipx uninstall shell-gpt
Обратите внимание, что по заявлению разработчика ShellGPT работа с локальными моделями не оптимизировано, так, как с онлайн сервисом ChatGPT:
❗️Note that ShellGPT is not optimized for local models and may not work as expected.
В случае взаимодействия с Ollama команда установки ShellGPT немного другая:
pipx install "shell-gpt[litellm]"
Здороваемся:
sgpt 'Привет!' 2> /dev/null
На запрос API ключа вводим любую строку, главное чтобы значение не было пустым и нажимаем Enter
:
Первая команда завершиться ошибкой — это ожидаемое поведение при использовании Ollama.
Теперь открываем конфиг:
nvim ~/.config/shell_gpt/.sgptrc
И редактируем/добавляем следующие параметры:
# определение модели по умолчанию
DEFAULT_MODEL=ollama/deepseek-coder-v2
# выбор темы оформления (опционально)
CODE_THEME=nord-darker
# отключение специфики для openai
OPENAI_USE_FUNCTIONS=false
# использование LLM прокси - litellm
USE_LITELLM=true
# любая строка, значение не должно быть пустым
OPENAI_API_KEY=some_random_string
💡Замените
deepseek-coder-v2
на выбранную вами модель.
💡Список всех доступных тем оформления ShellGPT найдёте тут.
Описание всех параметров смотрите в предыдущем пункте статьи☝️.
И все таки давайте заставим ИИ поздороваться:
sgpt 'Привет?'
Использование
И так, что же умеет установленный ShellGPT ассистент в нашем терминале:
- Простые запросы;
- Проведения анализа;
- Выполнение команд оболочки;
- Генерация кода;
- Чат с ботом;
- Режим диалога с ботом (read–eval–print loop), как веб версии.
Простые запросы
Например:
sgpt "Расскажи, что такое терминал в Linux?"
Или:
sgpt "Покажи содержимое конфига сервера ssh"
Хитрец, заставил нас вручную смотреть конфиг. Тем не менее, он указал, где он находится и как его посмотреть. С этим мы еще разберемся🤨. Машина будет выполнять что от нее требуют💪.
Проведения анализа
Для примера, давайте попросим бота проанализировать лог ошибок нашего графического сеанса Xorg. Данный файл является скрытым (начинается с точки) и лежит в домашней директории. С помощью механизма перенаправления (пайплайн) мы передадим вывод содержимого файла боту GPT:
ls -la .xsession-errors
cat .xsession-errors | sgpt "проанализируй вывод лога .xsession-errors"
На что он нам дал подробный анализ. Так можно продолжить, все больше углубляясь в изучение информации по теме. Согласитесь удобно. Не нужно лишних действий по «гуглению». Для этого еще браузер открывать нужно😉.
Но это и не самое интересное. Идём дальше🚶.
Выполнение команд оболочки
Для выполнения команд по запросу, команде sgpt
необходимо передав ключ --shell
. Давайте попробуем попросить бота отобразить только симлинки в директории /etc
:
sgpt --shell "выведи только симлинки в директории /etc"
💡Про симлинки мы говорили туть.
Как видим, мы дали боту описание того, что хотим, чтобы он сделал, а он предложил нам выполнить сгенерированную команду. После ручного подтверждения буквой e
и нажатием Enter
команда выполнилась в терминале. Не дурно🙄.
💡Команда
ls -l / | grep ^l
выводит содержимое каталога /etc и фильтрует вывод с помощью командыgrep
, используя регулярное выражения^
— что означает начало строки, и шаблон фильтра из буквыl
— которая в выводе командыls -l
обозначает файлы-символические ссылки (симлинки).
Давайте всё таки заставим бота вывести серверный конфиг программы SSH (не забываем про ключ --shell
):
sgpt --shell "Покажи содержимое конфига сервера ssh"
Ну вот. Совсем другое дело. Сам придумал, сам выполнил. Главное не увлекаться отдавая под контроль бота свой компьютер. А то еще установит на неё Windows🤷♂️.
Давайте рискнем и попросим бота обновить кэш пакетов и установить нам программу, например консольный редактор кода Neovim:
sgpt --shell "Обнови кэш и установи Neovim"
И запустить его:
sgpt --shell "Запусти Neovim"
Он таки это делает😮.
На самом деле возможности бота по использовании его в качестве ассистента в командной строке ограничиваются лишь вашей фантазией и иногда корректностью генерируемых им команд. Которые обязательно нужно проверять, перед их выполнением.
Аналогичным образом бот может формировать и выполнять команды по запуску docker контейнеров, составлять curl
команды с переданными боту данными в формате json, редактировать видео/аудио файлы с помощью консольной утилиты ffmpeg
, работать с файлами в нашей системе и многое другое.
Генерация кода
Для генерации кода с помощью ShellGPT используется ключ --code
. Давайте попросим его сформировать последовательность Фибоначчи от 1 до 50 с помощью двух способов: Bash и Python. Просим:
sgpt --code "Bash скрипт последовательности Фибоначчи от 1 до 50"
sgpt --code "Python скрипт последовательности Фибоначчи от 1 до 50"
Данные можно выводит в файл с помощью механизма перенаправления:
sgpt --code "Bash скрипт последовательности Фибоначчи от 1 до 50" > fib.sh
sgpt --shell "Сделай файл fib.sh исполняемым и запусти его"
Точно не помню, как правильно считать последовательность Фибоначчи, с 0 или с 1, но как по мне, это наглядный пример функциональности бота.
Давайте попросим его добавить комментарии для каждой строчки нашего fib.sh
:
cat fib.sh | sgpt --code "Добавь комментарии для каждой строки скрипта"
Чтож… Круто! Идём дальше.
Чат
Чат — это функция бота GPT, которой я пользуюсь чаще всего.
Для использования чата с ботом в командной строке необходимо добавить ключ --chat
, а также указать уникальное название сессии чата. В файлах кэша с этим названием будет храниться наша переписка с ботом. Пример:
sgpt --chat session_1 'Коротко: как выйти из vim?'
sgpt --chat session_1 'Про что этот диалог?'
Мы использовали название сессии session_1, для формирования кэша чата, чтобы использовать предыдущий запросы в своей беседе.
Обратите внимание, что по умолчанию кэш запросов и кэш чатов ограничен (100 единиц) в файле ~/.config/shell_gpt/.sgptrc
параметры: CHAT_CACHE_LENGTH=100
и CACHE_LENGTH=100
.
При достижении лимита программа может выдавать 400-ю ошибку клиента. При необходимости увеличьте данные параметры или используйте другое уникальное название сессии для создания нового чата.
Также можно использовать специальный идентификатор сессии: temp
для создания временной сессии. При указания этого идентификатора, каждая сессия будет новой.
Посмотреть список сессий чата можно командой sgpt --list-chats
, а посмотреть содержимое сессии sgpt --show-chat имя_сессии
:
sgpt --list-chats
sgpt --show-chat session1
Вообще у команды sgpt
очень удобная и красивая справка. Получить ее можно передать ключ --help
:
sgpt --help
Стоит упомянуть возможность комбинирования ролей бота. Например, чтобы улучшить генерацию кода, можно использовать историю чата с помощью --chat имя_сессии
и затем --code
для генерации кода и т.д. Такой подход справедлив и для роли --shell
. Пост получается большим, не будем сильно углубляться. В конце поста вы всегда найдете ссылки на источники.
Режим диалога (read–eval–print loop)
У ShellGPT есть режим чата в реальном времени, только в консоли. Называется этот режим repl (read–eval–print loop).
sgpt --repl session_2
Как видите, после выполнения команды мы перешли в интерактивный режим общения с ботом. Тут можно писать текст не используя кавычки. Довольно удобно. Чтобы выйти из этого режима используйте сочетания клавиш Ctrl+c
или Ctrl+d
.
По умолчанию режим --repl
использует роль chat, и задействует одни и те же названия сессий. Чтобы перейти к диалогу относительно ролей --shell
или --code
, необходимо их просто указать:
sgpt --repl session_3 --shell
sgpt --repl session_4 --code
Как видите, контекст беседы успешно работает.
Короткие alias для удобства
Давайте сделаем короткие alias
(псевдонимы команд) для бОльшего удобства использования бота.
Открываем на редактирование файл конфигурации оболочки, в моём случае Zsh:
nvim ~/.zshrc
И добавляем:
# ShellGPT aliases
alias G="sgpt --chat temp"
alias Gs="sgpt --shell"
alias Gc="sgpt --code"
alias GG="sgpt --repl temp"
Затем сохраняем файл и закрываем редактор.
Теперь реинициализируем нашу оболочку и затем командой alias
выведем наши добавления:
exec zsh
alias | grep '^G'
Проверяем:
G 'Как дела?'
Gs 'Найди исполняемый файл программы firefox'
Gc 'Напиши цикл bash для переименования файлов в текущей директории'
Прекрасно, работает. Попробуем режим repl:
GG
Отлично, теперь удобно обращаться к боту с помощью коротких команд:
G "текст_запроса"
— запрос в режиме чата:--chat
Gs "текст_запроса"
— запрос в режиме командной оболочки:--shell
Gc "текст_запроса"
— запрос в режиме генерации кода:--code
GG
— переход в режим диалога:--repl
💡Если вы используете bat для подсветки синтаксиса вывода в терминале, то
alias
генерации кода можно переделать в функцию, с удалением первой и последней строки в режиме кода (разметка markdown в Ollama):Gc() { echo "" sgpt --code "$*" | sed '1d;$d' | batcat --language=sh --paging=never --style=plain echo "" }
Выглядеть это будет примерно так:
Gc bash скрипт периодической проверки доступности порта 8080
Терминал с чат-ботом ChatGPT в виде отдельного приложения
Теперь давайте сделаем отдельное приложение для общения с ботом в режим repl. То есть при открытии этого приложения мы будем попадать сразу в режим диалога без ввода каких-либо команд.
Создаём файл .desktop
в директории приложений:
nvim ~/.local/share/applications/shell-gpt.desktop
И наполняем файл таким содержимым:
[Desktop Entry]
Name=ShellGPT
Comment=AI in commandline
Keywords=shellgpt;chatgpt;ollama;
TryExec=gnome-terminal
Exec=gnome-terminal -- sgpt --repl temp
Icon=gnome-robots
Type=Application
Categories=GNOME;GTK;System;TerminalEmulator;
StartupWMClass=ShellGPT
Сохраняем и закрываем.
Теперь идём в главное меню и набираем в поиске gpt:
Вот он, наш бот🤖. Запускаем его и закрепляем на панели быстрого доступа:

Теперь наш ИИ всегда под рукой. Также к ИИ удобно обращаться с помощью DropDown терминала, например — Guake.
Надеюсь у вас всё получилось, как у меня. Если есть вопросы, обязательно задавайте их в комментах статьи или в нашем чате телеграм😎.
Возможные проблемы
№ 1
Одной из ошибок, с которой я столкнулся это лимит кэша запросов к чату:

Избежать проблемы можно несколькими способами:
- Вместо уникальных идентификаторов сессий использовать специальный временный:
temp
- Удалить файлы кэша существующих чатов, список и местоположение которых можно узнать так:
sgpt --list-chats
- Увеличить лимит кэша в файле конфигурации, про который мы говорили вначале поста:
~/.config/shell_gpt/.sgptrc
. Параметры:CHAT_CACHE_LENGTH=100
CACHE_LENGTH=100
Если вы увидите 429 ошибку:
это означает что срок действия вашего доступа к API закончился и его необходимо приобретать 😔. Ох уж эти проприетарные сервисы..
№2
Назойливое уведомление после каждого запуска ShellGPT:
Оно появляется при использовании локальных моделей.
Убрать его можно изменив уровень логирования прокси litellm с помощью системной переменной. Например так:
echo 'export LITELLM_LOG="ERROR"' >> ~/.zshrc
source ~/.zshrc
Послесловие
Сегодня мы с вами узнали, как интегрировать прогрессивного ИИ ассистента ChatGPT/Ollama с помощью программы ShellGPT и её утилиты командной строки sgpt
.
Выполнили установку утилиты, изучили её файл конфигурации и режимы работы. Составили отдельные псевдонимы (alias
) команд для быстрого доступа к боту из терминала, а также сделали отдельное приложение для общения с ботом в отдельном окне в режиме реального времени (repl).
Еще раз прошу обратить внимание, что программа ShellGPT — по сути является консольным клиентом для подключения по API онлайн платформе OpenAI или локальной Ollama.
Успехов вам в изучении новых технологий!