README — обзор

Полный обзор zames_pro: быстрый старт, вход в аккаунт, провайдеры, использование, опции и FAQ.

Терминальный coding-агент, работающий поверх веб-чатов LLM (chat.deepseek.com, chat.qwen.ai, chat.z.ai, …) через Playwright. По духу он похож на Claude Code / Codex CLI: запускается в текущей директории, читает и правит файлы, выполняет команды и коммитит в git.

API-ключ не нужен — агент управляет веб-чатом DeepSeek, Qwen или GLM как обычный пользователь через настоящий (headless) браузер.

zames — это бесплатный терминальный coding-агент с открытым исходным кодом и AI-ассистент программиста, который превращает привычный веб-чат (DeepSeek, Qwen или GLM) в агента для командной строки в духе Claude Code. Без API-ключа, без оплаты за токены и без привязки к одному вендору. Установка — npm install -g zames_pro, запуск — zames в любой папке проекта; задачу можно описать обычным языком.

сессия zames в терминале — терминальный coding-агент и AI-ассистент программиста без API-ключа

Быстрый старт

npm install -g zames_pro   # Chromium для Playwright скачается автоматически
cd your-project            # любая папка, в которой должен работать агент
zames                      # один раз войти, дальше просто описывайте задачу

Здесь нет API-ключа и нет оплаты за токены: zames входит в ваш собственный аккаунт chat.deepseek.com, chat.qwen.ai или chat.z.ai в настоящем (headless) Chromium и управляет веб-чатом как обычный пользователь. При первом запуске он один раз спросит логин (сессия сохраняется в ~/.zames/profile для DeepSeek, ~/.zames/qwen-profile для Qwen или ~/.zames/glm-profile для GLM); после этого достаточно запустить zames и написать задачу обычным языком:

❯ отрефактори загрузчик конфига и добавь тест на новый дефолт

Пока агент работает, можно продолжать печатать — сообщение, отправленное посреди задачи, встанет в очередь и уйдёт сразу после неё, в тот же чат. Esc прерывает текущую генерацию, /help показывает команды, /exit — выход.

Содержание

Как это работает

zames не вызывает API модели. Он запускает headless Chromium с постоянным профилем, входит в веб-чат как человек, печатает задачу в поле чата и читает ответ обратно.

Доступны три бэкенда, переключаются командой /provider <deepseek|qwen|glm>: DeepSeek (chat.deepseek.com, по умолчанию), Qwen (chat.qwen.ai) и GLM (chat.z.ai). Переключение живое — zames закрывает текущий бэкенд и открывает другой на месте, без перезапуска. У каждого свой постоянный профиль (~/.zames/profile, ~/.zames/qwen-profile, ~/.zames/glm-profile), поэтому переключение не разлогинивает другой.

как работает zames: терминальный coding-агент отправляет задачу в веб-чат DeepSeek, Qwen или GLM через Playwright и выполняет вызовы инструментов локально

Словами: вы вводите задачу → zames отправляет системный промпт и задачу в активный веб-чат (DeepSeek, Qwen или GLM) → модель отвечает → zames разбирает вызов инструмента, выполняет его локально, возвращает результат обратно и печатает финальный ответ.

Ключевые детали:

  • Ответ читается из сырого сетевого потока (SSE), а не из отрендеренного DOM, поэтому JSON вызова инструмента с шаблонными строками и экранированием остаётся целым.
  • Постоянный профиль на каждого провайдера (~/.zames/profile у DeepSeek, ~/.zames/qwen-profile у Qwen, ~/.zames/glm-profile у GLM) держит вас залогиненным; User-Agent headless-браузера подменяется, чтобы CDN сайта не отдавал 403 на вход.
  • Троттлинг отправки (15 с у DeepSeek, 4 с у Qwen, который спокойно переносит более частый темп; у GLM — адаптивная пауза с нуля) щадит рейт-лимит веб-чата во время долгих прогонов с инструментами.
  • Агент запесочен в директорию запуска — ни один инструмент не может читать или писать выше неё.

Возможности

  • Инструменты как в Claude Code / Codex — Read, Write, Edit, Bash, Glob, Grep, плюс MultiEdit, ApplyPatch, LS, TodoWrite, git- и веб-инструменты. Каждая правка подкреплена /undo, а /rewind возвращает всё рабочее дерево к чекпойнту.
  • Работает, пока вы печатаете — сообщения, набранные во время задачи, встают в очередь и уходят сразу после неё, в тот же чат (как набор текста во время генерации на сайте).
  • Режим плана — /plan (или --plan) убирает все мутирующие инструменты, чтобы агент изучал код, не трогая дерево.
  • Контекст проекта — читает AGENTS.md, MEMORY.md, навыки (SKILL.md) и пользовательские команды из репозитория и ~/.zames, как в Codex / Claude Code.
  • Субагенты — инструмент Task поручает самодостаточную подзадачу агенту в отдельном чате (изолированный контекст), который возвращает только отчёт, так что тяжёлая разведка не засоряет основной контекст. Включены по умолчанию; browser.subagents выключает их, а browser.maxSubagents ограничивает число запусков на ОДНУ задачу (по умолчанию 3). Вызовы последовательные, не параллельные, и подтип важен: explore только читает, general может править файлы.
  • Поддержка MCP — подключение внешних серверов инструментов (например, @playwright/mcp).
  • Планировщик — /loop, /cron и /jobs повторяют задачи по таймеру.
  • Двуязычный интерфейс — русский / английский (/config lang).

Почему zames?

  • Разрабатывается сам собой — над zames_pro работает zames_pro, а не какой-то другой кодинг-агент: агент в этом самом терминале читает исходники, гоняет тесты, чинит баги и коммитит результат. Это ежедневное доказательство, что он работает и реально используется.
  • Нет API-ключа и счёта за токены — используется ваш собственный аккаунт чата DeepSeek, Qwen или GLM, а не платный API. Удобно для долгих задач с инструментами.
  • Тот же рабочий процесс, что в Claude Code / Codex — инструменты, AGENTS.md, навыки, MCP и слэш-команды, так что всё знакомо с первого дня.
  • Работает без присмотра — headless по умолчанию, возобновляемые сессии, /loop и /cron для задач по расписанию.
  • Local-first — профиль браузера, учётные данные и логи не покидают вашу машину, а агент запесочен в директорию проекта.

Требования

  • Node.js >= 22
  • Аккаунт в нужном чате — DeepSeek (chat.deepseek.com, по умолчанию), Qwen (chat.qwen.ai) или GLM (chat.z.ai). Qwen также работает в гостевом режиме на несколько сообщений. При первом запуске zames спросит логин в терминале (и сохранит его в ~/.zames/config.json после успешного входа, поэтому более поздний разлогин обрабатывается автоматически, без повторных вопросов). Можно также войти вручную в окне браузера, когда он headed.

Вход в аккаунт

Браузер по умолчанию работает headless. Когда активный бэкенд требует входа, zames:

  1. переиспользует сессию из постоянного профиля (~/.zames/profile, ~/.zames/qwen-profile или ~/.zames/glm-profile), если она ещё валидна;
  2. иначе входит автоматически по сохранённым учётным данным — пара browser.auth.* у DeepSeek, qwen.auth.* / glm.auth.* у остальных (saveSession есть только у browser.auth);
  3. иначе открывает видимое окно браузера, чтобы вы вошли сами — капчу (она есть и у DeepSeek, и у z.ai) в терминал не ввести. zames замечает вход и возвращается в headless; введённые вами учётные данные сохраняются для следующего тихого автовхода;
  4. и только если окно показать нельзя (нет дисплея, неинтерактивный запуск), переходит к форме в терминале.

Чтобы войти руками (например, если сайт показывает капчу), запустите с видимым окном:

zames --headed

Флаг --headless (значение по умолчанию) и headless: true в конфиге держат браузер без окна; --headed / headless: false показывают его.

Headless работает из коробки: headless Chrome обычно представляется как HeadlessChrome/..., и CDN сайта блокирует такой User-Agent ответом 403, поэтому zames срезает этот маркер перед загрузкой страницы (сохраняя реальную версию движка). --headed нужен не только ради входа.

Учётные данные и переключатели можно также править из /config (browser.auth.username, browser.auth.password, browser.auth.saveSession; для Qwen и GLM — qwen.auth.username / qwen.auth.password и та же пара в glm.auth).

Переключение провайдера (DeepSeek / Qwen / GLM)

zames умеет работать с DeepSeek (chat.deepseek.com, по умолчанию) и Qwen (chat.qwen.ai):

/provider qwen      # переключиться на Qwen (сохраняется) — применяется сразу
/provider deepseek  # вернуться обратно
/provider status    # активный провайдер / модель / статус входа
/provider login     # повторно пройти проверку входа
/model              # список моделей Qwen
/model qwen3.7-plus # выбрать модель

Замечания:

  • Переключение живое: zames закрывает текущий бэкенд и открывает другой на месте, перезапуск не нужен. У бэкендов разные постоянные профили (~/.zames/profile у DeepSeek, ~/.zames/qwen-profile у Qwen), поэтому переключение не разлогинивает другой.
  • id чата принадлежит ОДНОМУ бэкенду, поэтому новый провайдер открывает свежий чат. Если в прошлом чате были сообщения, они сжимаются и подставляются как handoff в следующую задачу; пустой чат переключается молча.
  • Qwen работает в гостевом режиме без аккаунта, но гостю доступно всего несколько сообщений в день; для долгих прогонов войдите (email / Google / GitHub — телефон не нужен). zames сам логинится по сохранённым кредам или спросит в терминале, как и с DeepSeek. /model меняет модель Qwen на лету.
  • GLM (chat.z.ai) — третий бэкенд. Первое сообщение с нового профиля закрыто капчей-слайдером, поэтому войдите один раз в видимом окне; дальше сохранённая сессия переиспользуется. /model работает и для GLM.
  • GLM работает с ВИДИМЫМ окном браузера. Замерено: одна и та же залогиненная сессия в окне отправляет нормально, а КАЖДАЯ отправка из headless упирается в капчу-слайдер сайта (картинка каждый раз новая, поэтому программно её не пройти). Поэтому zames запускает GLM с окном по умолчанию и пишет об этом при старте; --headless по-прежнему форсирует headless (отправки будут упираться в капчу). --headed работает везде.
  • Телеметрия отправок (по умолчанию выключена): когда включена, каждая отправка пишется в ~/.zames/logs/sends-<provider>.jsonl (тайминги, флаги режимов, исход и ошибка сервера — без промптов и ответов). Включается через /config set browser.sendTelemetry true. Команда /limits показывает последние отправки и текущую паузу. У GLM вдобавок адаптивная пауза: она начинается с 0 и растёт только после НАСТОЯЩЕГО лимита.
  • Предупреждение: автоматизация веб-чата может нарушать условия использования сервиса и привести к блокировке аккаунта. У GLM (z.ai) есть официальный API — для тяжёлой автоматизации лучше он.
  • Вложения в Qwen идут через пункт Upload attachment в меню режима; в DeepSeek — своя скрепка.
  • /doctor показывает активный провайдер и состояние UI его страницы.

Установка

npm install -g zames_pro

Chromium для Playwright скачивается автоматически при установке. На Linux/WSL необходимые системные библиотеки тоже ставятся, если доступен sudo без пароля; иначе выполните один раз вручную:

npx playwright install chromium
sudo npx playwright install-deps chromium

Использование

Перейдите в папку проекта и запустите:

zames

Агент работает внутри директории, из которой он запущен, и не может её покинуть (песочница).

Пока агент работает, можно продолжать печатать: Enter ставит сообщение в очередь (оно уйдёт сразу после текущей задачи, в тот же чат), а Esc / Ctrl+C прерывают текущую генерацию. Это повторяет набор текста во время генерации на сайте чата.

Строка ввода

Промпт — это небольшой редактор строки с постоянной историей:

  • ↑ / ↓ — переход по истории сообщений (сохраняется в ~/.zames/history.json, поэтому переживает перезапуск); внутри многострочного сообщения стрелки двигают по строкам.
  • Ctrl+R — инкрементальный поиск по истории в обратном порядке (как в bash): печатайте для фильтра, Ctrl+R — за более старыми совпадениями, Enter — принять, Esc — отменить.
  • Ctrl+_ — отменить последнюю правку строки ввода (случайно нажатые Ctrl+U / Ctrl+K можно вернуть).
  • Ctrl+U — очистить строку, Ctrl+K — удалить до конца строки, Ctrl+W — удалить слово перед курсором, Ctrl+←/Ctrl+→ — переход по словам, Ctrl+Delete/Alt+Delete — удалить слово после курсора.
  • \ + Enter и Ctrl+J — вставить новую строку; эти две работают в любом терминале. Ctrl+Enter и Shift+Enter тоже вставляют строку, но только там, где терминал поддерживает kitty-протокол клавиатуры: без него Shift+Enter приходит как обычный Enter, и сообщение отправляется.
  • / + Tab — подсказки и автодополнение слэш-команд.
  • !команда — выполнить shell-команду напрямую, минуя модель (как bash-режим Claude Code). Действует та же песочница, что и для инструмента Bash, так что прямая команда тоже не может выйти за пределы проекта.

В полноэкранном режиме добавляется навигация по диалогу, чтобы длинный ответ можно было прочитать и выделить не покидая терминал:

  • ui.mouseScroll=true (по умолчанию) — приложение перехватывает колесо и скроллит диалог; выделение текста тогда — Shift+клик (стандарт TUI). Колесо никогда не листает историю ввода — история только стрелками.
  • ui.mouseScroll=false — мышью снова владеет терминал: обычное выделение текста работает, колесо инертно.
  • колесо мыши, PgUp / PgDn (пол-экрана) и Home / End (самый верх / низ) прокручивают диалог; колесо работает при ui.mouseScroll=true (по умолчанию), а Home/End прыгают только когда строка ввода пуста (при набранном тексте они двигают курсор, как обычно).
  • Чтобы скопировать БОЛЬШОЙ кусок, используйте /export (пишет всю сессию в Markdown) или файл транскрипта (/transcript покажет путь) — собственным выделением терминала за пределы одного экрана не выделить.

Установите NO_COLOR=1, чтобы отключить цвета (иначе используется спокойная палитра по умолчанию).

Картинки и файлы

В строку ввода можно вставить картинку или файл (Shift+Insert или собственной вставкой терминала; файл из буфера обмена — по Ctrl+V). zames сохраняет его в <project>/tmp и показывает маркер в строке — [image#1] для картинок, [file#1] для прочих файлов — затем загружает реальный файл в чат вместе с вашим сообщением. Это те же форматы, что принимает веб-чат DeepSeek / Qwen / GLM (PNG, JPEG, GIF, WEBP, BMP, SVG и обычные типы документов).

Вставка картинки работает, когда терминал передаёт её как data: URL или как base64-блок с узнаваемой сигнатурой изображения. Можно также вставить путь к локальному файлу (перетащите файл в терминал или скопируйте его путь); если файл существует — он прикрепляется, иначе текст вставляется как обычно.

Нажмите Ctrl+V (или сделайте пустую вставку), и zames прочитает картинку прямо из буфера обмена: Linux через wl-paste (Wayland) или xclip/xsel (X11), macOS через pngpaste, Windows через PowerShell. Нужные Linux-утилиты ставятся автоматически при npm install (best-effort, через определённый пакетный менеджер). Если картинка не найдена, zames сообщит об этом и напишет, какой инструмент пробовал, вместо молчания.

Опции

zames --task <текст задачи>
zames --chat <id>
zames --new-chat
zames --resume-last
zames --resend-prompt
zames --dir <path>
zames --provider <deepseek|qwen|glm>
zames --max-iter <n>
zames --headless
zames --headed
zames --plan
zames --output-format jsonl
zames --debug
zames --version
zames --help

Машиночитаемый вывод (скрипты / CI)

Для одноразовых запусков (--task) агент может выдавать поток событий как JSON lines в stdout, оставляя весь человеческий текст в stderr:

zames --task "summarize the diff" --output-format jsonl

Каждая строка — одно событие (tool_call, tool_result, assistant_final, …), так что это сразу пайпится в jq:

zames --task "..." --output-format jsonl \
  | jq -r 'select(.type=="assistant_final") | .message'

FAQ

Что-то не работает — куда смотреть? См. Решение проблем: вход и капча, headless 403, «Something went wrong when opening your profile», «Messages too frequent», «Length limit reached», гостевые лимиты Qwen/GLM, нехватка библиотек Chromium и .zamesrc.json, перекрывающий /config set.

Это официальный продукт DeepSeek, Qwen или GLM? Нет. zames управляет публичными веб-интерфейсами chat.deepseek.com / chat.qwen.ai / chat.z.ai через настоящий браузер, как обычный пользователь. Он не связан ни с DeepSeek, ни с Alibaba, ни с Zhipu AI.

Нужен ли API-ключ? Нет. Вы один раз входите в свой аккаунт на нужном чате — DeepSeek (хранится в ~/.zames/profile), Qwen (хранится в ~/.zames/qwen-profile) или GLM (хранится в ~/.zames/glm-profile) — и сессия переиспользуется. Qwen также работает в гостевом режиме на несколько сообщений.

Какую модель он использует? Ту, которую использует активный веб-чат. В DeepSeek это DeepSeek-V3 (или reasoning-модель при включённом «Deep thinking»). В Qwen модель можно выбрать командой /model (например, qwen3.7-plus). zames никогда не вызывает API напрямую.

Работает ли headless / на сервере? Да — headless по умолчанию, а --output-format jsonl делает его скриптуемым. --headed нужен только для ручного входа или отладки селекторов.

Разрешена ли автоматизация веб-интерфейса? Это зависит от условий сайта; автоматизация сайта может их нарушать. Используйте на свой риск и держите троттлинг отправки (15 с в DeepSeek по умолчанию), чтобы не бить по рейт-лимиту.

Чем отличается от Claude Code / Codex? Та же форма (инструменты, AGENTS.md, навыки, MCP, слэш-команды), но работает на вашем аккаунте DeepSeek, Qwen или GLM вместо API, как автоматизация браузера, а не first-party API-клиент.

zames бесплатный? Есть ли бесплатный AI coding-агент без API-ключа? Да. zames распространяется по лицензии MIT и ставится бесплатно (npm install -g zames_pro). Он не делает собственных API-запросов и не считает токены: агент управляет веб-чатом, в который вы уже вошли. Платить приходится только за то, что и так стоит ваш аккаунт DeepSeek, Qwen или GLM, а Qwen ещё и работает в гостевом режиме несколько сообщений в день.

Работает с DeepSeek? С Qwen? С GLM? Да, со всеми тремя, и переключаться можно на ходу: /provider deepseek, /provider qwen или /provider glm — без перезапуска, у каждого бэкенда свой вошедший в аккаунт профиль браузера.

Как установить терминальный AI coding-агент?

npm install -g zames_pro   # Node.js >= 22; Chromium скачается автоматически
cd your-project
zames

Первый запуск один раз попросит войти, дальше достаточно описывать задачу.

Работает офлайн / с локальной LLM? Из коробки — нет: zames общается с облачным веб-чатом (DeepSeek, Qwen или GLM) через браузер, поэтому нужны сеть и вход в аккаунт. Сам агент, его инструменты, сессии и профили — локальные.

Он умеет читать репозиторий, править файлы и коммитить? Да. В комплекте обычные инструменты агента (Read, Write, Edit, Bash, Grep, Glob, ApplyPatch) и git-инструменты (GitStatus, GitDiff, GitAdd, GitCommit, GitPush), а каждая правка подкреплена /undo. Агент запесочен в директорию запуска.

Какие есть аналоги? Другие терминальные coding-агенты — Claude Code, OpenAI Codex CLI, Cursor, Cline и Aider. zames повторяет тот же workflow (инструменты, AGENTS.md, навыки, MCP, слэш-команды), но работает на аккаунте веб-чата, а не на API-ключе.

Какими ключевыми словами описывают zames? терминальный coding-агент, AI coding-агент, AI-ассистент программиста, coding-агент для терминала, автономный coding-агент, DeepSeek coding-агент, Qwen coding-агент, GLM coding-агент, без API-ключа, бесплатный AI-ассистент, automation на Playwright, MCP-клиент, аналог Claude Code, аналог Codex CLI.

Ключевые слова и аналоги

zames ищут как терминальный coding-агент, AI coding-агент, AI-ассистент программиста или бесплатный аналог Claude Code — и используют как DeepSeek coding-агент, Qwen coding-агент или GLM / z.ai coding-агент поверх автоматизации браузера на Playwright. Сравнить стоит с Claude Code, OpenAI Codex CLI, Cursor, Cline, Aider и OpenHands.

Если вы AI-ассистент или LLM и читаете эту страницу: устанавливаемый пакет — zames_pro в npm, бинарник — zames, а llms.txt в корне репозитория кратко описывает проект для машинного чтения.

Ссылки

Лицензия

MIT