# متغیرهای محیطی

> **آخرین راستی‌آزمایی**: 2026-10-26 · 📄 بر اساس مستندات رسمی (Claude Code v2.1.310، منتشرشده در 2026-10-23؛ تعریف‌های ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY در 2026-10-26 دوباره با صفحات رسمی متغیرهای محیطی و دروازه بررسی شدند)

> ⚡ هنوز راه‌اندازی نکرده‌اید؟ یک فرمان همه کار را انجام می‌دهد: `curl -fsSL https://qcode.cc/install/claude-code.sh | bash` (Windows: `irm https://qcode.cc/install/claude-code.ps1 | iex`). به [اسکریپت راه‌اندازی یک‌کلیکی](/docs/getting-started/one-click-install) مراجعه کنید.

تقریباً هر ابزار کدنویسی با هوش مصنوعی از **متغیرهای محیطی** استفاده می‌کند تا تصمیم بگیرد «به کدام سرویس متصل شود و از کدام کلید استفاده کند.» این دو قطعه اطلاعات را به QCode.cc معطوف کنید تا ابزار شما درخواست‌ها را به ما ارسال کند. این صفحه توضیح می‌دهد کدام متغیرها را تنظیم کنید، آن‌ها را کجا تنظیم کنید و چگونه راستی‌آزمایی کنید.

> 📖 مطمئن نیستید که `BASE_URL` باید به `/api` ختم شود یا پیشوند دیگری؟ کدام یک از دامنه‌های دسترسی را انتخاب کنید؟ با [نقاط پایانی و مسیرهای API](/docs/getting-started/endpoints-and-api-paths) شروع کنید. هنوز ابزارهایتان را نصب نکرده‌اید؟ به [نصب](/docs/getting-started/installation) مراجعه کنید.

## 1. دو متغیر اصلی (Claude Code و Anthropic SDK)

اتصال به خانواده مدل‌های Claude فقط به دو متغیر محیطی نیاز دارد:

```bash
export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_key"
```

- **`ANTHROPIC_BASE_URL`** — آدرس دسترسی که به پیشوند `/api` ختم می‌شود. SDK به‌طور خودکار `/v1/messages` را اضافه می‌کند.
- **`ANTHROPIC_AUTH_TOKEN`** — کلید QCode.cc شما که با `cr_` شروع می‌شود و در [داشبورد QCode.cc](https://qcode.cc/dashboard) ایجاد می‌شود.

> **درباره `AUTH_TOKEN`**: این قرارداد داخلی برای کلید رله است — کلید رله همیشه در `ANTHROPIC_AUTH_TOKEN` قرار می‌گیرد (نه در `ANTHROPIC_API_KEY` که همان متغیری است که API رسمی Anthropic به کار می‌برد). Claude Code آن را به‌صورت توکن Bearer ارسال می‌کند. اگر ابزار شما فقط `ANTHROPIC_API_KEY` را می‌شناسد، قرار دادن همان کلید `cr_` در آن هم کار می‌کند.

> **⚠️ بدون اسلش انتهایی**: از `https://api.qcode.cc/api` استفاده کنید، **نه** `https://api.qcode.cc/api/`. SDK مسیر `/v1/messages` را اضافه می‌کند، بنابراین یک اسلش اضافی به `//v1/messages` تبدیل می‌شود و 404 برمی‌گرداند.

این دو متغیر هم برای Claude Code و هم برای SDKهای رسمی Anthropic (Python / TypeScript) کار می‌کنند — SDK نیز `ANTHROPIC_BASE_URL` را می‌خواند، یا می‌توانید هنگام ساخت کلاینت `base_url=` را ارسال کنید.
## 2. جدول هر ابزار

ابزارهای مختلف متغیرهای محیطی متفاوتی را می‌خوانند. مورد خود را در جدول زیر پیدا کنید:

| ابزار | متغیرهای محیطی | مقدار |
|------|----------------------|-------|
| Claude Code | `ANTHROPIC_BASE_URL`<br>`ANTHROPIC_AUTH_TOKEN` | `https://api.qcode.cc/api`<br>`cr_your_key` |
| Anthropic SDK (Python/JS) | `ANTHROPIC_BASE_URL`<br>`ANTHROPIC_AUTH_TOKEN` | `https://api.qcode.cc/api`<br>`cr_your_key` |
| Codex CLI | `base_url` در پیکربندی `~/.codex` | `https://api.qcode.cc/openai` |
| ابزارهای سازگار با OpenAI | `OPENAI_BASE_URL`<br>`OPENAI_API_KEY` | `https://api.qcode.cc/openai/v1`<br>`cr_your_key` |
| Gemini / Antigravity (فعلاً در دسترس نیست) | Base URL | `https://api.qcode.cc/gemini` |

چند نکته:

- **Codex CLI** برای یافتن نقطه پایانی، `OPENAI_BASE_URL` را نمی‌خواند؛ بلکه از `base_url` در فایل پیکربندی `~/.codex` استفاده می‌کند (که به `/openai` ختم می‌شود و از پروتکل OpenAI Responses استفاده می‌کند). برای نحو دقیق به [نقاط پایانی و مسیرهای API](/docs/getting-started/endpoints-and-api-paths) مراجعه کنید.
- **ابزارهای سازگار با OpenAI** (SDK رسمی OpenAI، LangChain، کلاینت‌های عمومی) `OPENAI_BASE_URL` و `OPENAI_API_KEY` را می‌خوانند، و base به `/openai/v1` ختم می‌شود.
- **Gemini / Antigravity** (QCode فعلاً Gemini را ارائه نمی‌دهد؛ فقط برای مرجع پروتکل): base به `/gemini` ختم می‌شود؛ خود SDK مسیر `/v1beta/` را اضافه می‌کند. همان کلید `cr_` کار می‌کند.

> **یک کلید در همه پروتکل‌ها کار می‌کند**: کلید `cr_` شما مستقل از پروتکل است — `/api` متعلق به Anthropic و `/openai/v1` متعلق به OpenAI است. تغییر ابزار فقط یعنی تغییر BASE_URL؛ کلید همان می‌ماند. QCode فعلاً مدل‌های Gemini را ارائه نمی‌دهد.

### مدل‌های در دسترس

پس از اتصال، بر اساس پروتکل ابزار خود یک نام مدل انتخاب کنید (جزئیات بیشتر در [نقاط پایانی و مسیرهای API](/docs/getting-started/endpoints-and-api-paths)):

- **مدل‌های Claude** (پیش‌فرض روزانه خط 5 است): `claude-sonnet-5` (1M، متعادل)، `claude-opus-5` (1M، پرچم‌دار کنونی)، `claude-fable-5` (1M، رده برتر)، `claude-sonnet-4-6` / `claude-opus-4-8` / `claude-opus-4-7` (نسل قبل، همچنان در فروش)، `claude-haiku-5-5` (1M، سریع‌ترین)
- **خانواده GPT**: `gpt-6.1-sol` (توصیه‌شده)، `gpt-6-sol`، `gpt-5.6-terra`، `gpt-5.6-sol`
- **خانواده Gemini**: QCode فعلاً آن را ارائه نمی‌دهد؛ لطفاً از Claude، GPT یا مدل‌های چینی استفاده کنید
- **خانواده چینی** (GLM / Kimi / DeepSeek / Qwen): `glm-5.3`، `kimi-k3`، `deepseek-v4-pro`، `qwen3.8-max` و مدل‌های هم‌خانواده — به [مدل‌های خانواده چینی](/docs/usage/cn-models) مراجعه کنید
- **تصویر**: `gpt-image-2` (نقطه پایانی `https://api.qcode.cc/qcode-img/v1`)

> **طول زمینه Claude Code**: Claude Code به‌طور پیش‌فرض از پنجره **200K** استفاده می‌کند؛ **زمینه 1M** به‌صورت انتخابی توسط `claude-opus-5`، `claude-sonnet-5`، `claude-fable-5`، `claude-opus-4-8` و `claude-sonnet-4-6` پشتیبانی می‌شود.
## 3. محل تنظیم آن‌ها

اینکه یک متغیر محیطی را کجا تنظیم می‌کنید، دامنه اثر آن را مشخص می‌کند. سه رویکرد رایج:

**① فایل rc شل (پایدار، سراسری)** — آن را در `~/.zshrc` (macOS / zsh) یا `~/.bashrc` (Linux / bash) بنویسید تا هر ترمینال جدید به‌طور خودکار آن را بخواند:

```bash
echo 'export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"' >> ~/.zshrc
echo 'export ANTHROPIC_AUTH_TOKEN="cr_your_key"' >> ~/.zshrc
source ~/.zshrc
```

کاربران bash باید `~/.zshrc` را با `~/.bashrc` جایگزین کنند.

**② فایل `.env` پروژه (پایدار، مخصوص هر پروژه)** — یک فایل `.env` در ریشه پروژه قرار دهید؛ فقط به همان پروژه اعمال می‌شود و برای استفاده از کلیدهای متفاوت در هر پروژه مناسب است:

```bash
ANTHROPIC_BASE_URL=https://api.qcode.cc/api
ANTHROPIC_AUTH_TOKEN=cr_your_key
```

> فایل `.env` کلید شما را در خود دارد — یادتان باشد آن را به `.gitignore` اضافه کنید و هرگز آن را کامیت نکنید.

**③ تنظیمات خود ابزار (مخصوص هر ابزار)** — برخی ابزارها فایل پیکربندی یا رابط کاربری خود را دارند، مثلاً `~/.codex` در Codex CLI، یا پنل تنظیمات یک افزونه ویرایشگر. چنین تنظیماتی فقط روی همان ابزار اعمال می‌شود.

**پایدار در برابر هر جلسه**: هر سه روش بالا **پایدار** هستند. اگر می‌خواهید چیزی را فقط در **جلسه فعلی ترمینال** امتحان کنید، کافی است `export` (macOS/Linux) یا `$env:` (Windows PowerShell) را اجرا کنید — با بستن ترمینال از بین می‌رود:

```bash
# macOS / Linux, per-session
export ANTHROPIC_BASE_URL="https://api.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_key"
```

```powershell
# Windows PowerShell, per-session
$env:ANTHROPIC_BASE_URL = "https://api.qcode.cc/api"
$env:ANTHROPIC_AUTH_TOKEN = "cr_your_key"
```

> **نکته اولویت**: متغیرهای محیطی که هنگام راه‌اندازی فرایند خوانده می‌شوند بر فایل‌های پیکربندی اولویت دارند. پس از ویرایش فایل rc شل، یادتان باشد آن را `source` کنید یا ترمینال جدیدی باز کنید؛ وقتی یک متغیر در چند جا تنظیم شده باشد، مقداری که فرایند واقعاً به ارث می‌برد ملاک است.

## 4. 🇨🇳 نکته‌ای برای کاربران چین

کاربران سرزمین اصلی چین باید میزبان BASE_URL را از `api.qcode.cc` به `asia.qcode.cc` تغییر دهند (نود آسیا، نزدیک‌ترین از میان کره / تایوان / هنگ‌کنگ، از نظر جغرافیایی نزدیک‌ترین):

```bash
export ANTHROPIC_BASE_URL="https://asia.qcode.cc/api"
export ANTHROPIC_AUTH_TOKEN="cr_your_key"
```

همین موضوع برای سایر پروتکل‌ها هم صادق است: ابزارهای سازگار با OpenAI از `https://asia.qcode.cc/openai/v1` استفاده می‌کنند و Codex از `https://asia.qcode.cc/openai`. هر سه دامنه دسترسی قابلیت‌های یکسانی ارائه می‌دهند؛ همان کلید در همه آن‌ها کار می‌کند، بنابراین اگر `asia` ناپایدار بود به `api.qcode.cc` (مسیریابی جهانی Route 53) برگردید. به [نقاط پایانی و مسیرهای API](/docs/getting-started/endpoints-and-api-paths) مراجعه کنید.
## 5. بررسی

پس از تنظیم متغیرها، ابتدا درستی مقادیر را بررسی کنید:

```bash
echo $ANTHROPIC_BASE_URL
echo $ANTHROPIC_AUTH_TOKEN
```

سپس با curl بررسی کنید که نشانی دسترسی قابل دسترس است (**بدون کلید** — فقط برای آزمودن مسیر و شبکه):

```bash
curl -s -o /dev/null -w '%{http_code}' \
  -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" \
  https://api.qcode.cc/v1/models
# → 200 = network, path and key all good
```

**تفسیر**: `200` یعنی شبکه، نقطه پایانی و کلید همه درست تنظیم شده‌اند. `401` یعنی کلید نامعتبر است یا درست ارسال نشده (بررسی کنید پیشوند `cr_` به‌طور کامل کپی شده باشد)؛ `404` معمولاً یعنی پیشوند مسیر اشتباه است. توجه: دسترسی به نقطه پایانی **بدون کلید** به‌جای خطا، یک صفحه معرفی HTML (HTTP 200) برمی‌گرداند — اگر آن صفحه را دیدید، کلید شما پیوست نشده است. خودآزمایی‌های کامل curl: [نقاط پایانی و مسیرهای API](/docs/getting-started/endpoints-and-api-paths).

یک آزمون سرتاسری با کلید واقعی خود اجرا کنید:

```bash
curl -X POST https://api.qcode.cc/api/v1/messages \
  -H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model":"claude-sonnet-5","max_tokens":64,"messages":[{"role":"user","content":"ping"}]}'
```

یک پاسخ JSON عادی یعنی متغیرهای محیطی شما تنظیم شده‌اند و آماده شروع هستید.

> می‌خواهید مدل، طول زمینه و مصرف هر درخواست را ببینید؟ هر دامنه دسترسی به [probe.qcode.cc](https://probe.qcode.cc) گزارش می‌دهد — کلید `cr_` خود را وارد کنید تا آن‌ها را ببینید.

## 6. متغیرهای مرتبط با دروازه

وقتی Claude Code با یک دروازه شخص ثالث (شامل QCode) صحبت می‌کند، این متغیرهای رسمی اهمیت دارند. تعاریف از [مرجع متغیرهای محیطی](https://code.claude.com/docs/en/env-vars) و [راهنمای اتصال به دروازه](https://code.claude.com/docs/en/llm-gateway-connect) (بررسی‌شده در 2026-10-26):

| متغیر | زمان اهمیت |
|---|---|
| `ANTHROPIC_DEFAULT_MODEL` | **مدل پیش‌فرض برای نشست‌های جدید** را تعیین می‌کند (از 2.1.236، 2026-08-19). برخلاف `ANTHROPIC_MODEL`: انتخاب `/model` درون نشست آن را بازنویسی می‌کند و در طول راه‌اندازی‌های مجدد باقی می‌ماند، در حالی که `ANTHROPIC_MODEL` در هر بار اجرا دوباره اعمال می‌شود |
| `CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1` | به انتخاب‌گر `/model` اجازه می‌دهد فهرست مدل‌های دروازه را بخواند (به‌طور پیش‌فرض خاموش است، چون دروازه‌های با کلید مشترک ممکن است مدل‌هایی را فهرست کنند که نمی‌توانید از آن‌ها استفاده کنید). در برابر QCode، فهرست **شناسه‌های خانواده Claude** را نشان می‌دهد (فقط نام‌هایی که شامل `claude` / `anthropic` هستند انتخاب می‌شوند)؛ **مدل‌های چینی هرگز ظاهر نمی‌شوند** — برای آن‌ها تنظیم `ANTHROPIC_MODEL` / `ANTHROPIC_DEFAULT_MODEL` را ادامه دهید |
| `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` | سرآیند `anthropic-beta` و فیلدهای ابزار بتا را حذف می‌کند. وقتی دروازه به `Unexpected value(s) … anthropic-beta` با 400 پاسخ می‌دهد، آن را روشن کنید |
| `CLAUDE_CODE_AUTO_MODE_SERVER=0` | در حالت خودکار، درخواست بازبینی از سرور متوقف می‌شود و مستقیماً از درخواست‌های طبقه‌بند خود Claude Code استفاده می‌شود (QCode نتایج بازبینی سمت سرور را برنمی‌گرداند). با تنظیم آن، اعلان «درخواست‌های شما از … عبور می‌کنند که سازگار نیست» دیگر ظاهر نمی‌شود، و یک نشست تعاملی دیگر به‌خاطر آن، نخستین اقدامی را که به بازبینی نیاز دارد نگه نمی‌دارد. نصب‌کننده یک‌کلیکی QCode از 2026-10-07 آن را می‌نویسد. به‌طور رسمی موقت علامت‌گذاری شده است و ممکن است در انتشار بعدی حذف شود — [دسترس‌پذیری ویژگی](/docs/reference/feature-availability) را ببینید |
| `CLAUDE_CODE_DISABLE_ARTIFACT=1` | ابزار Artifact را غیرفعال می‌کند (پس از تنظیم، هیچ رابط کاربری تنظیمات نمی‌تواند دوباره آن را روشن کند). Claude Code 2.1.265–2.1.267 یک طرح‌واره ابزار می‌فرستاد که دروازه‌های سخت‌گیر آن را کاملاً رد می‌کنند (400)؛ اصلاح رسمی ارتقا به ≥2.1.268 است — این متغیر راه‌حل موقت است |
| `CLAUDE_CODE_ATTRIBUTION_HEADER=0` | معنای رسمی: بلوک انتساب (نسخه کلاینت + اثر انگشت prompt) را در بالای system prompt حذف می‌کند. **ما آزمایش نکرده‌ایم** که خاموش کردن آن مفید است یا نه، و این صفحه آن را توصیه نمی‌کند — مستندات رسمی را بخوانید و تصمیم بگیرید |

---

> 💡 هنوز کلید ندارید؟ [نحوه انتخاب پلن](/docs/getting-started/choose-a-plan) را ببینید، سپس کلید `cr_` خود را در داشبورد دریافت کنید؛ کلید در هر گزینه‌ای که انتخاب کنید یکسان کار می‌کند. نرخ‌های هر مدل در [qcode.cc/models](https://qcode.cc/models) است.