diff --git a/EFFORT_MAPPING.md b/EFFORT_MAPPING.md
new file mode 100644
index 0000000..b5c4a27
--- /dev/null
+++ b/EFFORT_MAPPING.md
@@ -0,0 +1,90 @@
+# Effort Mapping — Соответствие уровней для всех провайдеров
+
+## Как это работает
+
+Когда вы меняете effort в Claude Code (через `/effort` или `--effort`), значение передаётся
+в API провайдера. Каждый провайдер поддерживает свой набор уровней reasoning effort.
+Если выбранного уровня нет у провайдера — он автоматически маппится на ближайший
+**более высокий** нативный уровень.
+
+## Таблица маппинга
+
+> Актуально на 30 мая 2026 г.
+
+| Claude Code
`/effort` | Anthropic
(Claude) | GPT-5.5
(ChatGPT) | DeepSeek V4 | Kimi K2.6
(Moonshot) | Gemini 3.x |
+|:---:|:---:|:---:|:---:|:---:|:---:|
+| `low` | ✅ `low` | ✅ `low` | ⬆ `high` | 🔛 thinking on | ✅ `LOW` |
+| `medium` | ✅ `medium` | ✅ `medium` | ⬆ `high` | 🔛 thinking on | ✅ `MEDIUM` |
+| `high` | ✅ `high` | ✅ `high` | ✅ `high` | 🔛 thinking on | ✅ `HIGH` |
+| `xhigh` | ✅ `xhigh` | ✅ `xhigh` | ⬆ `max` | 🔛 thinking on | ⬆ `HIGH` |
+| `max` | ✅ `max` | ⬆ `xhigh` ¹ | ✅ `max` | 🔛 thinking on | ⬆ `HIGH` |
+
+**Обозначения:**
+- ✅ — нативная поддержка (1:1 соответствие)
+- ⬆ — маппинг на ближайший доступный уровень вверх
+- 🔛 — бинарный режим (thinking вкл/выкл, без градаций)
+
+¹ GPT-5.5 не имеет уровня `max` — effort-proxy (`claude-gpt-effort-proxy.py`) маппит `max` → `xhigh`
+
+## Нативные уровни каждого провайдера
+
+### Anthropic (Claude) — эталон
+```
+low → medium → high → xhigh → max
+```
+- 5 уровней, полное соответствие с Claude Code
+- По умолчанию: `xhigh`
+- `max` — максимальный бюджет на thinking, для самых сложных задач
+
+### GPT-5.5 (через claude-code-proxy)
+```
+low → medium → high → xhigh
+```
+- 4 основных уровня (также существуют `none` и `minimal`)
+- Нет `max` → маппится в `xhigh`
+- По умолчанию: `medium`
+- Маппинг выполняется effort-proxy на стороне лаунчера
+
+### DeepSeek V4
+```
+high → max
+```
+- Всего 2 реальных уровня
+- `low` и `medium` → автоматически поднимаются до `high`
+- `xhigh` → автоматически поднимается до `max`
+- Маппинг выполняется на стороне DeepSeek API
+
+### Kimi K2.6 (Moonshot AI)
+```
+on / off
+```
+- Бинарный режим — thinking либо включён, либо выключен
+- Все уровни effort = thinking включён
+- Нет градаций глубины reasoning
+- Маппинг выполняется на стороне Moonshot API
+
+### Gemini 3.x (через antigravity-claude-proxy)
+```
+MINIMAL → LOW → MEDIUM → HIGH
+```
+- 4 уровня
+- Нет `xhigh` и `max` → оба маппятся в `HIGH`
+- Pro-модели: по умолчанию `HIGH`
+- Flash-модели: по умолчанию `MEDIUM`
+- Маппинг выполняется на стороне antigravity-claude-proxy
+
+## Где выполняется маппинг
+
+| Провайдер | Кто маппит | Файл/компонент |
+|:---|:---|:---|
+| Anthropic | Не нужен | — |
+| GPT-5.5 | effort-proxy (наш) | `~/.local/bin/claude-gpt-effort-proxy.py` |
+| DeepSeek V4 | DeepSeek API | На стороне сервера |
+| Kimi K2.6 | Moonshot API | На стороне сервера |
+| Gemini 3.x | antigravity-claude-proxy | npm пакет |
+
+## Рекомендации
+
+- **Для повседневной работы:** `high` или `xhigh` — работает одинаково хорошо у всех провайдеров
+- **`max` effort:** имеет реальный эффект только у **Anthropic** и **DeepSeek**. Для GPT маппится в `xhigh`, для Gemini и Kimi — в их максимальный уровень
+- **`low`/`medium`:** у DeepSeek и Kimi фактически не снижают reasoning — DeepSeek поднимет до `high`, Kimi просто включит thinking
diff --git a/claude_setup.sh b/claude_setup.sh
index 835b0a9..82fb666 100755
--- a/claude_setup.sh
+++ b/claude_setup.sh
@@ -105,11 +105,16 @@ else
install_proxy
fi
-# ── 4b. effort-proxy wrapper (патч xhigh->max для claude-code-proxy) ─────────
+# ── 4b. effort-proxy wrapper (маппинг effort для GPT: max->xhigh) ─────────
EFFORT_PROXY_BIN="$BIN_DIR/claude-gpt-effort-proxy.py"
cat > "$EFFORT_PROXY_BIN" << 'PYEOF'
#!/usr/bin/env python3
-"""Reverse proxy: rewrites "xhigh" effort -> "max" for claude-code-proxy (bug in <=0.0.13)."""
+"""Effort mapping proxy for GPT backend.
+
+GPT-5.5 natively supports: low, medium, high, xhigh (no "max").
+Claude Code may send "max" effort — we map it to "xhigh" (highest GPT level).
+See EFFORT_MAPPING.md for the full mapping table across all providers.
+"""
import http.client, http.server, sys
UPSTREAM_PORT = int(sys.argv[1]) if len(sys.argv) > 1 else 18766
@@ -120,7 +125,7 @@ class _Proxy(http.server.BaseHTTPRequestHandler):
body = b""
if cl := self.headers.get("Content-Length"):
body = self.rfile.read(int(cl))
- body = body.replace(b'"xhigh"', b'"max"')
+ body = body.replace(b'"max"', b'"xhigh"')
try:
conn = http.client.HTTPConnection("localhost", UPSTREAM_PORT, timeout=300)
hdrs = dict(self.headers)