feat: мастер-скрипт setup.sh + перенос скриптов в scripts/

- все скрипты перенесены в scripts/ (ai-setup.sh, ru-bypass.sh, ks-off.sh, ks-on.sh)
- setup.sh — новый мастер-скрипт с меню: шаги 1-2 отделены от опций 3-4
- пояснения к GATEWAY и DEV при выборе пункта 2
- ai-setup.sh: SCRIPT_DIR поднят на уровень выше (/../) чтобы находить home-configs/
- tests/test_fixes.sh, test_isolated.sh: пути обновлены на scripts/ai-setup.sh
- QUICK_START.md, README.md, home-configs/network/README.md: пути обновлены

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 10:47:26 +03:00
parent 3d21f6b620
commit 805951d920
10 changed files with 108 additions and 29 deletions

View File

@@ -3,7 +3,7 @@
## 1. Установить AI-инструменты
```bash
bash ai-setup.sh
bash setup.sh
```
Спросит про VLESS-прокси (можно пропустить — `n`), затем установит лаунчеры
@@ -26,10 +26,10 @@ ip route show default
# Пример: default via 192.168.1.1 dev wlp1s0
# Запустить скрипт (дефолты: GATEWAY=192.168.1.1, DEV=wlp1s0)
sudo bash home-configs/network/ru-bypass.sh
sudo bash scripts/ru-bypass.sh
# Если параметры отличаются:
sudo GATEWAY=10.0.0.1 DEV=enp3s0 bash home-configs/network/ru-bypass.sh
sudo GATEWAY=10.0.0.1 DEV=enp3s0 bash scripts/ru-bypass.sh
```
После первого запуска systemd-сервисы установлены — при перезагрузке всё поднимается само.
@@ -46,12 +46,12 @@ bash tests/test_network.sh
```bash
# Выйти из Claude Code, затем:
sudo bash home-configs/network/ks-off.sh
sudo bash scripts/ks-off.sh
# Отключить Amnezia в GUI
# Вернуться к нормальному режиму:
# Подключить Amnezia в GUI, затем:
sudo bash home-configs/network/ks-on.sh
sudo bash scripts/ks-on.sh
```
## Подробнее

View File

@@ -2,11 +2,12 @@
Набор shell-лаунчеров для локальной установки и запуска нескольких AI coding CLI из единой точки входа.
Главный скрипт - `ai-setup.sh`. Он настраивает пользовательские директории, устанавливает глобальные правила агентов из `GLOBAL_RULES.md`, разворачивает кастомные скиллы и полностью перегенерирует standalone-скрипты в `~/.local/bin`.
Точка входа — `setup.sh` (мастер-скрипт с меню). Он вызывает нужный скрипт из `scripts/`.
`scripts/ai-setup.sh` настраивает пользовательские директории, устанавливает глобальные правила агентов из `GLOBAL_RULES.md`, разворачивает кастомные скиллы и полностью перегенерирует standalone-скрипты в `~/.local/bin`.
## Что реально устанавливается и генерируется
`ai-setup.sh` работает с такими путями:
`scripts/ai-setup.sh` работает с такими путями:
- `~/.local/bin` - standalone-лаунчеры и вспомогательные скрипты.
- `~/.config/ai-setup` - сохранённые ключи и глобальные правила.
@@ -25,7 +26,7 @@
- `~/.local/bin/ai-api-helpers.sh`
- `~/.local/bin/claude-gpt-effort-proxy.py`
Все генерируемые standalone-скрипты полностью перезаписываются текущей эталонной версией из `ai-setup.sh`. Старое содержимое не сливается и не дописывается.
Все генерируемые standalone-скрипты полностью перезаписываются текущей эталонной версией из `scripts/ai-setup.sh`. Старое содержимое не сливается и не дописывается.
## Структура конфигов
@@ -41,9 +42,7 @@ home-configs/
│ └── el-review-heavy/
│ └── SKILL.md
├── network/
── ks-off.sh # временно отключить UFW kill switch
│ ├── ks-on.sh # восстановить UFW kill switch
│ └── ru-bypass.sh # .ru трафик напрямую (bypass Amnezia), всё остальное через VPN
── README.md # документация по сетевой настройке
├── vless/
│ └── servers.conf # список VLESS-серверов для прокси
├── proxychains/
@@ -51,7 +50,7 @@ home-configs/
└── xray/ # (зарезервировано под будущие xray-конфиги)
```
При запуске `ai-setup.sh`:
При запуске `scripts/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`.
@@ -61,7 +60,7 @@ home-configs/
## VLESS / Xray (опционально)
При запуске `ai-setup.sh` первым делом спрашивает, нужен ли режим VLESS-прокси:
При запуске `scripts/ai-setup.sh` первым делом спрашивает, нужен ли режим VLESS-прокси:
```
Установить встроенный vless? [Y/n]
@@ -89,7 +88,13 @@ home-configs/
Запускать от обычного пользователя, не через `sudo`:
```bash
bash ai-setup.sh
bash setup.sh
```
Мастер-скрипт предложит меню с выбором что запустить. Либо напрямую:
```bash
bash scripts/ai-setup.sh
```
Скрипт прямо запрещает запуск от root. При этом, если Node.js не найден, он может попытаться установить Node.js через `apt-get` или `dnf` и тогда попросит `sudo` уже внутри этого шага.
@@ -134,7 +139,7 @@ exec bash
- Исходник глобальных правил лежит в `home-configs/GLOBAL_RULES.md`.
- При запуске глобальные правила пишутся в `~/.config/ai-setup/global_rules.md`.
При запуске `ai-setup.sh` сразу обновляются native rule-файлы:
При запуске `scripts/ai-setup.sh` сразу обновляются native rule-файлы:
- `~/.codex/AGENTS.md`
- `~/.kimi-code/AGENTS.md`
@@ -182,16 +187,16 @@ exec bash
Также скрипт генерирует `~/.local/bin/claude-gpt-effort-proxy.py` — легковесный прокси, который маппит `xhigh``high` для `claude-code-proxy` (GPT-бэкенд). Без него Claude Code не смог бы использовать `xhigh` effort с GPT.
## Сетевые скрипты (network/)
## Сетевые скрипты (scripts/)
Скрипты в `home-configs/network/` **не запускаются автоматически** — ни `ai-setup.sh`, ни системой. Это ручные утилиты, которые нужно запускать явно от root.
Скрипты в `scripts/` **не запускаются автоматически** — ни `setup.sh`, ни системой. Это ручные утилиты, которые нужно запускать явно от root (или через `bash setup.sh`).
Предназначены для окружения с Amnezia VPN и UFW kill switch (весь трафик через VPN, без VPN - только локалка).
### ks-off.sh — временно отключить kill switch
```bash
sudo bash ~/path/to/home-configs/network/ks-off.sh
sudo bash scripts/ks-off.sh
```
Отключает UFW. После этого нужно вручную отключить Amnezia через её GUI - трафик пойдёт напрямую через провайдера (российский IP). Используется когда нужен доступ к сайтам, которые блокируют VPN (ozon.ru и т.п.).
@@ -201,7 +206,7 @@ sudo bash ~/path/to/home-configs/network/ks-off.sh
### ks-on.sh — восстановить kill switch
```bash
sudo bash ~/path/to/home-configs/network/ks-on.sh
sudo bash scripts/ks-on.sh
```
Включает UFW обратно. Перед запуском нужно подключить Amnezia через GUI - иначе скрипт предупредит, что интерфейс `amn0` не найден, и спросит подтверждение (без VPN весь интернет заблокируется).
@@ -211,12 +216,12 @@ sudo bash ~/path/to/home-configs/network/ks-on.sh
```
# Нужен доступ к ru-сайтам напрямую:
1. Выйти из Claude Code
2. sudo bash ks-off.sh
2. sudo bash scripts/ks-off.sh
3. Отключить Amnezia в GUI
# Возврат к нормальному режиму:
4. Подключить Amnezia в GUI (дождаться amn0)
5. sudo bash ks-on.sh
5. sudo bash scripts/ks-on.sh
6. Войти в Claude Code
```
@@ -229,4 +234,4 @@ 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`.
`tests/test_fixes.sh` проверяет структуру `scripts/ai-setup.sh` и синтаксис bash. `test_isolated.sh` проверяет автоустановочные URL для `ai-gpt` и `ai-kimi` через mock `curl`.

View File

@@ -70,7 +70,7 @@ before.rules: 10/8, 172.16/12,
### Первый запуск / обновление
```bash
sudo bash home-configs/network/ru-bypass.sh
sudo bash scripts/ru-bypass.sh
```
Скрипт сам установит сервисы, добавит правило UFW и настроит NM dispatcher.
@@ -112,7 +112,7 @@ IP, например для оплаты или личного кабинета)
### ks-off.sh - отключить kill switch
```bash
sudo bash home-configs/network/ks-off.sh
sudo bash scripts/ks-off.sh
```
Отключает UFW. После этого - отключить Amnezia через GUI. Трафик пойдёт напрямую через
@@ -123,7 +123,7 @@ sudo bash home-configs/network/ks-off.sh
### ks-on.sh - восстановить kill switch
```bash
sudo bash home-configs/network/ks-on.sh
sudo bash scripts/ks-on.sh
```
Сначала подключи Amnezia через GUI (дождись появления amn0), потом запускай. Иначе

View File

@@ -8,7 +8,7 @@ CONFIG_DIR="$HOME/.config/ai-setup"
BIN_DIR="$HOME/.local/bin"
NPM_GLOBAL="$HOME/.npm-global"
PROXY_BIN="$BIN_DIR/claude-code-proxy"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
GLOBAL_RULES_SOURCE="$SCRIPT_DIR/home-configs/GLOBAL_RULES.md"
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; CYAN='\033[0;36m'; NC='\033[0m'

74
setup.sh Executable file
View File

@@ -0,0 +1,74 @@
#!/bin/bash
# Мастер-скрипт. Запускай от обычного пользователя (sudo попросит сам где нужно).
cd "$(dirname "$0")"
BLD='\033[1m'
GRN='\033[0;32m'
YEL='\033[0;33m'
GRY='\033[0;37m'
CLR='\033[0m'
echo ""
echo -e "${BLD}=== AI Setup ===${CLR}"
echo ""
echo -e "${YEL}Шаги для новой машины (выполнить по порядку):${CLR}"
echo ""
echo -e " ${BLD}1) AI-инструменты${CLR}"
echo -e " ${GRY}Устанавливает ai-claude, ai-gpt, ai-deepseek, ai-gemini и др.${CLR}"
echo -e " ${GRY}Запрашивает API-ключи. Запускать один раз.${CLR}"
echo ""
echo -e " ${BLD}2) Сеть: ru-bypass + kill switch${CLR}"
echo -e " ${GRY}.ru сайты (ozon, госуслуги) — напрямую с российским IP.${CLR}"
echo -e " ${GRY}*.loc офисные адреса — тоже напрямую.${CLR}"
echo -e " ${GRY}Всё остальное — только через Amnezia (kill switch).${CLR}"
echo -e " ${GRY}Запускать один раз на каждой машине.${CLR}"
echo ""
echo -e "${YEL}Дополнительно (по необходимости):${CLR}"
echo ""
echo -e " ${BLD}3) Отключить kill switch${CLR}"
echo -e " ${GRY}Временно — когда нужен прямой доступ без VPN (российский IP).${CLR}"
echo ""
echo -e " ${BLD}4) Включить kill switch${CLR}"
echo -e " ${GRY}Вернуть защиту обратно после отключения.${CLR}"
echo ""
echo -n "Выбери [1-4] или Enter для выхода: "
read -r choice
echo ""
case "$choice" in
1)
bash scripts/ai-setup.sh
;;
2)
echo -e "${GRY}Нужно указать два параметра твоей локальной сети:${CLR}"
echo -e "${GRY} GATEWAY — IP домашнего/офисного роутера (через него пойдёт .ru трафик напрямую)${CLR}"
echo -e "${GRY} DEV — сетевой интерфейс (wifi или провод), через который ты подключён к роутеру${CLR}"
echo ""
echo "Текущие маршруты (подсказка):"
ip route show default
echo ""
read -rp "GATEWAY (IP роутера) [192.168.1.1]: " gw
read -rp "DEV (интерфейс) [wlp1s0]: " dev
gw="${gw:-192.168.1.1}"
dev="${dev:-wlp1s0}"
echo ""
sudo GATEWAY="$gw" DEV="$dev" bash scripts/ru-bypass.sh
;;
3)
echo -e "${YEL}Перед этим выйди из Claude Code — сессия сменит IP.${CLR}"
echo -n "Продолжить? [y/N] "
read -r confirm
[ "$confirm" = "y" ] || [ "$confirm" = "Y" ] || exit 0
sudo bash scripts/ks-off.sh
;;
4)
sudo bash scripts/ks-on.sh
;;
"")
exit 0
;;
*)
echo "Неверный выбор."
exit 1
;;
esac

View File

@@ -12,12 +12,12 @@ BIN_DIR="$TMPDIR/bin"
mkdir -p "$BIN_DIR"
# Извлекаем ai-gpt
awk '/^cat > "\$BIN_DIR\/ai-gpt"/,/^GPTEOF/' ai-setup.sh | \
awk '/^cat > "\$BIN_DIR\/ai-gpt"/,/^GPTEOF/' scripts/ai-setup.sh | \
sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash
chmod +x "$BIN_DIR/ai-gpt"
# Извлекаем ai-kimi
awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' ai-setup.sh | \
awk '/^cat > "\$BIN_DIR\/ai-kimi"/,/^KIMIEOF/' scripts/ai-setup.sh | \
sed "s|\\\$BIN_DIR|$BIN_DIR|g" | bash
chmod +x "$BIN_DIR/ai-kimi"

View File

@@ -4,7 +4,7 @@
set -euo pipefail
SCRIPT="$(cd "$(dirname "$0")/.." && pwd)/ai-setup.sh"
SCRIPT="$(cd "$(dirname "$0")/.." && pwd)/scripts/ai-setup.sh"
GLOBAL_RULES_SOURCE="$(cd "$(dirname "$0")/.." && pwd)/home-configs/GLOBAL_RULES.md"
PASS=0; FAIL=0