Refactor: rename alias scripts to use ai-* prefix and add ai-claude proxy
This commit is contained in:
143
claude_setup.sh
143
claude_setup.sh
@@ -178,14 +178,14 @@ PYEOF
|
|||||||
chmod +x "$EFFORT_PROXY_BIN"
|
chmod +x "$EFFORT_PROXY_BIN"
|
||||||
success "claude-gpt-effort-proxy -> $EFFORT_PROXY_BIN"
|
success "claude-gpt-effort-proxy -> $EFFORT_PROXY_BIN"
|
||||||
|
|
||||||
# ── 4c. antigravity-claude-proxy (Gemini) ────────────────────
|
# ── 4c. antigravity CLI (Gemini) ──────────────────────────
|
||||||
info "Проверяю antigravity-claude-proxy..."
|
info "Проверяю antigravity CLI (agy)..."
|
||||||
if command -v antigravity-claude-proxy &>/dev/null || command -v acc &>/dev/null; then
|
if ! command -v agy &>/dev/null; then
|
||||||
success "antigravity-claude-proxy уже установлен"
|
info "Устанавливаю agy..."
|
||||||
|
curl -fsSL https://antigravity.google/cli/install.sh | bash
|
||||||
|
success "agy установлен"
|
||||||
else
|
else
|
||||||
info "Устанавливаю antigravity-claude-proxy (npm, без sudo)..."
|
success "agy уже установлен: $(agy --version 2>/dev/null | head -1)"
|
||||||
npm install -g antigravity-claude-proxy@latest
|
|
||||||
success "antigravity-claude-proxy установлен"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── 6. Папка для конфигов ────────────────────────────────────
|
# ── 6. Папка для конфигов ────────────────────────────────────
|
||||||
@@ -237,7 +237,7 @@ add_path_to_rc "$HOME/.bashrc"
|
|||||||
# ── 8. Генерация Standalone скриптов ────────────────────────
|
# ── 8. Генерация Standalone скриптов ────────────────────────
|
||||||
info "Генерирую standalone скрипты в $BIN_DIR..."
|
info "Генерирую standalone скрипты в $BIN_DIR..."
|
||||||
|
|
||||||
HELPERS_FILE="$BIN_DIR/claude_api_helpers.sh"
|
HELPERS_FILE="$BIN_DIR/ai-api-helpers.sh"
|
||||||
cat > "$HELPERS_FILE" << 'HELPEREOF'
|
cat > "$HELPERS_FILE" << 'HELPEREOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
@@ -403,10 +403,10 @@ _open_browser() {
|
|||||||
HELPEREOF
|
HELPEREOF
|
||||||
chmod +x "$HELPERS_FILE"
|
chmod +x "$HELPERS_FILE"
|
||||||
|
|
||||||
# === claude_gpt ===
|
# === ai-gpt ===
|
||||||
cat > "$BIN_DIR/claude_gpt" << 'GPTEOF'
|
cat > "$BIN_DIR/ai-gpt" << 'GPTEOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# claude_gpt — запуск нативного OpenAI Codex
|
# ai-gpt — запуск нативного OpenAI Codex
|
||||||
|
|
||||||
codex_bin="$HOME/.npm-global/bin/codex"
|
codex_bin="$HOME/.npm-global/bin/codex"
|
||||||
[ ! -f "$codex_bin" ] && codex_bin="$(command -v codex 2>/dev/null)"
|
[ ! -f "$codex_bin" ] && codex_bin="$(command -v codex 2>/dev/null)"
|
||||||
@@ -425,13 +425,13 @@ fi
|
|||||||
|
|
||||||
exec "$codex_bin" "$@"
|
exec "$codex_bin" "$@"
|
||||||
GPTEOF
|
GPTEOF
|
||||||
chmod +x "$BIN_DIR/claude_gpt"
|
chmod +x "$BIN_DIR/ai-gpt"
|
||||||
|
|
||||||
|
|
||||||
# === claude_deepseek ===
|
# === ai-deepseek ===
|
||||||
cat > "$BIN_DIR/claude_deepseek" << 'DEEPSEEKEOF'
|
cat > "$BIN_DIR/ai-deepseek" << 'DEEPSEEKEOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source ~/.local/bin/claude_api_helpers.sh
|
source ~/.local/bin/ai-api-helpers.sh
|
||||||
|
|
||||||
key_file="$HOME/.config/claude-launcher/deepseek_key"
|
key_file="$HOME/.config/claude-launcher/deepseek_key"
|
||||||
api_key=""
|
api_key=""
|
||||||
@@ -495,12 +495,12 @@ CLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flash \
|
|||||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
||||||
claude "$@"
|
claude "$@"
|
||||||
DEEPSEEKEOF
|
DEEPSEEKEOF
|
||||||
chmod +x "$BIN_DIR/claude_deepseek"
|
chmod +x "$BIN_DIR/ai-deepseek"
|
||||||
|
|
||||||
# === claude_kimi ===
|
# === ai-kimi ===
|
||||||
cat > "$BIN_DIR/claude_kimi" << 'KIMIEOF'
|
cat > "$BIN_DIR/ai-kimi" << 'KIMIEOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# claude_kimi — запуск нативного Kimi Code
|
# ai-kimi — запуск нативного Kimi Code
|
||||||
|
|
||||||
kimi_bin="$HOME/.kimi-code/bin/kimi"
|
kimi_bin="$HOME/.kimi-code/bin/kimi"
|
||||||
[ ! -f "$kimi_bin" ] && kimi_bin="$(command -v kimi 2>/dev/null)"
|
[ ! -f "$kimi_bin" ] && kimi_bin="$(command -v kimi 2>/dev/null)"
|
||||||
@@ -519,83 +519,44 @@ fi
|
|||||||
|
|
||||||
exec "$kimi_bin" "$@"
|
exec "$kimi_bin" "$@"
|
||||||
KIMIEOF
|
KIMIEOF
|
||||||
chmod +x "$BIN_DIR/claude_kimi"
|
chmod +x "$BIN_DIR/ai-kimi"
|
||||||
|
|
||||||
# === claude_gemini ===
|
# === ai-gemini ===
|
||||||
cat > "$BIN_DIR/claude_gemini" << 'GEMINIEOF'
|
cat > "$BIN_DIR/ai-gemini" << 'GEMINIEOF'
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source ~/.local/bin/claude_api_helpers.sh
|
# ============================================================
|
||||||
|
# ai-gemini — запуск нативного antigravity CLI (agy)
|
||||||
|
# ============================================================
|
||||||
|
|
||||||
acc_cmd=""
|
agy_bin="$HOME/.local/bin/agy"
|
||||||
command -v antigravity-claude-proxy &>/dev/null && acc_cmd="antigravity-claude-proxy"
|
[ ! -f "$agy_bin" ] && agy_bin="$(command -v agy 2>/dev/null)"
|
||||||
command -v acc &>/dev/null && acc_cmd="acc"
|
|
||||||
|
|
||||||
[ -z "$acc_cmd" ] && { echo "Ошибка: antigravity-claude-proxy не найден."; exit 1; }
|
if [ -z "$agy_bin" ] || [ ! -f "$agy_bin" ]; then
|
||||||
|
echo "Antigravity CLI (agy) не найден. Устанавливаю..."
|
||||||
proxy_pid=""
|
curl -fsSL https://antigravity.google/cli/install.sh | bash
|
||||||
cleanup() { [ -n "$proxy_pid" ] && kill "$proxy_pid" 2>/dev/null; }
|
agy_bin="$HOME/.local/bin/agy"
|
||||||
trap cleanup EXIT INT TERM
|
[ ! -f "$agy_bin" ] && agy_bin="$(command -v agy 2>/dev/null)"
|
||||||
|
|
||||||
if ! curl -sf http://localhost:8080/health &>/dev/null; then
|
|
||||||
"$acc_cmd" start &>/tmp/antigravity-proxy.log &
|
|
||||||
proxy_pid=$!
|
|
||||||
echo "Запускаю Gemini прокси..."
|
|
||||||
i=0; while [ $i -lt 15 ]; do sleep 1; curl -sf http://localhost:8080/health &>/dev/null && break; i=$((i+1)); done
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
has_auth=$(curl -sf "http://localhost:8080/account-limits" 2>/dev/null || echo "")
|
if [ -z "$agy_bin" ] || [ ! -f "$agy_bin" ]; then
|
||||||
if [ -n "$has_auth" ]; then
|
echo "Ошибка: не удалось установить antigravity CLI."
|
||||||
total_count=$(echo "$has_auth" | python3 -c "import sys, json; print(len(json.load(sys.stdin).get('accounts', [])))" 2>/dev/null || echo "0")
|
|
||||||
invalid_count=$(echo "$has_auth" | python3 -c "import sys, json; print(len([a for a in json.load(sys.stdin).get('accounts', []) if a.get('isInvalid')]))" 2>/dev/null || echo "0")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$has_auth" ] || [ "$total_count" = "0" ]; then
|
|
||||||
echo -e "\033[1;33m⚠️ ВНИМАНИЕ: Используйте ОТДЕЛЬНЫЙ Google-аккаунт!\033[0m"
|
|
||||||
_open_browser "http://localhost:8080"
|
|
||||||
echo "Нажмите Enter после завершения авторизации в браузере..."
|
|
||||||
read -r
|
|
||||||
elif [ "$invalid_count" -gt 0 ]; then
|
|
||||||
echo -e "\033[0;33m[ПРЕДУПРЕЖДЕНИЕ]\033[0m Обнаружены проблемные аккаунты ($invalid_count из $total_count)."
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "Проверка доступа к Gemini API... "
|
|
||||||
_claude_test_api "http://localhost:8080/v1/messages" "x-api-key: dummy" "gemini-pro-agent"
|
|
||||||
|
|
||||||
if [ "$_CLAUDE_TEST_CODE" != "400" ]; then
|
|
||||||
_handle_api_response "Gemini" "$_CLAUDE_TEST_CODE" "$_CLAUDE_TEST_BODY" ""
|
|
||||||
ret=$?
|
|
||||||
if [ $ret -ne 0 ]; then
|
|
||||||
if _claude_offer_reauth "Gemini"; then
|
|
||||||
_open_browser "http://localhost:8080"
|
|
||||||
echo "Нажмите Enter после авторизации/добавления..."
|
|
||||||
read -r
|
|
||||||
_claude_test_api "http://localhost:8080/v1/messages" "x-api-key: dummy" "gemini-pro-agent"
|
|
||||||
[ "$_CLAUDE_TEST_CODE" != "200" ] && [ "$_CLAUDE_TEST_CODE" != "400" ] && { echo "ОШИБКА"; exit 1; }
|
|
||||||
echo -e "\033[0;32mOK\033[0m"
|
|
||||||
else
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
_emsg=$(_claude_extract_error "$_CLAUDE_TEST_BODY")
|
|
||||||
if echo "$_emsg" | grep -q "RESOURCE_EXHAUSTED"; then
|
|
||||||
echo -e "\033[0;33m[КВОТА ИСЧЕРПАНА]\033[0m Все Gemini аккаунты исчерпали лимит запросов."
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
echo -e "\033[0;32mOK\033[0m"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ANTHROPIC_BASE_URL=http://localhost:8080 \
|
exec "$agy_bin" "$@"
|
||||||
ANTHROPIC_AUTH_TOKEN=dummy \
|
|
||||||
ANTHROPIC_MODEL=gemini-pro-agent \
|
|
||||||
ANTHROPIC_DEFAULT_OPUS_MODEL=gemini-pro-agent \
|
|
||||||
ANTHROPIC_DEFAULT_SONNET_MODEL=gemini-pro-agent \
|
|
||||||
ANTHROPIC_DEFAULT_HAIKU_MODEL=gemini-3.5-flash-low \
|
|
||||||
CLAUDE_CODE_SUBAGENT_MODEL=gemini-3.5-flash-low \
|
|
||||||
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 \
|
|
||||||
claude "$@"
|
|
||||||
GEMINIEOF
|
GEMINIEOF
|
||||||
chmod +x "$BIN_DIR/claude_gemini"
|
chmod +x "$BIN_DIR/ai-gemini"
|
||||||
|
|
||||||
|
# === ai-claude ===
|
||||||
|
cat > "$BIN_DIR/ai-claude" << 'CLAUDEEOF'
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ai-claude — запуск оригинального Claude Code (Anthropic)
|
||||||
|
exec claude "$@"
|
||||||
|
CLAUDEEOF
|
||||||
|
chmod +x "$BIN_DIR/ai-claude"
|
||||||
|
|
||||||
|
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"
|
||||||
|
|
||||||
success "Скрипты сгенерированы."
|
success "Скрипты сгенерированы."
|
||||||
|
|
||||||
@@ -606,10 +567,12 @@ echo -e "${GREEN} Установка завершена!${NC}"
|
|||||||
echo -e "${GREEN}════════════════════════════════════════════════════${NC}"
|
echo -e "${GREEN}════════════════════════════════════════════════════${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Доступные команды (теперь это независимые скрипты в ~/.local/bin):"
|
echo "Доступные команды (теперь это независимые скрипты в ~/.local/bin):"
|
||||||
echo -e " ${CYAN}claude_gpt${NC} — OpenAI Codex (нативный CLI, автоустановка)"
|
echo -e " ${CYAN}ai-claude${NC} — Оригинальный Claude Code (Anthropic)"
|
||||||
echo -e " ${CYAN}claude_deepseek${NC} — DeepSeek (API ключ сохраняется)"
|
echo -e " ${CYAN}ai-gpt${NC} — OpenAI Codex (нативный CLI, автоустановка)"
|
||||||
echo -e " ${CYAN}claude_kimi${NC} — Kimi K2.6 (нативный CLI, автоустановка)"
|
echo -e " ${CYAN}ai-deepseek${NC} — DeepSeek (API ключ сохраняется)"
|
||||||
echo -e " ${CYAN}claude_gemini${NC} — Gemini (Google OAuth через браузер)"
|
echo -e " ${CYAN}ai-kimi${NC} — Kimi K2.6 (нативный CLI, автоустановка)"
|
||||||
|
echo -e " ${CYAN}ai-gemini${NC} — Gemini (нативный agy CLI, автоустановка)"
|
||||||
echo ""
|
echo ""
|
||||||
echo -e "${YELLOW}⚠️ Для Gemini используйте отдельный Google-аккаунт!${NC}"
|
echo -e "${YELLOW}⚠️ Для Gemini используйте отдельный Google-аккаунт!${NC}"
|
||||||
echo ""
|
echo ""
|
||||||
|
echo -e "Чтобы команды были доступны сразу, выполните: ${GREEN}exec bash${NC}"
|
||||||
|
|||||||
Reference in New Issue
Block a user