Files
ai-setup/README.md
vitaly 38b5f2710c docs: sync README/QUICK_START/EFFORT_MAPPING with current code
- Update ai-openrouter models in ai-setup.sh output and header
- Fix effort persistence wording (statusbar -> launcher)
- Unify KS_EXCEPTIONS -> KILL_SWITCH_EXCEPTIONS in docs and setup.sh prompt
- Clarify menu item 7 only updates AI launchers
- Add IPv6 note after ks-off.sh
- Scope UFW before.rules insertion to *filter section

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 09:16:37 +03:00

12 KiB
Raw Blame History

AI Setup

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

Точка входа - setup.sh (мастер-скрипт с меню). Он вызывает нужный скрипт из scripts/.

Структура репозитория

setup.sh                         # мастер-скрипт с меню
scripts/
├── ai-setup.sh                  # устанавливает AI-инструменты в выбранный BIN_DIR
├── fuck-rkn.sh                  # серверный установщик nginx + telemt + xray
├── ru-bypass.sh                 # .ru трафик напрямую, kill switch для остального
├── ks-off.sh                    # временно отключить kill switch
└── ks-on.sh                     # восстановить kill switch
home-configs/
├── GLOBAL_RULES.md              # глобальные правила для всех агентов
├── claude/
│   ├── hooks/                   # хуки аккаунтов Claude Code
│   ├── skills/                  # кастомные скиллы для Claude Code (и Gemini)
│   └── statusline-command.sh    # статусная строка Claude Code
├── network/
│   └── README.md                # подробная документация по сетевой настройке
├── vless/
│   └── servers.conf             # список VLESS-серверов для прокси
└── proxychains/
    └── proxychains-xray.conf    # конфиг proxychains (SOCKS5 через xray)
tests/
├── test_fixes.sh                # юнит-тесты структуры ai-setup.sh
└── test_network.sh              # тесты маршрутизации
test_isolated.sh                 # проверка автоустановки ai-gpt и ai-kimi
test_sigint.sh                   # ручной тест поведения SIGINT

Установка

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

bash setup.sh

Мастер-скрипт показывает меню:

Шаги для новой машины:
  1) AI-инструменты
  2) Сеть: ru-bypass + kill switch

Дополнительно (по необходимости):
  3) Отключить kill switch
  4) Включить kill switch
  5) Статус
  6) Проверить сеть
  7) Обновить           # git pull + перегенерация AI-лаунчеров

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

exec bash

Сеть: ru-bypass + kill switch

Полная документация: home-configs/network/README.md

Что это

  • .ru сайты (ozon.ru, госуслуги и др.) - идут напрямую через провайдера с российским IP
  • *.loc офисные адреса - тоже напрямую через локальный роутер
  • Всё остальное - только через Amnezia VPN
  • Если Amnezia упала - не-.ru трафик блокируется UFW (kill switch), .ru и *.loc продолжают работать

Как работает

Amnezia захватывает весь трафик двумя широкими маршрутами (0.0.0.0/1 и 128.0.0.0/1 через amn0). ru-bypass.sh добавляет тысячи более специфичных маршрутов для .ru IP-блоков через локальный роутер. Ядро Linux выбирает самый специфичный маршрут - .ru идёт напрямую, остальное в amn0.

UFW настроен так:

default deny outgoing        — запрещено всё по умолчанию
allow out on amn0            — через Amnezia можно всё
before.rules: ipset ru-direct — для .ru IP разрешён прямой выход
before.rules: RFC1918         — 10/8, 172.16/12, 192.168/16 тоже напрямую (*.loc)

Первый запуск

Через меню (bash setup.sh → пункт 2) - он автоматически определит GATEWAY и DEV из ip route show default, предложит профиль и сохранит настройки в ~/.config/ai-setup/network_<profile>.conf (по умолчанию профиль равен $(hostname)).

Или напрямую:

sudo bash scripts/ru-bypass.sh
# для другой сети:
sudo GATEWAY=10.0.0.1 DEV=eth0 bash scripts/ru-bypass.sh

Что устанавливается при первом запуске

  • ipset (если не установлен)
  • Скрипт копируется в /usr/local/bin/ru-bypass.sh
  • ru-ipset-restore.service - восстанавливает ipset из файла до старта UFW при загрузке
  • ru-bypass.service - обновляет RIPE-список и маршруты после network-online
  • ru-bypass.timer - ежедневно запускает обновление RIPE-списка и маршрутов
  • NM dispatcher /etc/NetworkManager/dispatcher.d/99-ru-bypass - перезапускает скрипт при поднятии amn0
  • /etc/ru-bypass.conf - root-конфиг для запусков из systemd/NM dispatcher
  • /etc/hosts блок для локальных Eltex-доменов

При каждом запуске:

  • Скачивает список .ru IP-блоков из RIPE (кэш 24ч, /var/cache/ru-delegations.txt)
  • Обновляет ipset ru-direct (~11000 записей)
  • Добавляет в ipset встроенные и пользовательские kill switch исключения
  • Сохраняет ipset в /etc/ipset.conf для восстановления после ребута
  • Добавляет маршруты через GATEWAY для всех .ru блоков и RFC1918
  • Обновляет UFW before.rules, добавляет прямые iptables-правила и отключает IPv6 при активном kill switch

ks-off / ks-on

Для ситуаций когда нужен временный доступ без VPN (сайты, блокирующие нероссийский IP):

# 1. Выйти из Claude Code
# 2. Отключить kill switch
sudo bash scripts/ks-off.sh
# 3. Отключить Amnezia в GUI

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

Проверка

ip route get 8.8.8.8        # -> dev amn0  (Google через VPN)
ip route get 77.88.8.8      # -> dev <DEV> (ya.ru напрямую)
ip route get 10.10.0.1      # -> dev <DEV> (*.loc напрямую)
bash tests/test_network.sh  # полные тесты

AI инструменты

scripts/ai-setup.sh устанавливает и настраивает все AI CLI.

После запуска генерируются или обновляются в выбранном BIN_DIR: ~/bin, если он уже есть в PATH, иначе ~/.local/bin.

  • ai-claude - Claude Code (Anthropic API)
  • ai-gpt - нативный OpenAI Codex CLI
  • ai-deepseek - Claude Code через DeepSeek API
  • ai-kimi - Claude Code через официальный Kimi Code API (api.kimi.com/coding)
  • ai-openrouter - Claude Code через OpenRouter (GPT-5.5, Grok, Qwen, MiniMax, Llama и др.)
  • ai-gemini - нативный Antigravity CLI agy
  • ai-api-helpers.sh - вспомогательные функции для лаунчеров
  • claude-gpt-effort-proxy.py - совместимый helper для старого GPT/claude-code-proxy backend

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

Также устанавливается:

  • ~/.config/ai-setup/global_rules.md и native 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/

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

При запуске scripts/ai-setup.sh спрашивает, нужен ли VLESS-прокси для AI API запросов.

Если выбрать Y:

  • Читает список серверов из home-configs/vless/servers.conf
  • Проверяет каждый сервер реальным curl'ом через SOCKS5
  • Устанавливает Xray, генерирует конфиг, создаёт systemd сервис
  • Все лаунчеры оборачиваются в proxychains4

Если выбрать n - VLESS отключается, xray останавливается, системный/Firefox прокси сбрасываются в direct. IPv6 включается обратно только если UFW kill switch не активен.

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

  • ~/.config/ai-setup/deepseek_key - DeepSeek API key (права 600)
  • ~/.config/ai-setup/kimi_key - Kimi API key (права 600)
  • ~/.config/ai-setup/openrouter_key - OpenRouter API key (права 600)
  • ~/.config/ai-setup/global_rules.md - глобальные правила агентов
  • ~/.config/ai-setup/network_<profile>.conf - сохранённые сетевые профили (GATEWAY, DEV, LOCAL_DNS, AMNEZIA_SERVER, KILL_SWITCH_EXCEPTIONS)

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

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

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

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

В home-configs/GLOBAL_RULES.md - правила Карпати (Think Before Coding, Simplicity First, Surgical Changes, Goal-Driven Execution) плюс пользовательские правила (отвечать по-русски, не коммитить без команды, не делать git add без команды и др.).

scripts/ai-setup.sh копирует их в native rule-файлы всех CLI. Лаунчеры обновляют их при каждом запуске.

Effort Mapping

EFFORT_MAPPING.md - таблица effort-уровней (low/medium/high/xhigh/max) для Claude Code лаунчеров (ai-claude, ai-deepseek, ai-kimi, ai-openrouter). Нативные ai-gpt и ai-gemini живут отдельно.

claude-gpt-effort-proxy.py маппит xhigh -> high для совместимости со старым GPT/claude-code-proxy backend; текущие лаунчеры его напрямую не вызывают.

Требования

  • bash, curl, python3
  • Node.js/npm (для ai-gpt через Codex CLI и ai-gemini через agy)
  • ipset (устанавливается автоматически при запуске ru-bypass.sh)
  • (опционально) proxychains-ng - для VLESS-режима
  • (опционально) gsettings - для автонастройки системного прокси GNOME

Тесты

bash tests/test_fixes.sh   # структура ai-setup.sh и синтаксис bash
bash test_isolated.sh      # автоустановка ai-gpt и ai-kimi через mock curl
bash tests/test_network.sh # маршрутизация (нужен активный ru-bypass)
# test_sigint.sh           # ручной диагностический тест SIGINT