zames_pro — terminal coding agent

Решение проблем

Типичные проблемы и что делать. Каждый способ ниже — реальная команда или настройка, которая есть в zames.

Первый вход не проходит / в браузере капча

Симптом: zames просит вход, окно браузера (с --headed) открывается, и сайт показывает слайдер-капчу; или холодный вход в headless просто не удаётся.

Это антибот-защита на свежей сессии, а капчу нельзя набрать в терминале. Запустите zames --headed один раз и войдите руками в окне; сессия сохранится в профиле провайдера (~/.zames/profile, ~/.zames/qwen-profile, ~/.zames/glm-profile) и будет использоваться дальше. Сохранённые логин и пароль пробуются первыми — удалить их можно командой /config set browser.auth.password "". Для GLM headed-режим — практический единственный: слайдер Aliyun гейтит и первую ОТПРАВКУ.

Вход работает в видимом окне, но не в headless

Симптом: zames --headed входит нормально, а обычный zames показывает простую страницу 403 ERROR.

Headless Chromium сообщает в User-Agent HeadlessChrome/<v>, и CDN сайта отклоняет такой UA до загрузки приложения. zames сам убирает маркер (sanitizeHeadlessUA()). Если вы задали свой User-Agent — уберите из него слово Headless: явный UA имеет приоритет и не патчится. Строку браузера показывает /doctor.

«Something went wrong when opening your profile»

Симптом: браузер показывает эту страницу вместо чата.

Два процесса Chromium были направлены на ОДИН и тот же --user-data-dir. Классический случай — @playwright/mcp, запущенный без --isolated: по умолчанию он берёт ~/.zames/profile, тот же профиль, что и у агента. Закройте второй браузер, и в конфиге MCP всегда передавайте --isolated (или отдельный --user-data-dir). См. MCP. Никогда не удаляйте ~/.zames/profile, пока браузер может быть запущен.

«Messages too frequent» / рейт-лимит

Симптом: чат показывает «Messages too frequent. Try again later.», а агент ждёт, повторяет или останавливается с сообщением о рейт-лимите.

Веб-чат ограничивает частоту отправки с одного аккаунта, а долгие прогоны с инструментами отправляют много. Увеличьте паузу между отправками: /config set browser.minSendIntervalMs 20000 (у DeepSeek по умолчанию 15000; у Qwen — qwen.minSendIntervalMs, 4000). История отправок — в /limits (тайминги, исход и ошибка сервера; сам промпт туда НЕ пишется), сводка сессии — в /cost. Часто единственное реальное решение — подождать: лимит считается на аккаунт.

«Length limit reached. Please start a new chat.»

Симптом: чат отказывает в КАЖДОМ следующем сообщении с этим уведомлением.

Контекстное окно чата исчерпано, и повтор в том же чате не сработает никогда. zames обрабатывает это сам — компактит и открывает новый чат, либо подсказывает. Вручную: /compact (если старый чат не принимает и промпт суммаризации, сводка может быть построена из локальной истории) или /new и повтор задачи. Заполнение видно на строке статуса и в /cost; порог auto-compact — browser.autoCompactPct.

Гостевые лимиты Qwen / GLM

Симптом: Qwen отвечает RateLimited через несколько ходов; GLM показывает капчу на первой отправке.

Гостевой режим даёт несколько ходов в день (Qwen), а GLM гейтит первое сообщение слайдер-капчей, которую headless браузер не пройдёт. Войдите (/provider qwen, затем /provider login; или zames --headed --provider glm). Гость годится для быстрой пробы, но не для долгой задачи.

В Linux / WSL не хватает системных библиотек Chromium

Симптом: Chromium не стартует с ошибкой разделяемой библиотеки (libnss3.so, libatk-1.0.so.0, …) — или об этом сообщает postinstall.

Что делать:

npx playwright install chromium
sudo npx playwright install-deps chromium

Шаг postinstall пробует то же самое, если есть sudo без пароля.

/config set сообщает об успехе, но после перезапуска значение прежнее

Симптом: /config set ui.locale en применяется сразу, но следующий запуск снова со старым значением.

Проектный .zamesrc.json важнее домашнего конфига, а /config пишет только в ~/.zames/config.json. Найдите ключ в <проект>/.zamesrc.json и уберите его там (файл в .gitignore, поэтому git status его не покажет). zames предупреждает и при старте, и сразу после сохранения (cfg.shadowed).