Files
wiki/tasks/claude-cli-proxy/PROJECT.md
2026-05-14 11:10:01 +03:00

5.9 KiB
Raw Blame History

Claude CLI Proxy — PROJECT.md

Статус: Работает
Дата запуска: 2026-05-14
Хост: mva154 (82.22.50.71)


Что это

OpenAI-compatible прокси, который оборачивает Claude Code CLI (авторизованный через Max подписку) в HTTP API. Позволяет OpenClaw использовать Claude по подписке вместо оплаты за токены.

Архитектура

OpenClaw (openclaw-gateway контейнер)
    ↓ HTTP POST /v1/chat/completions
CLIProxyAPI (контейнер claude-cli-proxy, порт 8317)
    ↓ Claude Code CLI (OAuth)
Anthropic (Max 5x подписка, $100/мес)

Компоненты

Компонент Описание
CLIProxyAPI v7.0.6 Go-сервер, Docker image eceasy/cli-proxy-api:latest
Claude Code CLI Встроен в image, авторизован через OAuth
OAuth токен /home/slin/claude-cli-proxy/auth/claude-homenet542@gmail.com.json

Расположение на сервере

/home/slin/claude-cli-proxy/
├── config.yaml          # Конфигурация CLIProxyAPI
├── docker-compose.yml   # Docker Compose файл
└── auth/                # OAuth токены (volume mount)
    └── claude-homenet542@gmail.com.json

Docker

# docker-compose.yml
services:
  cli-proxy-api:
    image: eceasy/cli-proxy-api:latest
    container_name: claude-cli-proxy
    restart: unless-stopped
    ports:
      - "127.0.0.1:8317:8317"
    volumes:
      - ./config.yaml:/CLIProxyAPI/config.yaml
      - ./auth:/root/.cli-proxy-api
    networks:
      - openclaw_openclaw-network

networks:
  openclaw_openclaw-network:
    external: true

Конфигурация

# config.yaml
port: 8317
remote-management:
  allow-remote: false
  secret-key: ""
auth-dir: "/root/.cli-proxy-api"
auth:
  providers: []    # Отключает проверку API key, используется OAuth
debug: false

OpenClaw интеграция

Provider в ~/.openclaw/openclaw.json:

"claude-cli-proxy": {
  "baseUrl": "http://claude-cli-proxy:8317/v1",
  "apiKey": "dummy",
  "api": "openai-completions",
  "models": [
    {"id": "claude-sonnet-4-20250514", "name": "Claude Sonnet 4 (cli-proxy)"},
    {"id": "claude-sonnet-4-6", "name": "Claude Sonnet 4.6 (cli-proxy)"},
    {"id": "claude-opus-4-20250514", "name": "Claude Opus 4 (cli-proxy)"},
    {"id": "claude-opus-4-7", "name": "Claude Opus 4.7 (cli-proxy)"}
  ]
}

Dev-агент: model.primary = "claude-cli-proxy/claude-sonnet-4-20250514"

Доступные модели

Модель ID
Claude Sonnet 4 claude-sonnet-4-20250514
Claude Sonnet 4.6 claude-sonnet-4-6
Claude Opus 4 claude-opus-4-20250514
Claude Opus 4.7 claude-opus-4-7
Claude Opus 4.6 claude-opus-4-6
Claude Opus 4.1 claude-opus-4-1-20250805
Claude Haiku 4.5 claude-haiku-4-5-20251001

Лимиты (Max 5x, $100/мес)

  • 5-часовое скользящее окно — бюджет обновляется каждые 5 часов
  • Недельный cap — считается только активное compute-время
  • Пиковые часы (15:00-21:00 MSK) — расход x1.3-1.5
  • ~50-200 промптов на 5-часовое окно (зависит от модели и длины)

⚠️ С 15 июня 2026

Agent SDK / claude -p будет тратить отдельный "Agent SDK credit". Детали TBD.

Управление

# SSH на сервер
ssh slin@82.22.50.71

# Статус
cd /home/slin/claude-cli-proxy
docker compose ps
docker logs claude-cli-proxy --tail 20

# Перезапуск
docker compose restart

# Обновление image
docker compose pull && docker compose up -d

# Тест API
curl -s http://127.0.0.1:8317/v1/models | python3 -m json.tool
curl -s -X POST http://127.0.0.1:8317/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer dummy" \
  -d '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"hello"}]}'

Переавторизация OAuth

Если токен протух:

cd /home/slin/claude-cli-proxy

# Остановить сервис
docker compose down

# Запустить login
docker run --rm -it \
  -p 54545:54545 \
  -v $(pwd)/auth:/root/.cli-proxy-api \
  eceasy/cli-proxy-api:latest \
  /CLIProxyAPI/CLIProxyAPI --claude-login --no-browser

# На локальной машине — SSH туннель:
# ssh -L 54545:127.0.0.1:54545 slin@82.22.50.71
# Открыть URL из вывода в браузере, залогиниться

# После логина — запустить сервис
docker compose up -d

Безопасность

  • Порт 8317 слушает только на 127.0.0.1 (не наружу)
  • Доступен только из docker network openclaw_openclaw-network
  • remote-management.allow-remote: false
  • Один аккаунт, без multi-account

Troubleshooting

Проблема Решение
{"data":[],"object":"list"} (пустые модели) OAuth токен отсутствует или протух → переавторизация
429 от прокси Rate limit Max подписки → подождать 5ч окно
Контейнер не стартует docker logs claude-cli-proxy → проверить ошибки
OpenClaw не видит прокси Проверить что оба в одной docker network

Файлы проекта

  • tasks/claude-cli-proxy/BRD.md — бизнес-требования
  • tasks/claude-cli-proxy/DEV_TASK.mdТЗ на деплой
  • tasks/claude-cli-proxy/PROJECT.md — этот файл

Создано: 2026-05-14 | Автор: Стрим 🌊