vitaly 0b0d51b77c feat: обновить цвета статусной строки
- путь и ветка: светло-серый (37), как хинты Claude Code
- модель: приглушённый лососевый (173), фирменный цвет Claude
- лимиты и ctx: единая функция pct_color (зелёный/жёлтый/красный)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-07 00:28:49 +03:00

AI Setup

Набор shell-лаунчеров для локальной установки и запуска нескольких AI coding CLI из единой точки входа.

Главный скрипт - ai-setup.sh. Он настраивает пользовательские директории, устанавливает глобальные правила агентов из GLOBAL_RULES.md, разворачивает кастомные скиллы и полностью перегенерирует standalone-скрипты в ~/.local/bin.

Что реально устанавливается и генерируется

ai-setup.sh работает с такими путями:

  • ~/.local/bin - standalone-лаунчеры и вспомогательные скрипты.
  • ~/.config/ai-setup - сохранённые ключи и глобальные правила.
  • ~/.npm-global - пользовательский npm prefix.
  • ~/.claude/skills/ - кастомные скиллы для Claude Code.
  • ~/.gemini/config/plugins/local-setup/skills/ - те же скиллы для Gemini/agy.

После запуска генерируются или обновляются:

  • ~/.local/bin/ai-claude
  • ~/.local/bin/ai-gpt
  • ~/.local/bin/ai-deepseek
  • ~/.local/bin/ai-kimi
  • ~/.local/bin/ai-openrouter
  • ~/.local/bin/ai-gemini
  • ~/.local/bin/ai-api-helpers.sh
  • ~/.local/bin/claude-gpt-effort-proxy.py

Все генерируемые standalone-скрипты полностью перезаписываются текущей эталонной версией из ai-setup.sh. Старое содержимое не сливается и не дописывается.

Структура конфигов

Все конфиги, которые разворачиваются в домашнюю директорию, живут в папке home-configs/:

home-configs/
├── GLOBAL_RULES.md              # глобальные правила для всех агентов
├── claude/
│   └── skills/                  # кастомные скиллы для Claude Code (и Gemini)
│       ├── el-review/
│       │   └── SKILL.md
│       └── el-review-heavy/
│           └── SKILL.md
├── network/
│   ├── ks-off.sh                # временно отключить UFW kill switch
│   └── ks-on.sh                 # восстановить UFW kill switch
├── vless/
│   └── servers.conf             # список VLESS-серверов для прокси
├── proxychains/
│   └── proxychains-xray.conf    # конфиг proxychains (SOCKS5 через xray)
└── xray/                        # (зарезервировано под будущие xray-конфиги)

При запуске ai-setup.sh:

  • GLOBAL_RULES.md копируется в ~/.config/ai-setup/global_rules.md и рассылается в нативные rule-файлы (~/.claude/CLAUDE.md, ~/.codex/AGENTS.md, ~/.kimi-code/AGENTS.md, ~/.gemini/GEMINI.md).
  • Скиллы из home-configs/claude/skills/ копируются и в ~/.claude/skills/, и в ~/.gemini/config/plugins/local-setup/skills/. Для Gemini также генерируется plugin.json, чтобы agy распознал плагин local-setup.

Лаунчеры дополнительно обновляют native rule-файлы через helper _build_ai_sys_prompt при своём запуске.

В native rule-файлы попадают только глобальные правила. Полный prompt с проектными .md используется в ai-claude, ai-deepseek, ai-openrouter и ai-gemini; ai-gpt и ai-kimi полагаются на native rule-файлы своих CLI.

VLESS / Xray (опционально)

При запуске ai-setup.sh первым делом спрашивает, нужен ли режим VLESS-прокси:

Установить встроенный vless? [Y/n]

Если выбрать Y (по умолчанию):

  • Читает список серверов из home-configs/vless/servers.conf.
  • Реально проверяет каждый сервер: запускает xray с временным конфигом и тестирует curl'ом через SOCKS5. Работающие серверы помечаются зелёным, неработающие — красным.
  • Пользователь выбирает сервер.
  • Устанавливается Xray (/usr/local/bin/xray), генерируется конфиг (/etc/xray/config.json), создаётся и запускается systemd-сервис.
  • Отключается IPv6 на уровне системы (VLESS с ним конфликтует).
  • Устанавливается proxychains-ng.
  • Firefox настраивается на SOCKS5 (127.0.0.1:1080) с remote DNS.
  • Системный прокси (GNOME) настраивается для Chrome/Chromium.
  • Все лаунчеры оборачиваются в proxychains4 — трафик идёт через xray.

Если выбрать n (direct-режим — или если ранее был включён VLESS, а теперь отключается):

  • Останавливается и отключается systemd-сервис xray.
  • Системный прокси сбрасывается в none.
  • Firefox переключается на прямой доступ.
  • IPv6 восстанавливается.

Установка

Запускать от обычного пользователя, не через sudo:

bash ai-setup.sh

Скрипт прямо запрещает запуск от root. При этом, если Node.js не найден, он может попытаться установить Node.js через apt-get или dnf и тогда попросит sudo уже внутри этого шага.

После установки, если shell ещё не видит новые команды:

exec bash

Требования

  • bash
  • curl
  • python3
  • Node.js/npm для npm-глобальных инструментов
  • (опционально) proxychains-ng — для VLESS-режима
  • (опционально) gsettings — для автонастройки системного прокси

Если Node.js отсутствует, скрипт пытается поставить его автоматически для систем с apt-get или dnf. Для остальных систем Node.js нужно поставить вручную.

Команды

На базе Claude Code:

  • ai-claude - запускает оригинальный Claude Code (Anthropic API).
  • ai-deepseek - запускает Claude Code через DeepSeek Anthropic-compatible API. Проверяет и сохраняет DeepSeek API key.
  • ai-kimi - запускает Claude Code через официальный Kimi Code API (https://api.kimi.com/coding/). Проверяет и сохраняет Kimi API key.
  • ai-openrouter - запускает Claude Code через OpenRouter API (модели: GPT-5.5, Claude Opus 4.8, Claude Sonnet 4.6 и любые другие с OpenRouter). Проверяет и сохраняет OpenRouter API key.

Нативные CLI:

  • ai-gpt - запускает нативный OpenAI Codex CLI. При отсутствии пытается поставить через https://chatgpt.com/codex/install.sh (fallback: npm).
  • ai-gemini - запускает нативный Antigravity CLI agy. При отсутствии пытается поставить через https://antigravity.google/cli/install.sh.

Ключи и конфиги

  • DeepSeek key хранится в ~/.config/ai-setup/deepseek_key с правами 600.
  • Kimi key хранится в ~/.config/ai-setup/kimi_key с правами 600.
  • OpenRouter key хранится в ~/.config/ai-setup/openrouter_key с правами 600.
  • Исходник глобальных правил лежит в home-configs/GLOBAL_RULES.md.
  • При запуске глобальные правила пишутся в ~/.config/ai-setup/global_rules.md.

При запуске ai-setup.sh сразу обновляются native rule-файлы:

  • ~/.codex/AGENTS.md
  • ~/.kimi-code/AGENTS.md
  • ~/.claude/CLAUDE.md
  • ~/.gemini/GEMINI.md

Лаунчеры дополнительно обновляют эти файлы через helper _build_ai_sys_prompt при своём запуске.

Права запуска агентов

Лаунчеры запускают CLI в максимально свободном режиме:

  • ai-gpt использует --dangerously-bypass-approvals-and-sandbox.
  • ai-claude, ai-deepseek, ai-kimi, ai-openrouter и ai-gemini используют --dangerously-skip-permissions.

Это удобно для локального coding workflow, но это не sandbox для недоверенного кода.

Правила агентов

Действуют правила Карпати как есть: английский блок из GLOBAL_RULES.md устанавливается в ~/.config/ai-setup/global_rules.md без перевода и смысловых правок.

Кратко правила Карпати:

  1. Think Before Coding - не гадать, явно проговаривать допущения, варианты и неясности.
  2. Simplicity First - писать минимальный код без speculative features и лишней конфигурируемости.
  3. Surgical Changes - трогать только нужное, не рефакторить соседний код, чистить только свои следы.
  4. Goal-Driven Execution - формулировать проверяемую цель и доводить работу до верификации.

Пользовательские глобальные правила:

  1. Всегда отвечать по-русски, на "ты", дружелюбно и как живой программист.
  2. Не выполнять git commit без прямой и однозначной просьбы.
  3. Не выполнять git add без прямой просьбы, чтобы изменения оставались видны через обычный git diff.
  4. Использовать обычный дефис -, не em dash.
  5. В начале работы внимательно учитывать все проектные .md файлы.
  6. При повторяющихся инструкциях предлагать reusable skill, но создавать или менять skill-файлы только после явного согласия.

Правило этого проекта:

  1. При каждом запуске ai-setup.sh все генерируемые standalone-скрипты в ~/.local/bin (ai-gpt, ai-deepseek, ai-kimi, ai-openrouter, ai-gemini, ai-api-helpers.sh, ai-claude) должны полностью перезаписываться актуальными версиями. Merge и append старого содержимого запрещены.

Effort Mapping

В репозитории есть EFFORT_MAPPING.md — документ с полной таблицей маппинга effort-уровней между провайдерами (Anthropic, GPT-5.5, DeepSeek V4, Kimi K2.6, Gemini 3.x). Описывает, во что превращается low/medium/high/xhigh/max у каждого провайдера и где именно выполняется маппинг.

Также скрипт генерирует ~/.local/bin/claude-gpt-effort-proxy.py — легковесный прокси, который маппит xhighhigh для claude-code-proxy (GPT-бэкенд). Без него Claude Code не смог бы использовать xhigh effort с GPT.

Сетевые скрипты (network/)

Скрипты в home-configs/network/ не запускаются автоматически — ни ai-setup.sh, ни системой. Это ручные утилиты, которые нужно запускать явно от root.

Предназначены для окружения с Amnezia VPN и UFW kill switch (весь трафик через VPN, без VPN - только локалка).

ks-off.sh — временно отключить kill switch

sudo bash ~/path/to/home-configs/network/ks-off.sh

Отключает UFW. После этого нужно вручную отключить Amnezia через её GUI - трафик пойдёт напрямую через провайдера (российский IP). Используется когда нужен доступ к сайтам, которые блокируют VPN (ozon.ru и т.п.).

Перед запуском: выйди из Claude Code - сессия будет идти с другого IP.

ks-on.sh — восстановить kill switch

sudo bash ~/path/to/home-configs/network/ks-on.sh

Включает UFW обратно. Перед запуском нужно подключить Amnezia через GUI - иначе скрипт предупредит, что интерфейс amn0 не найден, и спросит подтверждение (без VPN весь интернет заблокируется).

Типичный workflow

# Нужен доступ к ru-сайтам напрямую:
1. Выйти из Claude Code
2. sudo bash ks-off.sh
3. Отключить Amnezia в GUI

# Возврат к нормальному режиму:
4. Подключить Amnezia в GUI (дождаться amn0)
5. sudo bash ks-on.sh
6. Войти в Claude Code

Тесты

В репозитории есть shell-тесты:

bash tests/test_fixes.sh
bash test_isolated.sh

tests/test_fixes.sh проверяет структуру ai-setup.sh и синтаксис bash. test_isolated.sh проверяет автоустановочные URL для ai-gpt и ai-kimi через mock curl.

Description
Установка различных AI CLI
Readme 1.2 MiB
Languages
Shell 100%