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:
@@ -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
|
||||
```
|
||||
|
||||
## Подробнее
|
||||
|
||||
39
README.md
39
README.md
@@ -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`.
|
||||
|
||||
@@ -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), потом запускай. Иначе
|
||||
|
||||
@@ -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
74
setup.sh
Executable 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
|
||||
@@ -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"
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user