From 4ae5ca149a2e6819ca8be57be10464b2d1500779 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D1=82=D0=B0=D0=BB=D0=B8=D0=B9=20=D0=9D=D0=B8?= =?UTF-8?q?=D0=BA=D0=B8=D1=82=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Mon, 8 Jun 2026 13:39:29 +0300 Subject: [PATCH] =?UTF-8?q?feat:=20=D0=B0=D0=B2=D1=82=D0=BE=D0=BE=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=B5=D0=BB=D0=B5=D0=BD=D0=B8=D0=B5=20BIN=5F?= =?UTF-8?q?DIR=20=E2=80=94=20~/bin=20=D0=B5=D1=81=D0=BB=D0=B8=20=D0=B5?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=B2=20PATH,=20=D0=B8=D0=BD=D0=B0=D1=87?= =?UTF-8?q?=D0=B5=20~/.local/bin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - BIN_DIR теперь определяется по наличию ~/bin в PATH (для Mint, где нет .bashrc) - source путей в генерируемых скриптах заменены на self-referential (через BASH_SOURCE) - agy_bin подменяется post-generation sed при нестандартном BIN_DIR - add_path_to_rc() формирует PATH динамически с учётом BIN_DIR - при миграции на ~/bin старые скрипты из ~/.local/bin удаляются Co-Authored-By: Claude Opus 4.8 --- scripts/ai-setup.sh | 38 +++++++++++++++++++++++++++----------- setup.sh | 2 +- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/scripts/ai-setup.sh b/scripts/ai-setup.sh index bbdde7a..0b88586 100755 --- a/scripts/ai-setup.sh +++ b/scripts/ai-setup.sh @@ -5,7 +5,12 @@ # ============================================================ CONFIG_DIR="$HOME/.config/ai-setup" -BIN_DIR="$HOME/.local/bin" +# Автоопределение: ~/bin если есть в PATH, иначе ~/.local/bin +if [[ ":$PATH:" == *":$HOME/bin:"* ]]; then + BIN_DIR="$HOME/bin" +else + BIN_DIR="$HOME/.local/bin" +fi NPM_GLOBAL="$HOME/.npm-global" PROXY_BIN="$BIN_DIR/claude-code-proxy" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" @@ -744,13 +749,14 @@ clean_rc "$HOME/.zshrc" add_path_to_rc() { local rc_file="$1" + local bin_rel="${BIN_DIR#$HOME/}" if [ -f "$rc_file" ]; then if ! grep -q 'NPM_GLOBAL' "$rc_file" 2>/dev/null; then - cat >> "$rc_file" << 'PATHEOF' + cat >> "$rc_file" << PATHEOF # Claude Code Launcher PATH -export NPM_GLOBAL="$HOME/.npm-global" -export PATH="$NPM_GLOBAL/bin:$HOME/.local/bin:$PATH" +export NPM_GLOBAL="\$HOME/.npm-global" +export PATH="\$NPM_GLOBAL/bin:\$HOME/${bin_rel}:\$PATH" PATHEOF success "PATH добавлен в $rc_file" fi @@ -1027,7 +1033,7 @@ chmod +x "$HELPERS_FILE" cat > "$BIN_DIR/ai-gpt" << 'GPTEOF' #!/usr/bin/env bash # ai-gpt - запуск нативного OpenAI Codex -source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true +source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true codex_bin="$HOME/.npm-global/bin/codex" [ ! -f "$codex_bin" ] && codex_bin="$(command -v codex 2>/dev/null)" @@ -1060,7 +1066,7 @@ chmod +x "$BIN_DIR/ai-gpt" # === ai-deepseek === cat > "$BIN_DIR/ai-deepseek" << 'DEEPSEEKEOF' #!/usr/bin/env bash -source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true +source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true key_file="$HOME/.config/ai-setup/deepseek_key" api_key="" @@ -1135,7 +1141,7 @@ chmod +x "$BIN_DIR/ai-deepseek" cat > "$BIN_DIR/ai-kimi" << 'KIMIEOF' #!/usr/bin/env bash # ai-kimi - запуск Claude Code через официальный Kimi Code API -source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true +source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true key_file="$HOME/.config/ai-setup/kimi_key" api_key="" @@ -1207,7 +1213,7 @@ chmod +x "$BIN_DIR/ai-kimi" cat > "$BIN_DIR/ai-openrouter" << 'OPENROUTEREOF' #!/usr/bin/env bash # ai-openrouter - запуск Claude Code через OpenRouter (любые модели) -source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true +source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true key_file="$HOME/.config/ai-setup/openrouter_key" api_key="" @@ -1297,19 +1303,21 @@ if [ -z "$agy_bin" ] || [ ! -f "$agy_bin" ]; then exit 1 fi -source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true +source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true # agy нативно подтягивает правила и проектные .md файлы, # поэтому ручная инъекция SYS_PROMPT больше не требуется. exec "$agy_bin" --dangerously-skip-permissions "$@" GEMINIEOF chmod +x "$BIN_DIR/ai-gemini" +# Подменяем путь к agy, если BIN_DIR отличается от ~/.local/bin +[ "$BIN_DIR" != "$HOME/.local/bin" ] && sed -i "s|\$HOME/\.local/bin|\$HOME/${BIN_DIR#$HOME/}|g" "$BIN_DIR/ai-gemini" # === ai-claude === cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF' #!/usr/bin/env bash # ai-claude - запуск оригинального Claude Code (Anthropic) -source "$HOME/.local/bin/ai-api-helpers.sh" 2>/dev/null || true +source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/ai-api-helpers.sh" 2>/dev/null || true _PROMPT_FILE=$(mktemp /tmp/ai-sys-prompt.XXXXXX) trap 'rm -f "$_PROMPT_FILE"' EXIT INT TERM _build_ai_sys_prompt > "$_PROMPT_FILE" @@ -1332,6 +1340,14 @@ fi info "Удаляю старые версии скриптов (claude_*)..." rm -f "$BIN_DIR/claude_gpt" "$BIN_DIR/claude_deepseek" "$BIN_DIR/claude_kimi" "$BIN_DIR/claude_gemini" "$BIN_DIR/claude_api_helpers.sh" +# Если переехали на ~/bin — удаляем старые скрипты из ~/.local/bin +if [ "$BIN_DIR" != "$HOME/.local/bin" ]; then + warn "BIN_DIR=$BIN_DIR — удаляю старые скрипты из ~/.local/bin/ ..." + rm -f "$HOME/.local/bin/ai-gpt" "$HOME/.local/bin/ai-deepseek" "$HOME/.local/bin/ai-kimi" \ + "$HOME/.local/bin/ai-openrouter" "$HOME/.local/bin/ai-gemini" "$HOME/.local/bin/ai-claude" \ + "$HOME/.local/bin/ai-api-helpers.sh" "$HOME/.local/bin/claude-gpt-effort-proxy.py" +fi + success "Скрипты сгенерированы." # ── 9. Итог ────────────────────────────────────────────────── @@ -1340,7 +1356,7 @@ echo -e "${GREEN}═════════════════════ echo -e "${GREEN} Установка завершена!${NC}" echo -e "${GREEN}════════════════════════════════════════════════════${NC}" echo "" -echo "Доступные команды (теперь это независимые скрипты в ~/.local/bin):" +echo "Доступные команды (теперь это независимые скрипты в ~/${BIN_DIR#$HOME/}):" echo "" echo " На базе Claude Code:" echo -e " ${CYAN}ai-claude${NC} - Оригинальный Claude Code (Anthropic)" diff --git a/setup.sh b/setup.sh index bd1b438..d20088c 100755 --- a/setup.sh +++ b/setup.sh @@ -56,7 +56,7 @@ else echo -e " ${GRY}Тесты маршрутизации: .ru напрямую, остальное через Amnezia.${CLR}" echo "" echo -e " ${BLD}7) Обновить${CLR}" - echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/.local/bin.${CLR}" + echo -e " ${GRY}git pull + перегенерация всех скриптов в ~/bin (или ~/.local/bin).${CLR}" echo "" echo -n "Выбери [1-7] или Enter для выхода: " read -r choice