diff --git a/memory/2026-05-14.md b/memory/2026-05-14.md new file mode 100644 index 0000000..153b3f6 --- /dev/null +++ b/memory/2026-05-14.md @@ -0,0 +1,46 @@ +# 2026-05-14 — Claude CLI Proxy + TRI max-aggregation + +## Claude CLI Proxy — ГОТОВО ✅ + +### Что сделано +- **Проект:** `tasks/claude-cli-proxy/` (BRD, DEV_TASK, PROJECT.md) +- **Суть:** CLIProxyAPI (Go, open-source) оборачивает Claude Code CLI в OpenAI-compatible API +- **Деплой:** Docker контейнер `claude-cli-proxy` на mva154 (82.22.50.71) +- **OAuth:** авторизован через Max 5x подписку Славы (claude-homenet542@gmail.com) +- **Сеть:** `openclaw_openclaw-network`, доступен из `openclaw-gateway` по имени `claude-cli-proxy:8317` +- **Порт:** 127.0.0.1:8317 (не наружу) + +### OpenClaw интеграция +- Provider `claude-cli-proxy` добавлен в `openclaw.json` +- Dev-агент переключен на `claude-cli-proxy/claude-sonnet-4-20250514` +- Доступные модели: sonnet-4, sonnet-4-6, opus-4, opus-4-7, opus-4-6, haiku-4-5 +- Gateway перечитал конфиг (SIGHUP) + +### Лимиты +- Max 5x: ~50-200 промптов/5ч окно +- ⚠️ С 15.06.2026 — Agent SDK credit отдельный (детали TBD) + +### Переавторизация (если токен протухнет) +1. `docker compose down` +2. `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` +3. SSH туннель + открыть URL в браузере +4. `docker compose up -d` + +--- + +## TRI тайлы — max-агрегация для мелких зумов ✅ + +### Проблема +На мелких зумах (5-8) вся карта TRI жёлтая — bilinear resampling усредняет значения. + +### Решение +Python max-pool (factor=10) на raw TRI single-band → colorize → tile. GDAL 3.4 не поддерживает `-r max`, поэтому numpy. + +### Результат +- Zoom 5: 6 тайлов, все непустые, 52% visible — преобладает оранжевый/красный +- Zoom 6-8: контраст есть, плоские участки прозрачные +- Zoom 10-12: full-res, без изменений +- Общий размер: 520M + +### Ждём фидбек Славы +Нужно подтверждение что на карте теперь видно где холмисто. diff --git a/tasks/claude-cli-proxy/DEV_TASK.md b/tasks/claude-cli-proxy/DEV_TASK.md index 308b380..341ed49 100644 --- a/tasks/claude-cli-proxy/DEV_TASK.md +++ b/tasks/claude-cli-proxy/DEV_TASK.md @@ -1,6 +1,6 @@ # DEV TASK: Деплой CLIProxyAPI на mva154 -**Статус:** Ready for dev +**Статус:** ✅ Выполнено **Проект:** claude-cli-proxy **BRD:** `tasks/claude-cli-proxy/BRD.md` diff --git a/tasks/claude-cli-proxy/PROJECT.md b/tasks/claude-cli-proxy/PROJECT.md new file mode 100644 index 0000000..bfd198d --- /dev/null +++ b/tasks/claude-cli-proxy/PROJECT.md @@ -0,0 +1,192 @@ +# 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 + +```yaml +# 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 +``` + +## Конфигурация + +```yaml +# 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`: +```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. + +## Управление + +```bash +# 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 + +Если токен протух: + +```bash +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 | Автор: Стрим 🌊*