Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

aiFish

AI-помощник для Fish Shell с интеграцией OpenAI API, управлением контекстом диалогов и визуализацией через cowsay/lolcat.

Что это?

aiFish — интерактивный помощник на базе ChatGPT для терминала. Задавай вопросы, получай ответы с сохранением контекста диалога, и все это с красивыми коровками и цветами!

Особенности

  • Поддержка моделей OpenAI для chat completions (GPT-3.5, GPT-4o, GPT-4.1, GPT-5, o-series)
  • Интерактивный выбор модели стрелочками (через fzf)
  • Думающая корова перед ответом (через cowthink + lolcat)
  • Красивый вывод markdown с подсветкой синтаксиса (через python3-rich)
  • Управление контекстом диалогов
  • Pipe support для работы с файлами
  • Автоматическая установка зависимостей
  • Кэширование списка моделей (24 часа)

Установка

1. Установка функции

# Скопировать ai.fish в директорию функций Fish
cp aiFish/ai.fish ~/.config/fish/functions/

# Перезагрузить Fish
exec fish

2. Зависимости

Зависимости устанавливаются автоматически при первом запуске!

  • Обязательные: curl, jq
  • Опциональные:
    • python3-rich - красивый вывод markdown с подсветкой синтаксиса
    • cowsay, lolcat - думающая корова с цветами
    • fzf - выбор моделей стрелочками

Или установи вручную:

sudo dnf5 install -y curl jq python3-rich cowsay lolcat fzf

3. Настройка API ключа

Получи API ключ на https://platform.openai.com/api-keys

# Вариант 1: Через переменную Fish (рекомендуется)
set -Ux OPENAI_API_KEY "sk-..."

# Вариант 2: Через мастер настройки
ai --setup
# или
ai setup

4. Первый запрос

ai "привет!"

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

Базовые команды

# Простой запрос
ai "что такое fish shell?"

# Новый диалог (очистка контекста)
ai --new "начнем с чистого листа"

# Запрос без cowsay (для скриптов)
ai --raw "дай список команд"

# Работа с pipe
cat script.fish | ai "объясни что делает этот код"
git diff | ai "сделай код ревью"

Выбор модели

# Интерактивный выбор модели (стрелочками через fzf)
ai --setmodel
# или
ai setmodel

# Показать текущую модель
ai --current
# или
ai current

# Список всех доступных моделей
ai --models
# или
ai models

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

# Новый диалог (очистка контекста перед запросом)
ai --new "начать заново"

# Очистить контекст
ai --clear
# или
ai clear

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

# Мастер настройки
ai --setup
# или
ai setup

# Справка
ai --help
# или
ai help

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

Помощь с командами

ai "как найти все .fish файлы в текущей директории?"
ai "объясни команду grep"
ai "напиши скрипт для бэкапа"

Код ревью

cat my_script.fish | ai "проверь код на ошибки"
git diff | ai "что изменилось и все ли правильно?"

Обучение

ai "объясни что такое pipes в Linux"
ai "как работает fish shell?"
ai "разница между && и ||"

Программирование

ai --think "напиши алгоритм сортировки на Python"
ai --smart "оптимизируй этот код: $(cat script.py)"

Системное администрирование

ai "как проверить использование диска?"
ai "настроить SSH без пароля"
ai "найти процесс занимающий порт 8080"

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

Файл конфигурации: ~/.config/aiFish/config.json

{
  "default_model": "gpt-4o-mini",
  "max_context_messages": 20,
  "temperature": 0.7,
  "show_cost": false,
  "auto_save": true,
  "aliases": {
    "fast": "gpt-3.5-turbo",
    "balanced": "gpt-4o-mini",
    "smart": "gpt-4o",
    "genius": "gpt-4.1",
    "think": "o4-mini",
    "ultimate": "gpt-5-mini"
  }
}

Параметры

  • default_model - модель по умолчанию
  • max_context_messages - максимум сообщений в контексте (20)
  • temperature - креативность ответа (0.0-2.0, дефолт 0.7)
  • show_cost - показывать стоимость запросов
  • auto_save - автосохранение контекста

Примечание: Ограничение max_tokens убрано - каждая модель использует свой максимум (GPT-3.5: 4K, GPT-4o: 16K, GPT-4.1: 128K токенов)

Структура данных

~/.config/aiFish/
├── config.json              # Настройки
├── current_context.json     # Текущий диалог
├── models_cache.json        # Кэш моделей (24ч)
├── contexts/                # Сохраненные диалоги
│   └── *.json
└── history/                 # История (опционально)

Доступные модели

GPT-3.5 (быстро и дешево)

  • gpt-3.5-turbo - ~$0.002 за 1K токенов

GPT-4o (рекомендуется)

  • gpt-4o - мультимодальная, ~$0.005 за 1K
  • gpt-4o-mini - эффективная, ~$0.00015 за 1K

GPT-4.1 (самая умная)

  • gpt-4.1 - 1M токенов контекст, ~$0.006 за 1K

Reasoning модели (для сложных задач)

  • o4-mini - быстрая, ~$0.0011 за 1K
  • o3 - продвинутая, ~$0.002 за 1K

GPT-5 (новейшая)

  • gpt-5-mini - ~$0.008 за 1K
  • gpt-5 - требует регистрацию

Полный список: ai --models --verbose

Советы по использованию

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

Контекст сохраняет историю диалога, что позволяет AI помнить предыдущие сообщения. Лимит - 20 сообщений по умолчанию.

# Начать новую тему
ai --new "новый вопрос"

# Или очистить текущий
ai --clear

Выбор модели

Выбирай подходящую модель через ai setmodel:

  • gpt-3.5-turbo - для простых вопросов (быстро и дешево)
  • gpt-4o-mini - оптимально для большинства задач
  • gpt-4o - для сложных вопросов
  • o4-mini - для математики, кода, логики
  • gpt-4.1 - самая умная, большой контекст

Экономия токенов

# Используй --raw для скриптов
result=$(ai --raw "дай только число")

# Очищай контекст когда не нужен
ai clear

Troubleshooting

API ключ не найден

# Проверь что ключ установлен
echo $OPENAI_API_KEY

# Установи заново
set -Ux OPENAI_API_KEY "sk-..."

Ошибка 429 (Rate limit)

Превышен лимит запросов. Подожди или обнови подписку на OpenAI.

Нет зависимостей

sudo dnf5 install -y curl jq python3-rich cowsay lolcat fzf

Нет подсветки синтаксиса

Установи python3-rich:

sudo dnf5 install -y python3-rich

FAQ

Q: Как поменять модель по умолчанию?

ai --setmodel
# или
ai setmodel

Q: Как посмотреть доступные модели?

ai --models
# или
ai models

Q: Почему модель не умеет искать в интернете? Обычные модели (gpt-4.1, gpt-4o) не имеют доступа к интернету. Используй модели с -search- в названии:

ai --setmodel
# Выбери gpt-4o-search-preview или gpt-5-search-api

Q: Работает ли без интернета? Нет, требуется подключение к OpenAI API.

Q: Можно ли использовать другие API? Пока только OpenAI. Поддержка других провайдеров планируется.

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

  • API ключ хранится в переменной Fish или файле с правами 600
  • Все данные локально в ~/.config/aiFish/
  • Запросы идут напрямую к OpenAI
  • Логи не ведутся

Лицензия

Open source. Используй свободно.

Автор

DXVSI