Files
wiki/memory/2026-05-14.md
2026-05-14 20:20:01 +03:00

12 KiB
Raw Blame History

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

Ждём фидбек Славы

Нужно подтверждение что на карте теперь видно где холмисто.

CLIProxyAPI — дебаг и фикс (14.05.2026)

Проблема

Dev-агент не мог работать через claude-cli-proxy/claude-sonnet-4-6 — получал "FailoverError: network connection error". При этом curl из того же контейнера работал.

Корневая причина

HTTP_PROXY=http://xray:10809 и HTTPS_PROXY=http://xray:10809 в environment контейнера openclaw-gateway направляли ВСЕ HTTP-запросы через Xray прокси. Xray не мог зарезолвить внутренний docker hostname claude-cli-proxy → connection error.

curl работал потому что обрабатывает прокси иначе для внутренних хостов.

Фикс

  1. Добавлен NO_PROXY=claude-cli-proxy,localhost,127.0.0.1,172.19.0.0/24 в /home/slin/openclaw/docker-compose.yml
  2. Убран reasoning: true из всех моделей cli-proxy в openclaw.json (парсер не извлекал content)
  3. Пересоздан контейнер: docker compose up -d openclaw-gateway

Конфиг провайдера (рабочий)

"claude-cli-proxy": {
  "baseUrl": "http://claude-cli-proxy:8317/v1",
  "apiKey": "dummy",
  "api": "openai-completions",
  "models": [...]  // без reasoning:true
}

Уроки

  • SIGHUP НЕ перечитывает конфигурацию провайдеров (models.providers) — нужен полный рестарт
  • HTTP_PROXY влияет на Node.js HTTP клиент для ВСЕХ запросов, включая внутренние docker
  • NO_PROXY обязателен для внутренних сервисов в docker network
  • CLIProxyAPI поддерживает и OpenAI формат, и нативный Anthropic Messages API

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-6
  • Доступные модели: 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

Ждём фидбек Славы

Нужно подтверждение что на карте теперь видно где холмисто.

CLIProxyAPI — дебаг и фикс (14.05.2026)

Проблема

Dev-агент не мог работать через claude-cli-proxy/claude-sonnet-4-6 — получал "FailoverError: network connection error". При этом curl из того же контейнера работал.

Корневая причина

HTTP_PROXY=http://xray:10809 и HTTPS_PROXY=http://xray:10809 в environment контейнера openclaw-gateway направляли ВСЕ HTTP-запросы через Xray прокси. Xray не мог зарезолвить внутренний docker hostname claude-cli-proxy → connection error.

curl работал потому что обрабатывает прокси иначе для внутренних хостов.

Фикс

  1. Добавлен NO_PROXY=claude-cli-proxy,localhost,127.0.0.1,172.19.0.0/24 в /home/slin/openclaw/docker-compose.yml
  2. Убран reasoning: true из всех моделей cli-proxy в openclaw.json (парсер не извлекал content)
  3. Пересоздан контейнер: docker compose up -d openclaw-gateway

Конфиг провайдера (рабочий)

"claude-cli-proxy": {
  "baseUrl": "http://claude-cli-proxy:8317/v1",
  "apiKey": "dummy",
  "api": "openai-completions",
  "models": [...]  // без reasoning:true
}

Уроки

  • SIGHUP НЕ перечитывает конфигурацию провайдеров (models.providers) — нужен полный рестарт
  • HTTP_PROXY влияет на Node.js HTTP клиент для ВСЕХ запросов, включая внутренние docker
  • NO_PROXY обязателен для внутренних сервисов в docker network
  • CLIProxyAPI поддерживает и OpenAI формат, и нативный Anthropic Messages API

CLIProxyAPI — проблема cloaking + rate limit (14.05.2026)

Проблема 2: System prompt не доходит до модели

После фикса NO_PROXY запросы доходят, но Dev-агент отвечает "I don't see a Your Role section" — CLIProxyAPI инжектит system prompt Claude Code поверх нашего (cloaking).

Попытка фикса: anthropic-messages API

  • Переключил api: "anthropic-messages", baseUrl: http://claude-cli-proxy:8317 (без /v1)
  • Добавил User-Agent: claude-cli/2.1.44 header для bypass cloaking
  • Результат: запрос дошёл до Anthropic, но получил 429 rate limit

Открытие: два разных rate limit bucket'а

  • /v1/chat/completions (OpenAI формат) → идёт через Claude Code CLI → тот же bucket что у Славы в терминале → работает
  • /v1/messages (Anthropic формат) → идёт напрямую в Messages API → отдельный rate limit → 429

Текущий статус

  • api: "openai-completions" работает без rate limit, но cloaking затирает system prompt
  • api: "anthropic-messages" обходит cloaking, но попадает в rate limit
  • CLIProxyAPI v7.0.6 не имеет опции отключить cloaking (PR #3328, #2709 не смержены)

Варианты решения

  1. Обновить CLIProxyAPI до latest (может PR уже в main)
  2. Добавить "cloak": "passthrough" в auth JSON (если поддерживается)
  3. Использовать openai-completions + жить с cloaking (system prompt частично работает)
  4. Fallback на vibecode для Dev-агента (текущий workaround)

Текущий workaround

Dev-агент работает на vibecode/claude-sonnet-4.6 — стабильно, без проблем.


Enduro Trails — UI улучшения

Что сделано (через Dev-агента на vibecode/claude-sonnet-4.6)

  1. Zoom-индикатор — в правом верхнем углу, z12
  2. Масштабная линейка — перенесена в правый верхний угол
  3. Кнопка Поиск (🔍) — в тулбаре, Nominatim geocoding, центрирование карты
  4. Объединение zoom + scalez7 · 30 км в одну строку
  5. Возврат ScaleControl — линейка под текстом
  6. Финальная переделка — одна строка: линейка с расстоянием внутри + номер зума справа ([——— 30 km ———] z10)

UI тесты

  • Написаны тест-кейсы: tasks/enduro-trails/TEST_CASES_UI_SEARCH.md (11 тестов)
  • Результат: 8 PASS, 2 FAIL (кнопка ✕ не видна), 1 flaky
  • Отчёт: tasks/enduro-trails/reports/ui-search/report.md

Баг: кнопка ✕ закрытия поиска не видна

  • Цвет сливается с тёмной темой
  • Нужно сделать контрастнее/крупнее
  • Не критично — панель закрывается повторным кликом на "Поиск"