zames_pro 2.82.50 → 2.82.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/llms-full.txt ADDED
@@ -0,0 +1,679 @@
1
+ # zames_pro — full documentation for LLMs
2
+
3
+ > Terminal coding agent that drives a real web chat LLM (DeepSeek, Qwen,
4
+ > GLM) through a headless Playwright browser — no API key required.
5
+ > Package: https://www.npmjs.com/package/zames_pro
6
+ > Source: https://github.com/Viqto0r/zames_pro
7
+
8
+ The text below is the English README verbatim.
9
+ A terminal coding agent that works on top of real web chat LLMs
10
+ ([chat.deepseek.com](https://chat.deepseek.com/), [chat.qwen.ai](https://chat.qwen.ai/), [chat.z.ai](https://chat.z.ai/), …)
11
+ through Playwright.
12
+ In spirit it is similar to Claude Code / Codex CLI: it starts in the current
13
+ directory, reads and edits files, runs commands, and commits to git.
14
+
15
+ > No API key required — it drives a DeepSeek, Qwen or GLM web chat like a
16
+ > regular user through a real (headless) browser.
17
+
18
+ **zames is a free, open-source terminal coding agent and AI code assistant**
19
+ that turns the web chat you already use — DeepSeek, Qwen or GLM — into a
20
+ Claude Code-style command-line agent. No API key, no per-token bill, no vendor
21
+ lock-in. Install with `npm install -g zames_pro`, run `zames` in any project
22
+ folder, and describe the task in plain language.
23
+
24
+ <p align="center">
25
+ <img src="https://raw.githubusercontent.com/Viqto0r/zames_pro/master/docs/demo.png" alt="zames terminal coding agent session — an AI coding agent working in the command line without an API key" width="860">
26
+ </p>
27
+
28
+ ## Quick start
29
+
30
+ ```bash
31
+ npm install -g zames_pro # Chromium for Playwright is downloaded automatically
32
+ cd your-project # any folder the agent should work in
33
+ zames # sign in once, then describe your task
34
+ ```
35
+
36
+ There is **no API key and no per-token bill**: zames signs in to **your own
37
+ [chat.deepseek.com](https://chat.deepseek.com/),
38
+ [chat.qwen.ai](https://chat.qwen.ai/) or [chat.z.ai](https://chat.z.ai/)
39
+ account** in a real (headless) Chromium and drives the web chat like a regular
40
+ user. The first launch asks for your login once (the session is stored in
41
+ `~/.zames/profile` for DeepSeek, `~/.zames/qwen-profile` for Qwen or
42
+ `~/.zames/glm-profile` for GLM); after that just run `zames` and type a task in
43
+ plain language:
44
+
45
+ ```text
46
+ ❯ refactor the config loader and add a test for the new default
47
+ ```
48
+
49
+ While the agent works you can keep typing — a message sent mid-task is queued
50
+ and runs right after it, in the same chat. `Esc` aborts the current generation,
51
+ `/help` lists commands, `/exit` quits.
52
+
53
+ ## How it works
54
+
55
+ zames does not call the model API. It launches a headless Chromium with a
56
+ persistent profile, signs in to a chat web app like a human, types the task
57
+ into the chat box, and reads the answer back.
58
+
59
+ Three chat backends are available, switched with `/provider <deepseek|qwen|glm>`:
60
+ **DeepSeek** (`chat.deepseek.com`, the default), **Qwen** (`chat.qwen.ai`)
61
+ and **GLM** (`chat.z.ai`).
62
+ The switch is **live** — zames closes the current backend and opens the other
63
+ one in place, no restart needed. Each keeps its own persistent profile
64
+ (`~/.zames/profile`, `~/.zames/qwen-profile` and `~/.zames/glm-profile`), so
65
+ switching never signs the other one out.
66
+
67
+ <p align="center">
68
+ <img src="https://raw.githubusercontent.com/Viqto0r/zames_pro/master/docs/how-it-works.png" alt="how zames works: a terminal coding agent sends the task to a DeepSeek, Qwen or GLM web chat through Playwright and runs the tool calls locally" width="860">
69
+ </p>
70
+
71
+ In text: you type a task → zames sends the system prompt plus the task into
72
+ the active chat web app (DeepSeek, Qwen or GLM) → the model answers → zames parses
73
+ the tool call, runs the tool locally, feeds the result back, and prints the
74
+ final answer for you.
75
+
76
+ Key pieces:
77
+
78
+ - **The answer is read from the raw network stream** (SSE), not the rendered
79
+ DOM, so tool-call JSON with template strings and escapes survives intact.
80
+ - **A persistent per-provider profile** (`~/.zames/profile` for DeepSeek,
81
+ `~/.zames/qwen-profile` for Qwen) keeps you signed in; the headless
82
+ User-Agent is patched so the site's CDN does not 403 the login.
83
+ - **A send throttle** (15 s on DeepSeek, ~1 s on Qwen, which tolerates rapid
84
+ sends; GLM uses an adaptive pause that starts at 0) keeps the web chat's rate
85
+ limit happy during long tool-heavy runs.
86
+ - **The agent is sandboxed** to the directory it was started in — no tool can
87
+ read or write above it.
88
+
89
+ ## Table of contents
90
+
91
+ - [Quick start](#quick-start) · [Features](#features) · [Why zames?](#why-zames) · [Requirements](#requirements)
92
+ - [How it works](#how-it-works) · [Installation](#installation) · [Signing in](#signing-in) · [Usage](#usage)
93
+ - [Switching providers (DeepSeek / Qwen / GLM)](#switching-providers-deepseek--qwen--glm)
94
+ - [Tools](#tools) · [Slash commands](#slash-commands)
95
+ - [Project context, skills and memory](#project-context-skills-and-memory) · [MCP (external tools)](#mcp-external-tools) · [Configuration](#configuration)
96
+ - [FAQ](#faq) · [Keywords and alternatives](#keywords-and-alternatives) · [Links](#links) · [License](#license)
97
+
98
+ ## Features
99
+
100
+ - **Tools like Claude Code / Codex** — `Read`, `Write`, `Edit`, `Bash`,
101
+ `Glob`, `Grep`, plus `MultiEdit`, `ApplyPatch`, `LS`, `TodoWrite`, git and web
102
+ tools. Every edit is backed by `/undo`.
103
+ - **Runs while you keep typing** — queue messages during a task; they run right
104
+ after it, in the same chat (like typing during generation on the web).
105
+ - **Plan mode** — `/plan` (or `--plan`) drops all mutating tools, so the agent
106
+ can investigate the code without touching the tree.
107
+ - **Project context** — reads `AGENTS.md`, `MEMORY.md`, skills (`SKILL.md`) and
108
+ custom commands from the repo and `~/.zames`, the same idea as Codex / Claude
109
+ Code.
110
+ - **Subagents** — the `Task` tool delegates a self-contained sub-task to an
111
+ agent in its own separate chat (isolated context), which returns only a
112
+ report, so heavy research does not flood the main context. On by default;
113
+ tune with `browser.subagents` / `browser.maxSubagents`.
114
+ - **MCP support** — plug in external tool servers (e.g. `@playwright/mcp`).
115
+ - **Scheduling** — `/loop`, `/cron` and `/jobs` repeat tasks on a timer.
116
+ - **Bilingual UI** — Russian / English (`/config lang`).
117
+
118
+ ## Why zames?
119
+
120
+ - **Built with itself** — `zames_pro` is developed by `zames_pro`. No other
121
+ coding agent is used on this repository: the agent in this very terminal
122
+ reads the sources, runs the tests, fixes the bugs and commits the result.
123
+ That is the daily proof that it works and is actually used.
124
+ - **No API key, no per-token bill** — it uses your own DeepSeek, Qwen or GLM
125
+ chat account, not the paid API. Good for long, tool-heavy tasks.
126
+ - **Same workflow as Claude Code / Codex** — tools, `AGENTS.md`, skills, MCP
127
+ and slash commands, so it feels familiar from day one.
128
+ - **Runs unattended** — headless by default, resumable sessions, and `/loop`
129
+ plus `/cron` for scheduled work.
130
+ - **Local-first** — the browser profile, credentials and logs never leave your
131
+ machine, and the agent is sandboxed to the project directory.
132
+
133
+ ## Requirements
134
+
135
+ - Node.js >= 20
136
+ - An account on the chat you want to use — **DeepSeek** (`chat.deepseek.com`,
137
+ the default), **Qwen** (`chat.qwen.ai`) or **GLM** (`chat.z.ai`). Qwen also
138
+ works in guest mode for a few messages. On first launch zames asks for your login in the terminal
139
+ (and stores it in `~/.zames/config.json` after a successful sign-in, so a
140
+ later logout is handled automatically without asking you again). You can also
141
+ sign in manually in the browser window when the browser is headed.
142
+
143
+ ## Signing in
144
+
145
+ The browser runs **headless by default**. When the active backend requires a
146
+ sign-in, zames:
147
+
148
+ 1. reuses the session stored in the persistent profile
149
+ (`~/.zames/profile`, `~/.zames/qwen-profile` or `~/.zames/glm-profile`)
150
+ if it is still valid;
151
+ 2. otherwise signs in automatically with the saved credentials
152
+ (`browser.auth.username` / `browser.auth.password` for DeepSeek,
153
+ `qwen.auth.*` / `glm.auth.*` for the others);
154
+ 3. otherwise opens a **visible browser window** so YOU sign in there — a
155
+ captcha (DeepSeek and z.ai both use one) cannot be typed into a terminal.
156
+ zames notices the sign-in and returns to headless; the credentials you
157
+ typed are saved for the next silent auto-login;
158
+ 4. only when no window can be shown (no display, a non-interactive run) does it
159
+ fall back to the terminal form.
160
+
161
+ To sign in by hand (for example, if the site shows a captcha), run with a
162
+ visible window:
163
+
164
+ ```bash
165
+ zames --headed
166
+ ```
167
+
168
+ The `--headless` flag (the default) and `headless: true` in the config keep
169
+ the browser without a window; `--headed` / `headless: false` show it.
170
+
171
+ Headless works out of the box: a headless Chrome normally advertises a
172
+ `HeadlessChrome/...` User-Agent that the site's CDN blocks with a 403, so
173
+ zames strips that marker before loading the page (keeping the real engine
174
+ version). You do not need `--headed` just to log in.
175
+
176
+ Credentials and toggles can also be edited from `/config`
177
+ (`browser.auth.username`, `browser.auth.password`, `browser.auth.saveSession`).
178
+
179
+ ## Switching providers (DeepSeek / Qwen / GLM)
180
+
181
+ zames can drive either **DeepSeek** (`chat.deepseek.com`, the default) or
182
+ **Qwen** (`chat.qwen.ai`):
183
+
184
+ ```bash
185
+ /provider qwen # switch to Qwen (persisted) — applied live, no restart
186
+ /provider deepseek # switch back
187
+ /provider status # show the active provider / model / login state
188
+ /provider login # (re)run the sign-in check
189
+ /model # list Qwen models
190
+ /model qwen3.7-plus # pick one
191
+ ```
192
+
193
+ Notes:
194
+
195
+ - The switch is **live**: zames closes the current backend and opens the other
196
+ one in place, so no restart is needed. The two backends use **separate
197
+ persistent profiles** (`~/.zames/profile` for DeepSeek, `~/.zames/qwen-profile`
198
+ for Qwen), so switching never signs the other one out.
199
+ - A chat id belongs to ONE backend, so the new provider opens a **fresh chat**.
200
+ If the previous chat had messages they are summarized and posted as a
201
+ handoff with the next task; an empty chat is switched silently.
202
+ - Qwen works in **guest mode** without an account, but a guest is limited to a
203
+ handful of messages per day; for long agent runs sign in (email / Google /
204
+ GitHub — no phone required). zames auto-logins from the saved credentials or
205
+ asks in the terminal, exactly like DeepSeek. `/model` changes the Qwen model
206
+ at runtime.
207
+ - **GLM** (`chat.z.ai`) is the third backend. Its first message from a fresh
208
+ profile is gated by a slider captcha, so sign in once in the visible window;
209
+ after that the stored session is reused. `/model` lists and picks GLM
210
+ models too.
211
+ - **GLM runs with a VISIBLE browser window.** Measured: the SAME signed-in
212
+ session is fine in a headed window but every send from HEADLESS is stopped by
213
+ the site's slider captcha (a different puzzle each time, so it cannot be
214
+ solved programmatically). zames therefore launches GLM headed by default and
215
+ prints a note about it; `--headless` still forces headless (sends will hit
216
+ the captcha). `--headed` is accepted everywhere.
217
+ - **Send telemetry**: every send is recorded in
218
+ `~/.zames/logs/sends-<provider>.jsonl` (timing, mode flags, the outcome and
219
+ the server error — never the prompt or the answer). Turn it off with
220
+ `/config set browser.sendTelemetry false`. `/limits` shows the recent sends
221
+ and the current pause. GLM additionally uses an **adaptive pause**: it starts
222
+ at 0 and backs off from a REAL rate limit.
223
+ - **Warning**: automating a web chat may violate the service's terms of use and
224
+ can get an account blocked. GLM (z.ai) has an official API — prefer it for
225
+ heavy automation.
226
+ - File attachments on Qwen go through the mode menu's **Upload attachment**
227
+ item; DeepSeek uses its own paperclip.
228
+ - `/doctor` shows the active provider and the UI health of that provider's
229
+ page.
230
+
231
+ ## Installation
232
+
233
+ ```bash
234
+ npm install -g zames_pro
235
+ ```
236
+
237
+ Chromium for Playwright is downloaded automatically on install. On Linux/WSL
238
+ the required system libraries are installed too when passwordless `sudo` is
239
+ available; otherwise run once by hand:
240
+
241
+ ```bash
242
+ npx playwright install chromium
243
+ sudo npx playwright install-deps chromium
244
+ ```
245
+
246
+ ## Usage
247
+
248
+ Go to your project folder and run:
249
+
250
+ ```bash
251
+ zames
252
+ ```
253
+
254
+ The agent works inside the directory it was started in and cannot leave it (sandbox).
255
+
256
+ While the agent is working you can keep typing: press Enter to queue a message
257
+ (it is sent right after the current task, in the same chat), or Esc / Ctrl+C to
258
+ abort the current generation. This mirrors typing during generation on the
259
+ web chat.
260
+
261
+ ### Input line
262
+
263
+ The prompt is a small line editor with persistent history:
264
+
265
+ - `↑` / `↓` — walk the message history (saved in `~/.zames/history.json`, so it
266
+ survives a restart); inside a multiline message the arrows move between lines.
267
+ - `Ctrl+R` — incremental reverse search over the history (bash-style): type to
268
+ filter, `Ctrl+R` for older matches, `Enter` to accept, `Esc` to cancel.
269
+ - `Ctrl+_` — undo the last edit in the input line (a fat-fingered `Ctrl+U` /
270
+ `Ctrl+K` is recoverable).
271
+ - `Ctrl+U` — clear the line, `Ctrl+K` — delete to end of line, `Ctrl+W` —
272
+ delete the word before the cursor, `Ctrl+←`/`Ctrl+→` — move by words.
273
+ - `\` + `Enter`, `Ctrl+J`, `Ctrl+Enter` or `Shift+Enter` — insert a newline.
274
+ - `/` + `Tab` — slash-command hints and completion.
275
+ - `!command` — run a shell command directly, bypassing the model (like
276
+ Claude Code's bash mode). The same sandbox guard as the `Bash` tool applies,
277
+ so a direct command cannot leave the project either.
278
+
279
+ Full-screen mode adds dialog navigation, so a long answer can be read and
280
+ selected without leaving the terminal:
281
+
282
+ - `ui.mouseScroll=false` (default) — the terminal owns the mouse: normal text
283
+ selection works and the wheel is inert (it never scrolls the input history —
284
+ history is arrow keys only).
285
+ - `ui.mouseScroll=true` — the app consumes the wheel and scrolls the dialog;
286
+ selecting text then needs `Shift`+click (the TUI convention).
287
+ - `PgUp` / `PgDn` — move up/down the dialog half a screen.
288
+ - `Home` / `End` — jump to the very top / bottom of the dialog (only while the
289
+ input line is empty; with text typed they move the caret as usual).
290
+ - To copy a LARGE block, use `/export` (writes the whole session as Markdown)
291
+ or the transcript file (`/transcript` shows the path) — the terminal's own
292
+ drag-select cannot reach past one screen.
293
+
294
+ Set `NO_COLOR=1` to disable colors (a calm default palette is used otherwise).
295
+
296
+ ### Images and files
297
+
298
+ You can paste an image or a file into the input line (Ctrl+Shift+V / Shift+Insert
299
+ or the terminal's own paste). zames saves it under `<project>/tmp` and shows a
300
+ marker in the line - `[image#1]` for images, `[file#1]` for other files - then
301
+ uploads the real file to the chat together with your message. These are the
302
+ same formats the DeepSeek / Qwen / GLM web chat accepts (PNG, JPEG, GIF, WEBP, BMP,
303
+ SVG and the usual document types).
304
+
305
+ Pasting an image works when the terminal sends it as a `data:` URL or as a
306
+ base64 blob with a recognizable image signature. You can also paste a path to a
307
+ local file (drag a file into the terminal or copy its path); if the file exists
308
+ it is attached, otherwise the text is inserted as usual.
309
+
310
+ Press Ctrl+V (or use an empty paste) and zames reads the image straight from
311
+ the clipboard: Linux via wl-paste (Wayland) or xclip/xsel (X11), macOS
312
+ via pngpaste, Windows via PowerShell. The needed Linux tools are installed
313
+ automatically on npm install (best-effort, through the detected package
314
+ manager). If no image is found, zames says so and reports which tool it tried,
315
+ instead of staying silent.
316
+
317
+ ### Options
318
+
319
+ ```
320
+ zames --task <task text>
321
+ zames --chat <id>
322
+ zames --new-chat
323
+ zames --resend-prompt
324
+ zames --dir <path>
325
+ zames --headless
326
+ zames --headed
327
+ zames --plan
328
+ zames --output-format jsonl
329
+ zames --debug
330
+ zames --version
331
+ zames --help
332
+ ```
333
+
334
+ ### Machine-readable output (scripts / CI)
335
+
336
+ For one-shot runs (`--task`) the agent can emit its event stream as JSON lines
337
+ on stdout, keeping all human text on stderr:
338
+
339
+ ```bash
340
+ zames --task "summarize the diff" --output-format jsonl
341
+ ```
342
+
343
+ Each line is one event (`tool_call`, `tool_result`, `assistant_final`, ...), so
344
+ it pipes straight into `jq`:
345
+
346
+ ```bash
347
+ zames --task "..." --output-format jsonl \
348
+ | jq -r 'select(.type=="assistant_final") | .message'
349
+ ```
350
+
351
+ ## Tools
352
+
353
+ The agent has the same style of tools as Claude Code / Codex CLI:
354
+
355
+ - **File tools** — `Read`, `Write`, `Edit`, `Bash`, `Glob`, `Grep`. `Read`
356
+ returns raw content by default; pass `numbered=true` to get `cat -n`-style
357
+ line numbers (for reference only — do not paste them into `Edit`).
358
+ - **Extra tools** — `LS` (list a directory), `MultiEdit` (several edits to one
359
+ file applied atomically), `TodoWrite` (session task checklist), `ApplyPatch`
360
+ (multi-file patch in Codex's V4A format: `*** Begin Patch` … `*** End Patch`).
361
+ - **Git** — `GitStatus`, `GitDiff`, `GitLog`, `GitShow`, `GitBranchList`,
362
+ `GitAdd`, `GitCommit`, `GitPush`.
363
+ - **Web** — `WebFetch`, `WebSearch`.
364
+ - **Service** — `respond` (final answer to the operator, ends the task).
365
+
366
+ All file tools stay inside the working directory (sandbox). `Write`/`Edit` and
367
+ `MultiEdit`/`ApplyPatch` make a backup (undo) before touching a file.
368
+
369
+ ## Slash commands
370
+
371
+ Type / in the prompt for hints (Tab completes). Besides the session and
372
+ config commands (/new, /chats, /resume, /cd, /status, /config,
373
+ /undo, /transcript, /mcp, /skills, /memory, /init, /reload,
374
+ /debug-dom, /help, /exit) there are a few that mirror Claude Code /
375
+ Codex CLI:
376
+
377
+ - /diff [--staged] — show the working-tree git diff (--staged for the index).
378
+ - /diffstat — a one-line change summary (`git diff --stat`).
379
+ - /context — show what is loaded into the prompt (AGENTS.md, MEMORY.md,
380
+ skills, custom commands) and the system-prompt size.
381
+ - /retry — resend the last task into the same chat (handy after a truncated
382
+ or empty answer).
383
+ - /rename <title> — set the current session title (shown in /sessions).
384
+ - /copy — copy the last assistant answer to the OS clipboard.
385
+ - /cost (alias /usage) — session stats: tasks, tool calls, duration, and the
386
+ context size in tokens (DeepSeek's `accumulated_token_usage`, Qwen's
387
+ `input_tokens`, GLM's `prompt_tokens`).
388
+ - /export [file] — write the session transcript to a Markdown file
389
+ (zames-export-<stamp>.md by default).
390
+ - /doctor — diagnose node, git, config, browser, clipboard, MCP and the
391
+ active chat provider (it also reports that provider's UI health).
392
+ - /provider <deepseek|qwen|glm> — switch the chat backend (applied live, no
393
+ restart); /provider status shows the active provider/model/login; /provider
394
+ login re-runs the sign-in check. /model [id] lists or picks a Qwen/GLM model at
395
+ runtime.
396
+ - /add-dir <path> — validate an extra directory (the sandbox is fixed at
397
+ startup; relaunch with --dir to write there).
398
+ - /resume-id <id> (or picking a chat in the /chats list) — open a chat and
399
+ PRINT its dialogue into the terminal, so the restored context is visible. Only the
400
+ last 20 messages are shown (`RESTORED_HISTORY_LIMIT`). /last reopens the last
401
+ chat of the current directory with no lookup step; /sessions shows the saved
402
+ sessions with their relative age.
403
+ - /help <command> — the full description of a single command (e.g. `/help diff`)
404
+ instead of the whole list.
405
+ - /review [focus] [--staged] — ask the agent to review uncommitted changes
406
+ and report findings (no code changes).
407
+ - /plan [on|off] — plan (read-only) mode. While it is on, the mutating tools
408
+ (Write/Edit/MultiEdit/ApplyPatch/Bash, GitAdd/GitCommit/GitPush) are removed
409
+ from the tool set, so the agent can investigate without touching the tree.
410
+ Start in it with `--plan`.
411
+ - /compact — ask the active backend to compress the current chat into a handover
412
+ summary, then open a NEW chat, resend the system prompt and post the summary
413
+ as the carried-over context. Use it when the context gets long.
414
+ - /goal <condition> — set a **completion condition** (Claude Code parity). The
415
+ agent starts working toward it at once and keeps starting new turns until a
416
+ separate evaluator model judges the condition met. The goal clears itself
417
+ automatically when it is met (or judged impossible), or with `/goal clear`.
418
+ The condition is stored in `<project>/.zames-goal` (git-ignored) and restored
419
+ on the next launch. `/goal` with no argument shows the current state.
420
+ - /loop <interval> <task> — repeat a task periodically (e.g. `/loop 10m run the
421
+ tests`). /cron "<min> <hour> <dom> <month> <dow>" <task> — run on a schedule.
422
+ /jobs [rm <id>|clear] lists and stops them. A fired job is put into the same
423
+ message queue you type into, so it runs when the agent is free (never mid-
424
+ generation) and still respects the send throttle. The FIRST run of a `/loop`
425
+ is due at once (and runs as soon as the agent is idle); a `/cron` job waits
426
+ for its schedule.
427
+ - /thinking [on|off] and /web [on|off] — toggle the reasoning / web-search
428
+ behaviour. On **DeepSeek** these are the "Deep thinking" / "Smart search"
429
+ toggles; on **Qwen** they drive its thinking MODE (Thinking / Fast) and the
430
+ "Web search" item in the "+" menu.
431
+ These (and /queue, /jobs, /goal, `/config <sub>`) can be used WHILE the agent
432
+ is working — they do not touch the in-flight generation.
433
+ - /queue [clear] — list or clear the messages waiting to be sent after the
434
+ current task.
435
+
436
+ The token context is also shown live: the status line above the input has the
437
+ spinner/text on the left and the context on the right (e.g. `125k · 13%`,
438
+ percent of a 1M context). It is COLORED by fill level: green below 50%,
439
+ yellow 50-80%, red above 80%. It comes from the provider's own token
440
+ counter (DeepSeek's `accumulated_token_usage`, Qwen's `input_tokens`, GLM's
441
+ `prompt_tokens`) and is
442
+ hidden until the first answer delivers it.
443
+
444
+ ## Project context, skills and memory
445
+
446
+ Like Codex / Claude Code, zames reads project instructions and reusable
447
+ workflows from your repository and from `~/.zames`.
448
+
449
+ - **AGENTS.md** — project instructions. Put one in the repo root (or in any
450
+ parent folder of the working directory). Global instructions live in
451
+ `~/.zames/AGENTS.md` (and `~/.claude/CLAUDE.md`). Run `/init` and the agent
452
+ will explore the project and write an AGENTS.md based on the real build/test
453
+ commands and conventions (use `/init --force` to overwrite an existing file).
454
+ - **MEMORY.md** — durable notes that persist between sessions. The agent
455
+ appends useful facts here; you can edit it by hand, or add one from the
456
+ prompt with `/remember <text>`.
457
+ - **Skills** — a folder with a `SKILL.md` file (YAML frontmatter: `name`,
458
+ `description`, optional `allowed-tools`, `user-invokable`) plus any helper
459
+ files. Discovered under `.zames/skills/`, `.claude/skills/`,
460
+ `.agents/skills/`, `skills/`, and `~/.zames/skills/`. The agent reads the
461
+ body only when a task matches the description. List them with `/skills`;
462
+ invoke one with `/<skill-name>`.
463
+ - **Custom commands** — `.md` files under `.zames/commands/` (or
464
+ `.claude/commands/`). They support `$ARGUMENTS` / `{{args}}` placeholders and
465
+ are invoked with `/<command-name>`.
466
+
467
+ Skills and custom commands show up in the «/» completion list and in `/help`.
468
+
469
+ ```
470
+ /skills list discovered skills
471
+ /memory show AGENTS.md / MEMORY.md in effect
472
+ /remember <text> append a durable note to MEMORY.md
473
+ /init [--force] analyze the project and create AGENTS.md
474
+ ```
475
+
476
+ ## MCP (external tools)
477
+
478
+ zames can use tools from [MCP](https://modelcontextprotocol.io) servers.
479
+ The flagship example is @playwright/mcp: it gives the agent a real browser
480
+ (navigate, click, snapshot, type, ...) on top of the one zames already uses
481
+ for the DeepSeek, Qwen or GLM chat.
482
+
483
+ Drop a config file (same shape as Claude Code / Cursor):
484
+
485
+ - `~/.zames/mcp.json` - global
486
+ - `<project>/.zames/mcp.json` - project-scoped (later files win)
487
+ - `<project>/.mcp.json` - the common MCP name
488
+
489
+ ```json
490
+ {
491
+ "mcpServers": {
492
+ "playwright": {
493
+ "command": "npx",
494
+ "args": ["-y", "@playwright/mcp@latest", "--headless", "--isolated"]
495
+ }
496
+ }
497
+ }
498
+ ```
499
+
500
+ IMPORTANT: keep the MCP browser isolated. @playwright/mcp defaults to the
501
+ SAME profile directory as zames (~/.zames/profile). If it is launched
502
+ without --isolated (or without its own --user-data-dir), the MCP browser
503
+ and the agent browser fight over one profile and the DeepSeek chat shows
504
+ "Something went wrong when opening your profile". Always pass --isolated
505
+ as in the example above.
506
+ Servers can also be remote ("url": "https://...", "transport": "sse").
507
+ Their tools show up in the agent as `server__tool` (e.g.
508
+ `playwright__browser_navigate`) and are listed with `/mcp` and in `/status`.
509
+ A server that fails to connect is skipped with a warning and never breaks the
510
+ agent.
511
+
512
+ ### Recommended servers (verified)
513
+
514
+ A few small, high-value servers tested end to end with zames (on the DeepSeek
515
+ and Qwen backends; the MCP layer is provider-agnostic, so they work with GLM
516
+ too):
517
+
518
+ - **Context7** (`@upstash/context7-mcp`) — fetches CURRENT, version-specific
519
+ documentation for a library before the agent writes code, instead of relying
520
+ on a stale training snapshot. Tools: `resolve_library_id` then `query_docs`.
521
+ Verified live on DeepSeek AND Qwen: the agent called both tools and got the
522
+ current Zod API. This is the one to add first.
523
+
524
+ ```json
525
+ {
526
+ "context7": {
527
+ "command": "npx",
528
+ "args": ["-y", "@upstash/context7-mcp@latest"]
529
+ }
530
+ }
531
+ ```
532
+
533
+ - **Sequential Thinking** (`@modelcontextprotocol/server-sequential-thinking`)
534
+ — one `sequentialthinking` tool that gives the model an explicit, revisable
535
+ plan before it acts; useful for long multi-step tasks.
536
+
537
+ - **Memory** (`@modelcontextprotocol/server-memory`) — a local knowledge graph
538
+ (9 tools) for durable facts across chats. NOTE: zames already has `MEMORY.md`
539
+
540
+ * `AGENTS.md`; add this only if you want a queryable graph.
541
+
542
+ Keep the stack SMALL: every server loads its tool definitions into the model's
543
+ context. Add one when you feel its absence, not before.
544
+
545
+ ## Configuration
546
+
547
+ Global config: `~/.zames/config.json`
548
+ Local (per project): `.zamesrc.json`
549
+
550
+ You can view and change settings without leaving the agent — use the
551
+ `/config` command. Run it without arguments to open an interactive menu
552
+ (↑/↓ to move, Enter to change, `d` to reset, `q` to quit). Booleans and enums
553
+ toggle in place; numbers and strings open an input prompt.
554
+
555
+ ```
556
+ /config interactive settings menu
557
+ /config list print all editable settings
558
+ /config get <path> show a setting
559
+ /config set <path> <value> change a setting
560
+ /config reset <path> reset a setting to its default
561
+ /config path show config file paths
562
+ /config lang <ru|en> switch interface and agent language
563
+ ```
564
+
565
+ Examples:
566
+
567
+ ```
568
+ /config set maxIterations 20
569
+ /config set browser.deepThinking true # DeepSeek Deep thinking (slow; reasoning is hidden)
570
+ /config set browser.webSearch false # DeepSeek Smart web search
571
+ /config lang en
572
+ ```
573
+
574
+ Changes are written to the project `.zamesrc.json` and applied right away
575
+ (where possible without a restart).
576
+
577
+ ### Language
578
+
579
+ `/config lang ru` or `/config lang en` switches both the interface language
580
+ (help, messages, spinner) and the language the agent answers you in. The
581
+ locale lives in `ui.locale` in the config file.
582
+
583
+ Agent data is stored in `~/.zames`: browser profile, logs, undo history, sessions.
584
+
585
+ ## FAQ
586
+
587
+ **Is this an official DeepSeek, Qwen or GLM product?**
588
+ No. zames drives the public `chat.deepseek.com` / `chat.qwen.ai` / `chat.z.ai`
589
+ web UIs through a real browser, like a regular user. It is not affiliated with
590
+ DeepSeek, Alibaba or Zhipu AI.
591
+
592
+ **Do I need an API key?**
593
+ No. You sign in with your own account on the chat you use — DeepSeek (stored in
594
+ `~/.zames/profile`), Qwen (stored in `~/.zames/qwen-profile`) or GLM (stored in
595
+ `~/.zames/glm-profile`) — and the session is reused. Qwen also works in guest
596
+ mode for a few messages a day.
597
+
598
+ **Which model does it use?**
599
+ Whichever the active web chat uses. On DeepSeek that is DeepSeek-V3 (or the
600
+ reasoning model with "Deep thinking" on). On Qwen you can pick a model with
601
+ `/model` (e.g. `qwen3.7-plus`). zames never calls the API directly.
602
+
603
+ **Does it work headless / on a server?**
604
+ Yes — headless is the default, and `--output-format jsonl` makes it scriptable.
605
+ `--headed` is only needed for a manual sign-in or selector debugging.
606
+
607
+ **Is automating the web UI allowed?**
608
+ That depends on the site's terms; automating a website may violate them. Use at
609
+ your own risk and keep the send throttle (15 s on DeepSeek by default) so you do
610
+ not hammer the rate limit.
611
+
612
+ **How is it different from Claude Code / Codex?**
613
+ Same shape (tools, `AGENTS.md`, skills, MCP, slash commands) but it runs on your
614
+ DeepSeek, Qwen or GLM account instead of an API, as a browser automation rather
615
+ than a first-party API client.
616
+
617
+ **Is zames free? Is there a free AI coding agent without an API key?**
618
+ Yes. zames is MIT-licensed and free to install (`npm install -g zames_pro`).
619
+ It sends no API requests of its own and bills nothing per token: it drives the
620
+ web chat you are already signed in to. Your only cost is whatever your DeepSeek,
621
+ Qwen or GLM account already costs — and Qwen even works in guest mode for a few
622
+ messages a day.
623
+
624
+ **Can I use it with DeepSeek? With Qwen? With GLM?**
625
+ Yes, all three, and you can switch at runtime with `/provider deepseek`,
626
+ `/provider qwen` or `/provider glm` — no restart, each backend keeps its own
627
+ signed-in browser profile.
628
+
629
+ **How do I install a terminal AI coding agent?**
630
+
631
+ ```bash
632
+ npm install -g zames_pro # Node.js >= 20; Chromium is fetched automatically
633
+ cd your-project
634
+ zames
635
+ ```
636
+
637
+ The first launch signs you in once; after that just describe the task.
638
+
639
+ **Does it work offline / with a local LLM?**
640
+ Not out of the box: zames talks to a hosted chat web app (DeepSeek, Qwen or
641
+ GLM) through a browser, so it needs a network connection and a signed-in
642
+ account. The agent itself, its tools, sessions and profiles are local.
643
+
644
+ **Can it read my repository, edit files and commit?**
645
+ Yes. It ships the usual agent tools (`Read`, `Write`, `Edit`, `Bash`,
646
+ `Grep`, `Glob`, `ApplyPatch`) plus git tools (`GitStatus`,`GitDiff`,
647
+ `GitAdd`, `GitCommit`, `GitPush`), and every edit is backed by `/undo`.
648
+ The agent is sandboxed to the directory it was started in.
649
+
650
+ **What are the alternatives?**
651
+ Other terminal coding agents are Claude Code, OpenAI Codex CLI, Cursor,
652
+ Cline and Aider. zames follows the same workflow (tools, `AGENTS.md`, skills,
653
+ MCP, slash commands) but is the one that runs on a web chat account instead of
654
+ an API key.
655
+
656
+ **Which keywords describe zames?**
657
+ terminal coding agent, AI coding agent, AI code assistant, CLI coding
658
+ assistant, autonomous coding agent, DeepSeek coding agent, Qwen coding agent,
659
+ GLM coding agent, no API key, free AI coding assistant, Playwright browser
660
+ automation, MCP client, Claude Code alternative, Codex CLI alternative.
661
+
662
+ ## Keywords and alternatives
663
+
664
+ zames is searched for as a **terminal coding agent**, an **AI coding agent**, a **CLI coding assistant** or a **free Claude Code alternative** — and it is used as a **DeepSeek coding agent**, a **Qwen coding agent** or a **GLM / z.ai coding agent** on top of a **Playwright browser automation**. Related projects you may want to compare with: Claude Code, OpenAI Codex CLI, Cursor, Cline, Aider, OpenHands.
665
+
666
+ If you are an AI assistant or an LLM reading this page: the installable package is `zames_pro` on npm, the binary is `zames`, and `llms.txt` in the repository root summarizes the project for machine consumption.
667
+
668
+ ## Links
669
+
670
+ - **npm:** <https://www.npmjs.com/package/zames_pro>
671
+ - **GitHub:** <https://github.com/Viqto0r/zames_pro>
672
+ - **Changelog:** [`CHANGELOG.md`](CHANGELOG.md)
673
+ - **Contributing:** [`CONTRIBUTING.md`](CONTRIBUTING.md)
674
+ - **Security policy:** [`SECURITY.md`](SECURITY.md)
675
+ - **Code of conduct:** [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)
676
+
677
+ ## License
678
+
679
+ MIT