177 lines
5.2 KiB
Markdown
177 lines
5.2 KiB
Markdown
# 🧩 switch_api_key — Claude API Key Switcher for macOS
|
||
|
||
`switch_api_key`, proje dizininde bulunan `.env` dosyasını okuyarak **Claude API anahtarları arasında geçiş** yapmanızı sağlayan bir Bash betiğidir.
|
||
Her çalıştırıldığında aktif anahtarı değiştirir, gerekli ortam değişkenlerini yükler, eski `claude` CLI oturumlarını kapatır ve yeni ayarlarla CLI’ı yeniden başlatır.
|
||
|
||
Bu sayede, örneğin **LITE** ve **PRO** API anahtarlarını tek komutla değiştirebilir, her biriyle farklı kota veya model ayarlarını test edebilirsiniz.
|
||
|
||
---
|
||
|
||
## ⚙️ Özellikler
|
||
|
||
- 🔁 **Tek komutla API anahtarlarını değiştirir**
|
||
- 🧠 **Claude CLI’ı otomatik olarak yeniden başlatır**
|
||
- 📦 **.env dosyasından ayarları okur ve günceller**
|
||
- 🌐 **Base URL ve model değerlerini otomatik export eder**
|
||
- 🚫 **Auth çakışmalarını otomatik temizler**
|
||
(`ANTHROPIC_AUTH_TOKEN` değişkeni varsa kaldırılır)
|
||
|
||
---
|
||
|
||
## 📂 .env Dosyası Yapısı
|
||
|
||
Proje dizininde `.env` dosyanız şu formatta olmalıdır:
|
||
|
||
```bash
|
||
# === Claude API Config ===
|
||
API_KEY_LITE=LITE_KEY_BURAYA
|
||
API_KEY_PRO=PRO_KEY_BURAYA
|
||
ACTIVE_KEY=lite
|
||
|
||
# === Anthropic API Settings ===
|
||
ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic"
|
||
ANTHROPIC_MODEL="glm-4.6"
|
||
```
|
||
|
||
| Değişken | Açıklama |
|
||
|-----------|-----------|
|
||
| `API_KEY_LITE` | LITE planına ait Claude API anahtarı |
|
||
| `API_KEY_PRO` | PRO planına ait Claude API anahtarı |
|
||
| `ACTIVE_KEY` | Şu anda aktif olan anahtar (`lite` veya `pro`) |
|
||
| `ANTHROPIC_BASE_URL` | API’nin taban URL adresi |
|
||
| `ANTHROPIC_MODEL` | Kullanılacak model ismi |
|
||
|
||
---
|
||
|
||
## 🧩 Kurulum
|
||
|
||
1. Betik dosyasını oluştur:
|
||
|
||
```bash
|
||
sudo nano /usr/local/bin/switch_api_key
|
||
```
|
||
|
||
2. Aşağıdaki kodu yapıştır:
|
||
|
||
```bash
|
||
#!/bin/bash
|
||
ENV_FILE=".env"
|
||
|
||
GREEN="\033[0;32m"
|
||
YELLOW="\033[0;33m"
|
||
CYAN="\033[0;36m"
|
||
RESET="\033[0m"
|
||
|
||
# 0️⃣ AUTH TOKEN ÇAKIŞMASINI ENGELLE
|
||
if [[ -n "$ANTHROPIC_AUTH_TOKEN" ]]; then
|
||
echo -e "${YELLOW}⚠️ ANTHROPIC_AUTH_TOKEN tespit edildi. Kaldırılıyor...${RESET}"
|
||
unset ANTHROPIC_AUTH_TOKEN
|
||
sleep 1
|
||
fi
|
||
|
||
# 1️⃣ .env kontrolü
|
||
if [[ ! -f "$ENV_FILE" ]]; then
|
||
echo -e "${YELLOW}⚠️ Bu dizinde .env dosyası bulunamadı.${RESET}"
|
||
exit 1
|
||
fi
|
||
|
||
# 2️⃣ .env dosyasını yükle
|
||
set -a; source "$ENV_FILE"; set +a
|
||
|
||
echo "----------------------------------------"
|
||
echo -e "${CYAN}🔍 Mevcut aktif key: $ACTIVE_KEY${RESET}"
|
||
|
||
# 3️⃣ Aktif anahtarı değiştir
|
||
if [[ "$ACTIVE_KEY" == "lite" ]]; then
|
||
export ANTHROPIC_API_KEY="$API_KEY_PRO"
|
||
NEW_DESC="Claude Code PRO api key"
|
||
NEW_ACTIVE="pro"
|
||
else
|
||
export ANTHROPIC_API_KEY="$API_KEY_LITE"
|
||
NEW_DESC="Claude Code LITE api key"
|
||
NEW_ACTIVE="lite"
|
||
fi
|
||
|
||
# 4️⃣ Ortam değişkenlerini yükle
|
||
export ANTHROPIC_BASE_URL=$ANTHROPIC_BASE_URL
|
||
export ANTHROPIC_MODEL=$ANTHROPIC_MODEL
|
||
|
||
# 5️⃣ .env güncelle
|
||
sed -i '' "s/^ACTIVE_KEY=.*/ACTIVE_KEY=$NEW_ACTIVE/" "$ENV_FILE"
|
||
|
||
echo -e "${YELLOW}🧩 Yeni key seçildi:${RESET} $NEW_DESC"
|
||
echo -e "${CYAN}🔁 .env dosyası güncellendi (ACTIVE_KEY=$NEW_ACTIVE)${RESET}"
|
||
|
||
# 6️⃣ Claude süreçlerini kapat
|
||
echo -e "${YELLOW}💀 Çalışan Claude CLI süreçleri kapatılıyor...${RESET}"
|
||
pkill -f "claude" 2>/dev/null
|
||
sleep 3
|
||
|
||
# 7️⃣ Bilgilendirme
|
||
tail4="${ANTHROPIC_API_KEY: -4}"
|
||
echo -e "${GREEN}✅ Yeni key aktif:${RESET} $NEW_DESC"
|
||
echo -e "${CYAN}🔑 Son 4 hane: ****${tail4}${RESET}"
|
||
echo -e "${CYAN}🌐 Base URL:${RESET} $ANTHROPIC_BASE_URL"
|
||
echo -e "${CYAN}🧠 Model:${RESET} $ANTHROPIC_MODEL"
|
||
echo -e "${CYAN}⏳ Son kontroller yapılıyor...${RESET}"
|
||
sleep 3
|
||
|
||
# 8️⃣ Claude CLI başlat
|
||
echo -e "${GREEN}🚀 Yeni key ile Claude CLI başlatılıyor...${RESET}"
|
||
echo "----------------------------------------"
|
||
exec claude --dangerously-skip-permissions
|
||
```
|
||
|
||
3. Çalıştırılabilir hale getir:
|
||
```bash
|
||
sudo chmod +x /usr/local/bin/switch_api_key
|
||
```
|
||
|
||
---
|
||
|
||
## 🚀 Kullanım
|
||
|
||
Proje dizininde `.env` dosyası mevcutken sadece şu komutu çalıştır:
|
||
|
||
```bash
|
||
switch_api_key
|
||
```
|
||
|
||
### 🔁 Betik ne yapar?
|
||
|
||
1. `.env` dosyasını okur
|
||
2. `ANTHROPIC_AUTH_TOKEN` varsa **unset** eder (çakışmayı önler)
|
||
3. Aktif API anahtarını tespit eder (`lite` ↔ `pro`)
|
||
4. Diğer anahtara geçer
|
||
5. `.env` dosyasındaki `ACTIVE_KEY` satırını günceller
|
||
6. Base URL ve modeli `export` eder
|
||
7. Çalışan `claude` CLI süreçlerini kapatır
|
||
8. 3 saniye bekler
|
||
9. Yeni anahtar ve ayarlarla `claude` CLI’ı başlatır
|
||
|
||
---
|
||
|
||
## 🧠 Örnek Çalışma Çıktısı
|
||
|
||
```bash
|
||
----------------------------------------
|
||
🔍 Mevcut aktif key: lite
|
||
🧩 Yeni key seçildi: Claude Code PRO api key
|
||
🔁 .env dosyası güncellendi (ACTIVE_KEY=pro)
|
||
💀 Çalışan Claude CLI süreçleri kapatılıyor...
|
||
✅ Yeni key aktif: Claude Code PRO api key
|
||
🔑 Anahtar son 4 hane: ****7e8a
|
||
🌐 Base URL: https://api.z.ai/api/anthropic
|
||
🧠 Model: glm-4.6
|
||
🚀 Claude CLI yeni key ve ayarlarla başlatılıyor...
|
||
----------------------------------------
|
||
```
|
||
|
||
---
|
||
|
||
## 💡 İpucu
|
||
|
||
Her projenin kendi `.env` dosyası olabilir.
|
||
Betik, **bulunduğun dizindeki** `.env` dosyasını baz alır.
|
||
Farklı projeler farklı API anahtarları ve modellerle izole çalışabilir.
|