zames_pro 2.82.138 → 2.82.139
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/CHANGELOG.md +83 -0
- package/README.md +86 -63
- package/llms-full.txt +44 -32
- package/llms.txt +1 -1
- package/package.json +1 -1
- package/scripts/postinstall.mjs +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,89 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.82.139] - 2026-10-25
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- docs(test/security-sandbox): drop the backlog priority label
|
|
15
|
+
- docs(test): remove the last backlog ids (I2, U2/U3)
|
|
16
|
+
- docs(test/extra-tools): drop a backlog id from a section header
|
|
17
|
+
- docs(test/cancel-ask): stop quoting a stale watchdog deadline
|
|
18
|
+
- docs(test/send-runtime-block-lift): fix a header that contradicted its own fix
|
|
19
|
+
- docs(test/tui-hints-locale): wrap two over-long comment lines
|
|
20
|
+
- docs(test/tui-hints-locale): wrap the over-long note
|
|
21
|
+
- docs(test): translate leftover Russian comments
|
|
22
|
+
- docs(test/readme-built): say why a second readme is forbidden
|
|
23
|
+
- docs(test/readme-built): say why a second readme is forbidden
|
|
24
|
+
- docs(test/agent-loop): state why the first send is not an agent turn
|
|
25
|
+
- docs(test/statusline-cap): untangle the settle-vs-exit note
|
|
26
|
+
- docs(test/i18n-unused): drop the shouting prefix
|
|
27
|
+
- docs(test/legacy-paste-marker): drop a time-relative word
|
|
28
|
+
- docs(test): replace first-person narration with the subject
|
|
29
|
+
- docs(test/continue-button): drop the first-person narration
|
|
30
|
+
- docs(test/auto-compact): drop a pointer to the fixture value
|
|
31
|
+
- docs(test/run-task): drop the refactor history from the header
|
|
32
|
+
- docs(test/attach-flow-shared): keep only the why of the fake clock
|
|
33
|
+
- docs(test/send-telemetry-nan-block): drop a case that lives in another test
|
|
34
|
+
- docs(test/wsl): state the real reason instead of the CI setup
|
|
35
|
+
- docs(test/agent-loop-robust): name the retry budget constant
|
|
36
|
+
- docs(test/diff-large-file): stop quoting a removed source comment
|
|
37
|
+
- docs(test/auth-login): trim a comment that restated its asserts
|
|
38
|
+
- docs(agents): remove the last backlog ids from the root instructions
|
|
39
|
+
- docs(scripts): remove backlog ids from scenario comments
|
|
40
|
+
- docs(test/generation-incomplete): stop quoting a stale watchdog value
|
|
41
|
+
- docs(test/cancel-ask): drop the runner version from the keep-alive note
|
|
42
|
+
- docs(test/cli-flags): name the skip-list constant
|
|
43
|
+
- docs(test/continue-button): name the real continue constant
|
|
44
|
+
- docs(test/finished-answer-plain-json): name the real constants
|
|
45
|
+
- docs(test/tool-name-resolution): drop the meta clause
|
|
46
|
+
- docs(test/mcp-truncate-surrogate): finish the meta-narration cleanup
|
|
47
|
+
- docs(test): drop meta-narration from test comments
|
|
48
|
+
- docs(test/log-window): state the bug instead of narrating the test
|
|
49
|
+
- docs(readme): mention /rewind next to /undo
|
|
50
|
+
- docs(llms): regenerate llms-full.txt after the readme fixes
|
|
51
|
+
- docs(readme): clarify the per-provider context window sentence
|
|
52
|
+
- docs(readme): the Qwen send pause is 4 s, not 1 s
|
|
53
|
+
- docs(readme): the context percentage is per provider, not always 1M
|
|
54
|
+
- docs(readme): complete the CLI options block
|
|
55
|
+
- docs(readme): list BashOutput and AskUser among the tools
|
|
56
|
+
- docs(readme): make the slash-command list match SLASH_COMMANDS
|
|
57
|
+
- docs(scripts): fix a typo in the build-readme usage line
|
|
58
|
+
- docs(test/agent-loop-robust): fix a section header that contradicted the code
|
|
59
|
+
- docs(test/i18n-unused): tighten the vacuously-green note
|
|
60
|
+
- docs(test/attach-flow): drop a what-comment
|
|
61
|
+
- docs(test/browser-login): drop a duplicated probe walkthrough
|
|
62
|
+
- docs(scripts): document the postinstall contract
|
|
63
|
+
- docs(test/agent-facing-english): point at the split i18n catalog
|
|
64
|
+
- docs(test): remove backlog ids missed by the first sweep
|
|
65
|
+
- docs(developing): refresh module sizes and drop backlog ids
|
|
66
|
+
- docs(agents): drop backlog ids from the module map
|
|
67
|
+
- docs(agents): the providers are three, with three profiles
|
|
68
|
+
- docs(contributing): fix the provider list and the dev-mode description
|
|
69
|
+
- docs(citation): sync the version and keep CITATION.cff updated on release
|
|
70
|
+
- docs(readme): mention GLM in the provider section
|
|
71
|
+
- docs(readme): fix three default/config facts (mouseScroll, telemetry, config write target)
|
|
72
|
+
- docs(readme): state the real Node.js requirement (>= 22)
|
|
73
|
+
- docs(design-notes): replace a backlog id with the actual reason
|
|
74
|
+
- docs(scripts): translate a Russian header and drop backlog ids
|
|
75
|
+
- docs(test/xml): prune and fix stale comments
|
|
76
|
+
- docs(test/subagent): prune stale comments
|
|
77
|
+
- docs(test/ssrf): prune stale comments
|
|
78
|
+
- docs(test/skill): prune and fix stale comments
|
|
79
|
+
- docs(test/mcp): prune stale comments and translate a leftover Russian note
|
|
80
|
+
- docs(test/i18n): repair a corrupted word and prune stale comments
|
|
81
|
+
- docs(test/glm): prune and fix stale comments
|
|
82
|
+
- docs(test/editor): drop remaining backlog ids
|
|
83
|
+
- docs(test/editor): prune and fix stale comments
|
|
84
|
+
- docs(test/context): prune and fix stale comments
|
|
85
|
+
- docs(test/config): prune and fix stale comments
|
|
86
|
+
- docs(test/cli): prune and fix stale comments
|
|
87
|
+
- docs(test/browser): prune and fix stale comments
|
|
88
|
+
- docs(test/backlog): prune and fix stale comments
|
|
89
|
+
- docs(test/answer-parse): prune and fix stale comments
|
|
90
|
+
- docs(test/agent-loop): prune and fix stale comments
|
|
91
|
+
- docs: add a text-audit protocol for an unattended loop run
|
|
92
|
+
|
|
10
93
|
## [2.82.138] - 2026-10-25
|
|
11
94
|
|
|
12
95
|
### Changed
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<a href="https://www.npmjs.com/package/zames_pro"><img src="https://img.shields.io/npm/dm/zames_pro.svg" alt="npm downloads"></a>
|
|
14
14
|
<a href="https://github.com/Viqto0r/zames_pro/actions/workflows/test.yml"><img src="https://github.com/Viqto0r/zames_pro/actions/workflows/test.yml/badge.svg" alt="tests"></a>
|
|
15
15
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT"></a>
|
|
16
|
-
<a href="package.json"><img src="https://img.shields.io/badge/node-%3E%
|
|
16
|
+
<a href="package.json"><img src="https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg" alt="Node.js"></a>
|
|
17
17
|
<a href="https://www.typescriptlang.org/"><img src="https://img.shields.io/badge/TypeScript-strict-3178c6.svg" alt="TypeScript"></a>
|
|
18
18
|
<a href="CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg" alt="PRs welcome"></a>
|
|
19
19
|
</p>
|
|
@@ -96,8 +96,8 @@ Key pieces:
|
|
|
96
96
|
- **A persistent per-provider profile** (`~/.zames/profile` for DeepSeek,
|
|
97
97
|
`~/.zames/qwen-profile` for Qwen) keeps you signed in; the headless
|
|
98
98
|
User-Agent is patched so the site's CDN does not 403 the login.
|
|
99
|
-
- **A send throttle** (15 s on DeepSeek,
|
|
100
|
-
|
|
99
|
+
- **A send throttle** (15 s on DeepSeek, 4 s on Qwen, which tolerates a faster
|
|
100
|
+
pace; GLM uses an adaptive pause that starts at 0) keeps the web chat's rate
|
|
101
101
|
limit happy during long tool-heavy runs.
|
|
102
102
|
- **The agent is sandboxed** to the directory it was started in — no tool can
|
|
103
103
|
read or write above it.
|
|
@@ -115,7 +115,8 @@ Key pieces:
|
|
|
115
115
|
|
|
116
116
|
- **Tools like Claude Code / Codex** — `Read`, `Write`, `Edit`, `Bash`,
|
|
117
117
|
`Glob`, `Grep`, plus `MultiEdit`, `ApplyPatch`, `LS`, `TodoWrite`, git and web
|
|
118
|
-
tools. Every edit is backed by `/undo
|
|
118
|
+
tools. Every edit is backed by `/undo`, and `/rewind` restores the whole
|
|
119
|
+
working tree from a checkpoint.
|
|
119
120
|
- **Runs while you keep typing** — queue messages during a task; they run right
|
|
120
121
|
after it, in the same chat (like typing during generation on the web).
|
|
121
122
|
- **Plan mode** — `/plan` (or `--plan`) drops all mutating tools, so the agent
|
|
@@ -148,7 +149,7 @@ Key pieces:
|
|
|
148
149
|
|
|
149
150
|
## Requirements
|
|
150
151
|
|
|
151
|
-
- Node.js >=
|
|
152
|
+
- Node.js >= 22
|
|
152
153
|
- An account on the chat you want to use — **DeepSeek** (`chat.deepseek.com`,
|
|
153
154
|
the default), **Qwen** (`chat.qwen.ai`) or **GLM** (`chat.z.ai`). Qwen also
|
|
154
155
|
works in guest mode for a few messages. On first launch zames asks for your login in the terminal
|
|
@@ -194,8 +195,8 @@ Credentials and toggles can also be edited from `/config`
|
|
|
194
195
|
|
|
195
196
|
## Switching providers (DeepSeek / Qwen / GLM)
|
|
196
197
|
|
|
197
|
-
zames can drive
|
|
198
|
-
**
|
|
198
|
+
zames can drive **DeepSeek** (`chat.deepseek.com`, the default), **Qwen**
|
|
199
|
+
(`chat.qwen.ai`) or **GLM** (`chat.z.ai`):
|
|
199
200
|
|
|
200
201
|
```bash
|
|
201
202
|
/provider qwen # switch to Qwen (persisted) — applied live, no restart
|
|
@@ -209,9 +210,10 @@ zames can drive either **DeepSeek** (`chat.deepseek.com`, the default) or
|
|
|
209
210
|
Notes:
|
|
210
211
|
|
|
211
212
|
- The switch is **live**: zames closes the current backend and opens the other
|
|
212
|
-
one in place, so no restart is needed. The
|
|
213
|
+
one in place, so no restart is needed. The backends use **separate
|
|
213
214
|
persistent profiles** (`~/.zames/profile` for DeepSeek, `~/.zames/qwen-profile`
|
|
214
|
-
for Qwen), so switching never signs the other
|
|
215
|
+
for Qwen, `~/.zames/glm-profile` for GLM), so switching never signs the other
|
|
216
|
+
one out.
|
|
215
217
|
- A chat id belongs to ONE backend, so the new provider opens a **fresh chat**.
|
|
216
218
|
If the previous chat had messages they are summarized and posted as a
|
|
217
219
|
handoff with the next task; an empty chat is switched silently.
|
|
@@ -230,10 +232,10 @@ Notes:
|
|
|
230
232
|
solved programmatically). zames therefore launches GLM headed by default and
|
|
231
233
|
prints a note about it; `--headless` still forces headless (sends will hit
|
|
232
234
|
the captcha). `--headed` is accepted everywhere.
|
|
233
|
-
- **Send telemetry
|
|
235
|
+
- **Send telemetry** (off by default): when enabled, every send is recorded in
|
|
234
236
|
`~/.zames/logs/sends-<provider>.jsonl` (timing, mode flags, the outcome and
|
|
235
|
-
the server error — never the prompt or the answer). Turn it
|
|
236
|
-
`/config set browser.sendTelemetry
|
|
237
|
+
the server error — never the prompt or the answer). Turn it on with
|
|
238
|
+
`/config set browser.sendTelemetry true`. `/limits` shows the recent sends
|
|
237
239
|
and the current pause. GLM additionally uses an **adaptive pause**: it starts
|
|
238
240
|
at 0 and backs off from a REAL rate limit.
|
|
239
241
|
- **Warning**: automating a web chat may violate the service's terms of use and
|
|
@@ -295,11 +297,11 @@ The prompt is a small line editor with persistent history:
|
|
|
295
297
|
Full-screen mode adds dialog navigation, so a long answer can be read and
|
|
296
298
|
selected without leaving the terminal:
|
|
297
299
|
|
|
298
|
-
- `ui.mouseScroll=
|
|
299
|
-
|
|
300
|
-
history is arrow keys only
|
|
301
|
-
- `ui.mouseScroll=
|
|
302
|
-
|
|
300
|
+
- `ui.mouseScroll=true` (default) — the app consumes the wheel and scrolls the
|
|
301
|
+
dialog; selecting text then needs `Shift`+click (the TUI convention). The
|
|
302
|
+
wheel never scrolls the input history — history is arrow keys only.
|
|
303
|
+
- `ui.mouseScroll=false` — the terminal owns the mouse again: normal text
|
|
304
|
+
selection works and the wheel is inert.
|
|
303
305
|
- `PgUp` / `PgDn` — move up/down the dialog half a screen.
|
|
304
306
|
- `Home` / `End` — jump to the very top / bottom of the dialog (only while the
|
|
305
307
|
input line is empty; with text typed they move the caret as usual).
|
|
@@ -336,8 +338,11 @@ instead of staying silent.
|
|
|
336
338
|
zames --task <task text>
|
|
337
339
|
zames --chat <id>
|
|
338
340
|
zames --new-chat
|
|
341
|
+
zames --resume-last
|
|
339
342
|
zames --resend-prompt
|
|
340
343
|
zames --dir <path>
|
|
344
|
+
zames --provider <deepseek|qwen|glm>
|
|
345
|
+
zames --max-iter <n>
|
|
341
346
|
zames --headless
|
|
342
347
|
zames --headed
|
|
343
348
|
zames --plan
|
|
@@ -368,15 +373,19 @@ zames --task "..." --output-format jsonl \
|
|
|
368
373
|
|
|
369
374
|
The agent has the same style of tools as Claude Code / Codex CLI:
|
|
370
375
|
|
|
371
|
-
- **File tools** — `Read`, `Write`, `Edit`, `Bash`, `
|
|
372
|
-
returns raw content by default; pass `numbered=true` to get
|
|
373
|
-
line numbers (for reference only — do not paste them into
|
|
376
|
+
- **File tools** — `Read`, `Write`, `Edit`, `Bash`, `BashOutput`, `Glob`,
|
|
377
|
+
`Grep`. `Read` returns raw content by default; pass `numbered=true` to get
|
|
378
|
+
`cat -n`-style line numbers (for reference only — do not paste them into
|
|
379
|
+
`Edit`). `Bash` takes `run_in_background`; `BashOutput` then polls or kills
|
|
380
|
+
that process.
|
|
374
381
|
- **Extra tools** — `LS` (list a directory), `MultiEdit` (several edits to one
|
|
375
382
|
file applied atomically), `TodoWrite` (session task checklist), `ApplyPatch`
|
|
376
383
|
(multi-file patch in Codex's V4A format: `*** Begin Patch` … `*** End Patch`).
|
|
377
384
|
- **Git** — `GitStatus`, `GitDiff`, `GitLog`, `GitShow`, `GitBranchList`,
|
|
378
385
|
`GitAdd`, `GitCommit`, `GitPush`.
|
|
379
386
|
- **Web** — `WebFetch`, `WebSearch`.
|
|
387
|
+
- **Operator** — `AskUser` (a modal question with options; skipped in plan
|
|
388
|
+
mode so a plan is never interrupted).
|
|
380
389
|
- **Service** — `respond` (final answer to the operator, ends the task).
|
|
381
390
|
|
|
382
391
|
All file tools stay inside the working directory (sandbox). `Write`/`Edit` and
|
|
@@ -384,11 +393,12 @@ All file tools stay inside the working directory (sandbox). `Write`/`Edit` and
|
|
|
384
393
|
|
|
385
394
|
## Slash commands
|
|
386
395
|
|
|
387
|
-
Type / in the prompt for hints (Tab completes)
|
|
388
|
-
|
|
389
|
-
/
|
|
390
|
-
/
|
|
391
|
-
|
|
396
|
+
Type / in the prompt for hints (Tab completes) — that list is always complete,
|
|
397
|
+
`/help <command>` describes any single one. Besides the session and config
|
|
398
|
+
commands (/new or /clear, /sessions, /chats, /resume-id, /last, /chat, /cd,
|
|
399
|
+
/pwd, /status, /config, /undo, /undo-list, /rewind, /rewind-list, /transcript,
|
|
400
|
+
/tasks, /mcp, /skills, /memory, /remember, /init, /reload, /debug-dom, /help,
|
|
401
|
+
/exit) there are a few that mirror Claude Code / Codex CLI:
|
|
392
402
|
|
|
393
403
|
- /diff [--staged] — show the working-tree git diff (--staged for the index).
|
|
394
404
|
- /diffstat — a one-line change summary (`git diff --stat`).
|
|
@@ -450,11 +460,12 @@ tests`). /cron "<min> <hour> <dom> <month> <dow>" <task> — run on a schedule.
|
|
|
450
460
|
current task.
|
|
451
461
|
|
|
452
462
|
The token context is also shown live: the status line above the input has the
|
|
453
|
-
spinner/text on the left and the context on the right (e.g. `125k · 13
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
463
|
+
spinner/text on the left and the context on the right (e.g. `125k · 13%`). The
|
|
464
|
+
percentage is of the ACTIVE provider's window — 1M for DeepSeek, a per-model
|
|
465
|
+
value for Qwen and GLM (`qwen.contextLimit` / `glm.contextLimit`) — and it is
|
|
466
|
+
COLORED by fill level: green below 50%, yellow 50-80%, red above 80%.
|
|
467
|
+
It comes from the provider's own token counter (DeepSeek's
|
|
468
|
+
`accumulated_token_usage`, Qwen's `input_tokens`, GLM's `prompt_tokens`) and is
|
|
458
469
|
hidden until the first answer delivers it.
|
|
459
470
|
|
|
460
471
|
## Project context, skills and memory
|
|
@@ -587,8 +598,9 @@ Examples:
|
|
|
587
598
|
/config lang en
|
|
588
599
|
```
|
|
589
600
|
|
|
590
|
-
Changes are written to the
|
|
591
|
-
|
|
601
|
+
Changes are written to the HOME config (`~/.zames/config.json`), NOT to the
|
|
602
|
+
project `.zamesrc.json` — a personal toggle must not leak into git — and applied
|
|
603
|
+
right away (where possible without a restart).
|
|
592
604
|
|
|
593
605
|
### Language
|
|
594
606
|
|
|
@@ -645,7 +657,7 @@ signed-in browser profile.
|
|
|
645
657
|
**How do I install a terminal AI coding agent?**
|
|
646
658
|
|
|
647
659
|
```bash
|
|
648
|
-
npm install -g zames_pro # Node.js >=
|
|
660
|
+
npm install -g zames_pro # Node.js >= 22; Chromium is fetched automatically
|
|
649
661
|
cd your-project
|
|
650
662
|
zames
|
|
651
663
|
```
|
|
@@ -777,9 +789,9 @@ zames не вызывает API модели. Он запускает headless C
|
|
|
777
789
|
`~/.zames/qwen-profile` у Qwen, `~/.zames/glm-profile` у GLM) держит вас
|
|
778
790
|
залогиненным; User-Agent
|
|
779
791
|
headless-браузера подменяется, чтобы CDN сайта не отдавал 403 на вход.
|
|
780
|
-
- **Троттлинг отправки** (15 с у DeepSeek,
|
|
781
|
-
переносит
|
|
782
|
-
веб-чата во время долгих прогонов с инструментами.
|
|
792
|
+
- **Троттлинг отправки** (15 с у DeepSeek, 4 с у Qwen, который спокойно
|
|
793
|
+
переносит более частый темп; у GLM — адаптивная пауза с нуля) щадит
|
|
794
|
+
рейт-лимит веб-чата во время долгих прогонов с инструментами.
|
|
783
795
|
- **Агент запесочен** в директорию запуска — ни один инструмент не может
|
|
784
796
|
читать или писать выше неё.
|
|
785
797
|
|
|
@@ -796,7 +808,8 @@ zames не вызывает API модели. Он запускает headless C
|
|
|
796
808
|
|
|
797
809
|
- **Инструменты как в Claude Code / Codex** — `Read`, `Write`, `Edit`, `Bash`,
|
|
798
810
|
`Glob`, `Grep`, плюс `MultiEdit`, `ApplyPatch`, `LS`, `TodoWrite`, git- и
|
|
799
|
-
веб-инструменты. Каждая правка подкреплена `/undo
|
|
811
|
+
веб-инструменты. Каждая правка подкреплена `/undo`, а `/rewind` возвращает
|
|
812
|
+
всё рабочее дерево к чекпойнту.
|
|
800
813
|
- **Работает, пока вы печатаете** — сообщения, набранные во время задачи,
|
|
801
814
|
встают в очередь и уходят сразу после неё, в тот же чат (как набор текста
|
|
802
815
|
во время генерации на сайте).
|
|
@@ -832,7 +845,7 @@ zames не вызывает API модели. Он запускает headless C
|
|
|
832
845
|
|
|
833
846
|
## Требования
|
|
834
847
|
|
|
835
|
-
- Node.js >=
|
|
848
|
+
- Node.js >= 22
|
|
836
849
|
- Аккаунт в нужном чате — **DeepSeek** (`chat.deepseek.com`, по умолчанию),
|
|
837
850
|
**Qwen** (`chat.qwen.ai`) или **GLM** (`chat.z.ai`). Qwen также работает в
|
|
838
851
|
гостевом режиме на несколько сообщений. При первом запуске zames спросит логин в терминале (и сохранит его
|
|
@@ -911,10 +924,10 @@ zames умеет работать с **DeepSeek** (`chat.deepseek.com`, по у
|
|
|
911
924
|
программно её не пройти). Поэтому zames запускает GLM с окном по умолчанию и
|
|
912
925
|
пишет об этом при старте; `--headless` по-прежнему форсирует headless
|
|
913
926
|
(отправки будут упираться в капчу). `--headed` работает везде.
|
|
914
|
-
- **Телеметрия
|
|
915
|
-
`~/.zames/logs/sends-<provider>.jsonl` (тайминги, флаги
|
|
916
|
-
ошибка сервера — без промптов и ответов).
|
|
917
|
-
`/config set browser.sendTelemetry
|
|
927
|
+
- **Телеметрия отправок** (по умолчанию выключена): когда включена, каждая
|
|
928
|
+
отправка пишется в `~/.zames/logs/sends-<provider>.jsonl` (тайминги, флаги
|
|
929
|
+
режимов, исход и ошибка сервера — без промптов и ответов). Включается через
|
|
930
|
+
`/config set browser.sendTelemetry true`. Команда `/limits` показывает
|
|
918
931
|
последние отправки и текущую паузу. У GLM вдобавок **адаптивная пауза**: она
|
|
919
932
|
начинается с 0 и растёт только после НАСТОЯЩЕГО лимита.
|
|
920
933
|
- **Предупреждение**: автоматизация веб-чата может нарушать условия
|
|
@@ -978,11 +991,11 @@ zames
|
|
|
978
991
|
В полноэкранном режиме добавляется навигация по диалогу, чтобы длинный ответ
|
|
979
992
|
можно было прочитать и выделить не покидая терминал:
|
|
980
993
|
|
|
981
|
-
- `ui.mouseScroll=
|
|
982
|
-
выделение текста
|
|
983
|
-
ввода — история только
|
|
984
|
-
- `ui.mouseScroll=
|
|
985
|
-
|
|
994
|
+
- `ui.mouseScroll=true` (по умолчанию) — приложение перехватывает колесо и
|
|
995
|
+
скроллит диалог; выделение текста тогда — `Shift`+клик (стандарт TUI). Колесо
|
|
996
|
+
никогда не листает историю ввода — история только стрелками.
|
|
997
|
+
- `ui.mouseScroll=false` — мышью снова владеет терминал: обычное выделение
|
|
998
|
+
текста работает, колесо инертно.
|
|
986
999
|
- `PgUp` / `PgDn` — вверх/вниз по диалогу на пол-экрана.
|
|
987
1000
|
- `Home` / `End` — прыжок в самый верх / низ диалога (только когда строка ввода
|
|
988
1001
|
пуста; при набранном тексте они двигают курсор, как обычно).
|
|
@@ -1020,8 +1033,11 @@ base64-блок с узнаваемой сигнатурой изображен
|
|
|
1020
1033
|
zames --task <текст задачи>
|
|
1021
1034
|
zames --chat <id>
|
|
1022
1035
|
zames --new-chat
|
|
1036
|
+
zames --resume-last
|
|
1023
1037
|
zames --resend-prompt
|
|
1024
1038
|
zames --dir <path>
|
|
1039
|
+
zames --provider <deepseek|qwen|glm>
|
|
1040
|
+
zames --max-iter <n>
|
|
1025
1041
|
zames --headless
|
|
1026
1042
|
zames --headed
|
|
1027
1043
|
zames --plan
|
|
@@ -1052,16 +1068,19 @@ zames --task "..." --output-format jsonl \
|
|
|
1052
1068
|
|
|
1053
1069
|
У агента тот же стиль инструментов, что в Claude Code / Codex CLI:
|
|
1054
1070
|
|
|
1055
|
-
- **Файловые** — `Read`, `Write`, `Edit`, `Bash`, `
|
|
1056
|
-
умолчанию отдаёт сырое содержимое; передайте
|
|
1057
|
-
нумерацию строк в стиле `cat -n` (только для
|
|
1058
|
-
`Edit`).
|
|
1071
|
+
- **Файловые** — `Read`, `Write`, `Edit`, `Bash`, `BashOutput`, `Glob`,
|
|
1072
|
+
`Grep`. `Read` по умолчанию отдаёт сырое содержимое; передайте
|
|
1073
|
+
`numbered=true`, чтобы получить нумерацию строк в стиле `cat -n` (только для
|
|
1074
|
+
справки — не вставляйте её в `Edit`). `Bash` принимает `run_in_background`,
|
|
1075
|
+
а `BashOutput` затем опрашивает или убивает этот процесс.
|
|
1059
1076
|
- **Дополнительные** — `LS` (список директории), `MultiEdit` (несколько правок
|
|
1060
1077
|
одного файла атомарно), `TodoWrite` (чек-лист задач сессии), `ApplyPatch`
|
|
1061
1078
|
(мультифайловый патч в формате V4A от Codex: `*** Begin Patch` … `*** End Patch`).
|
|
1062
1079
|
- **Git** — `GitStatus`, `GitDiff`, `GitLog`, `GitShow`, `GitBranchList`,
|
|
1063
1080
|
`GitAdd`, `GitCommit`, `GitPush`.
|
|
1064
1081
|
- **Web** — `WebFetch`, `WebSearch`.
|
|
1082
|
+
- **Оператор** — `AskUser` (модальный вопрос с вариантами; в режиме плана не
|
|
1083
|
+
предлагается, чтобы не прерывать план).
|
|
1065
1084
|
- **Служебный** — `respond` (финальный ответ оператору, завершает задачу).
|
|
1066
1085
|
|
|
1067
1086
|
Все файловые инструменты остаются внутри рабочей директории (песочница).
|
|
@@ -1070,10 +1089,12 @@ zames --task "..." --output-format jsonl \
|
|
|
1070
1089
|
|
|
1071
1090
|
## Слэш-команды
|
|
1072
1091
|
|
|
1073
|
-
Введите / в промпте для подсказок (Tab дополняет)
|
|
1074
|
-
|
|
1075
|
-
/
|
|
1076
|
-
|
|
1092
|
+
Введите / в промпте для подсказок (Tab дополняет) — этот список всегда полный,
|
|
1093
|
+
а `/help <команда>` описывает любую одну из них. Кроме команд сессии и конфига
|
|
1094
|
+
(/new или /clear, /sessions, /chats, /resume-id, /last, /chat, /cd, /pwd,
|
|
1095
|
+
/status, /config, /undo, /undo-list, /rewind, /rewind-list, /transcript,
|
|
1096
|
+
/tasks, /mcp, /skills, /memory, /remember, /init, /reload, /debug-dom, /help,
|
|
1097
|
+
/exit) есть несколько в духе Claude Code / Codex CLI:
|
|
1077
1098
|
|
|
1078
1099
|
- /diff [--staged] — показать git-диф рабочего дерева (--staged для индекса).
|
|
1079
1100
|
- /diffstat — сводка изменений одной строкой (`git diff --stat`).
|
|
@@ -1136,11 +1157,12 @@ zames --task "..." --output-format jsonl \
|
|
|
1136
1157
|
текущей задачи.
|
|
1137
1158
|
|
|
1138
1159
|
Контекст в токенах показывается и вживую: в строке статуса над вводом слева
|
|
1139
|
-
спиннер/текст, справа — контекст (например, `125k · 13
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1160
|
+
спиннер/текст, справа — контекст (например, `125k · 13%`). Процент считается от
|
|
1161
|
+
окна АКТИВНОГО провайдера — 1M у DeepSeek, у Qwen и GLM — своё значение на
|
|
1162
|
+
модель (`qwen.contextLimit` / `glm.contextLimit`). Он ОКРАШЕН по уровню
|
|
1163
|
+
заполнения: зелёный ниже 50%, жёлтый 50-80%, красный выше 80%. Значение
|
|
1164
|
+
приходит из счётчика токенов провайдера (у DeepSeek — `accumulated_token_usage`,
|
|
1165
|
+
у Qwen — `input_tokens`, у GLM — `prompt_tokens`) и скрыто до первого ответа.
|
|
1144
1166
|
|
|
1145
1167
|
## Контекст проекта, навыки и память
|
|
1146
1168
|
|
|
@@ -1272,8 +1294,9 @@ enum переключаются на месте; числа и строки от
|
|
|
1272
1294
|
/config lang en
|
|
1273
1295
|
```
|
|
1274
1296
|
|
|
1275
|
-
Изменения пишутся в
|
|
1276
|
-
|
|
1297
|
+
Изменения пишутся в домашний конфиг (`~/.zames/config.json`), а НЕ в проектный
|
|
1298
|
+
`.zamesrc.json` — личный переключатель не должен попадать в git, — и применяются
|
|
1299
|
+
сразу (где это возможно без перезапуска).
|
|
1277
1300
|
|
|
1278
1301
|
### Язык
|
|
1279
1302
|
|
|
@@ -1332,7 +1355,7 @@ reasoning-модель при включённом «Deep thinking»). В Qwen
|
|
|
1332
1355
|
**Как установить терминальный AI coding-агент?**
|
|
1333
1356
|
|
|
1334
1357
|
```bash
|
|
1335
|
-
npm install -g zames_pro # Node.js >=
|
|
1358
|
+
npm install -g zames_pro # Node.js >= 22; Chromium скачается автоматически
|
|
1336
1359
|
cd your-project
|
|
1337
1360
|
zames
|
|
1338
1361
|
```
|
package/llms-full.txt
CHANGED
|
@@ -80,8 +80,8 @@ Key pieces:
|
|
|
80
80
|
- **A persistent per-provider profile** (`~/.zames/profile` for DeepSeek,
|
|
81
81
|
`~/.zames/qwen-profile` for Qwen) keeps you signed in; the headless
|
|
82
82
|
User-Agent is patched so the site's CDN does not 403 the login.
|
|
83
|
-
- **A send throttle** (15 s on DeepSeek,
|
|
84
|
-
|
|
83
|
+
- **A send throttle** (15 s on DeepSeek, 4 s on Qwen, which tolerates a faster
|
|
84
|
+
pace; GLM uses an adaptive pause that starts at 0) keeps the web chat's rate
|
|
85
85
|
limit happy during long tool-heavy runs.
|
|
86
86
|
- **The agent is sandboxed** to the directory it was started in — no tool can
|
|
87
87
|
read or write above it.
|
|
@@ -99,7 +99,8 @@ Key pieces:
|
|
|
99
99
|
|
|
100
100
|
- **Tools like Claude Code / Codex** — `Read`, `Write`, `Edit`, `Bash`,
|
|
101
101
|
`Glob`, `Grep`, plus `MultiEdit`, `ApplyPatch`, `LS`, `TodoWrite`, git and web
|
|
102
|
-
tools. Every edit is backed by `/undo
|
|
102
|
+
tools. Every edit is backed by `/undo`, and `/rewind` restores the whole
|
|
103
|
+
working tree from a checkpoint.
|
|
103
104
|
- **Runs while you keep typing** — queue messages during a task; they run right
|
|
104
105
|
after it, in the same chat (like typing during generation on the web).
|
|
105
106
|
- **Plan mode** — `/plan` (or `--plan`) drops all mutating tools, so the agent
|
|
@@ -132,7 +133,7 @@ Key pieces:
|
|
|
132
133
|
|
|
133
134
|
## Requirements
|
|
134
135
|
|
|
135
|
-
- Node.js >=
|
|
136
|
+
- Node.js >= 22
|
|
136
137
|
- An account on the chat you want to use — **DeepSeek** (`chat.deepseek.com`,
|
|
137
138
|
the default), **Qwen** (`chat.qwen.ai`) or **GLM** (`chat.z.ai`). Qwen also
|
|
138
139
|
works in guest mode for a few messages. On first launch zames asks for your login in the terminal
|
|
@@ -178,8 +179,8 @@ Credentials and toggles can also be edited from `/config`
|
|
|
178
179
|
|
|
179
180
|
## Switching providers (DeepSeek / Qwen / GLM)
|
|
180
181
|
|
|
181
|
-
zames can drive
|
|
182
|
-
**
|
|
182
|
+
zames can drive **DeepSeek** (`chat.deepseek.com`, the default), **Qwen**
|
|
183
|
+
(`chat.qwen.ai`) or **GLM** (`chat.z.ai`):
|
|
183
184
|
|
|
184
185
|
```bash
|
|
185
186
|
/provider qwen # switch to Qwen (persisted) — applied live, no restart
|
|
@@ -193,9 +194,10 @@ zames can drive either **DeepSeek** (`chat.deepseek.com`, the default) or
|
|
|
193
194
|
Notes:
|
|
194
195
|
|
|
195
196
|
- The switch is **live**: zames closes the current backend and opens the other
|
|
196
|
-
one in place, so no restart is needed. The
|
|
197
|
+
one in place, so no restart is needed. The backends use **separate
|
|
197
198
|
persistent profiles** (`~/.zames/profile` for DeepSeek, `~/.zames/qwen-profile`
|
|
198
|
-
for Qwen), so switching never signs the other
|
|
199
|
+
for Qwen, `~/.zames/glm-profile` for GLM), so switching never signs the other
|
|
200
|
+
one out.
|
|
199
201
|
- A chat id belongs to ONE backend, so the new provider opens a **fresh chat**.
|
|
200
202
|
If the previous chat had messages they are summarized and posted as a
|
|
201
203
|
handoff with the next task; an empty chat is switched silently.
|
|
@@ -214,10 +216,10 @@ Notes:
|
|
|
214
216
|
solved programmatically). zames therefore launches GLM headed by default and
|
|
215
217
|
prints a note about it; `--headless` still forces headless (sends will hit
|
|
216
218
|
the captcha). `--headed` is accepted everywhere.
|
|
217
|
-
- **Send telemetry
|
|
219
|
+
- **Send telemetry** (off by default): when enabled, every send is recorded in
|
|
218
220
|
`~/.zames/logs/sends-<provider>.jsonl` (timing, mode flags, the outcome and
|
|
219
|
-
the server error — never the prompt or the answer). Turn it
|
|
220
|
-
`/config set browser.sendTelemetry
|
|
221
|
+
the server error — never the prompt or the answer). Turn it on with
|
|
222
|
+
`/config set browser.sendTelemetry true`. `/limits` shows the recent sends
|
|
221
223
|
and the current pause. GLM additionally uses an **adaptive pause**: it starts
|
|
222
224
|
at 0 and backs off from a REAL rate limit.
|
|
223
225
|
- **Warning**: automating a web chat may violate the service's terms of use and
|
|
@@ -279,11 +281,11 @@ The prompt is a small line editor with persistent history:
|
|
|
279
281
|
Full-screen mode adds dialog navigation, so a long answer can be read and
|
|
280
282
|
selected without leaving the terminal:
|
|
281
283
|
|
|
282
|
-
- `ui.mouseScroll=
|
|
283
|
-
|
|
284
|
-
history is arrow keys only
|
|
285
|
-
- `ui.mouseScroll=
|
|
286
|
-
|
|
284
|
+
- `ui.mouseScroll=true` (default) — the app consumes the wheel and scrolls the
|
|
285
|
+
dialog; selecting text then needs `Shift`+click (the TUI convention). The
|
|
286
|
+
wheel never scrolls the input history — history is arrow keys only.
|
|
287
|
+
- `ui.mouseScroll=false` — the terminal owns the mouse again: normal text
|
|
288
|
+
selection works and the wheel is inert.
|
|
287
289
|
- `PgUp` / `PgDn` — move up/down the dialog half a screen.
|
|
288
290
|
- `Home` / `End` — jump to the very top / bottom of the dialog (only while the
|
|
289
291
|
input line is empty; with text typed they move the caret as usual).
|
|
@@ -320,8 +322,11 @@ instead of staying silent.
|
|
|
320
322
|
zames --task <task text>
|
|
321
323
|
zames --chat <id>
|
|
322
324
|
zames --new-chat
|
|
325
|
+
zames --resume-last
|
|
323
326
|
zames --resend-prompt
|
|
324
327
|
zames --dir <path>
|
|
328
|
+
zames --provider <deepseek|qwen|glm>
|
|
329
|
+
zames --max-iter <n>
|
|
325
330
|
zames --headless
|
|
326
331
|
zames --headed
|
|
327
332
|
zames --plan
|
|
@@ -352,15 +357,19 @@ zames --task "..." --output-format jsonl \
|
|
|
352
357
|
|
|
353
358
|
The agent has the same style of tools as Claude Code / Codex CLI:
|
|
354
359
|
|
|
355
|
-
- **File tools** — `Read`, `Write`, `Edit`, `Bash`, `
|
|
356
|
-
returns raw content by default; pass `numbered=true` to get
|
|
357
|
-
line numbers (for reference only — do not paste them into
|
|
360
|
+
- **File tools** — `Read`, `Write`, `Edit`, `Bash`, `BashOutput`, `Glob`,
|
|
361
|
+
`Grep`. `Read` returns raw content by default; pass `numbered=true` to get
|
|
362
|
+
`cat -n`-style line numbers (for reference only — do not paste them into
|
|
363
|
+
`Edit`). `Bash` takes `run_in_background`; `BashOutput` then polls or kills
|
|
364
|
+
that process.
|
|
358
365
|
- **Extra tools** — `LS` (list a directory), `MultiEdit` (several edits to one
|
|
359
366
|
file applied atomically), `TodoWrite` (session task checklist), `ApplyPatch`
|
|
360
367
|
(multi-file patch in Codex's V4A format: `*** Begin Patch` … `*** End Patch`).
|
|
361
368
|
- **Git** — `GitStatus`, `GitDiff`, `GitLog`, `GitShow`, `GitBranchList`,
|
|
362
369
|
`GitAdd`, `GitCommit`, `GitPush`.
|
|
363
370
|
- **Web** — `WebFetch`, `WebSearch`.
|
|
371
|
+
- **Operator** — `AskUser` (a modal question with options; skipped in plan
|
|
372
|
+
mode so a plan is never interrupted).
|
|
364
373
|
- **Service** — `respond` (final answer to the operator, ends the task).
|
|
365
374
|
|
|
366
375
|
All file tools stay inside the working directory (sandbox). `Write`/`Edit` and
|
|
@@ -368,11 +377,12 @@ All file tools stay inside the working directory (sandbox). `Write`/`Edit` and
|
|
|
368
377
|
|
|
369
378
|
## Slash commands
|
|
370
379
|
|
|
371
|
-
Type / in the prompt for hints (Tab completes)
|
|
372
|
-
|
|
373
|
-
/
|
|
374
|
-
/
|
|
375
|
-
|
|
380
|
+
Type / in the prompt for hints (Tab completes) — that list is always complete,
|
|
381
|
+
`/help <command>` describes any single one. Besides the session and config
|
|
382
|
+
commands (/new or /clear, /sessions, /chats, /resume-id, /last, /chat, /cd,
|
|
383
|
+
/pwd, /status, /config, /undo, /undo-list, /rewind, /rewind-list, /transcript,
|
|
384
|
+
/tasks, /mcp, /skills, /memory, /remember, /init, /reload, /debug-dom, /help,
|
|
385
|
+
/exit) there are a few that mirror Claude Code / Codex CLI:
|
|
376
386
|
|
|
377
387
|
- /diff [--staged] — show the working-tree git diff (--staged for the index).
|
|
378
388
|
- /diffstat — a one-line change summary (`git diff --stat`).
|
|
@@ -434,11 +444,12 @@ tests`). /cron "<min> <hour> <dom> <month> <dow>" <task> — run on a schedule.
|
|
|
434
444
|
current task.
|
|
435
445
|
|
|
436
446
|
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
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
447
|
+
spinner/text on the left and the context on the right (e.g. `125k · 13%`). The
|
|
448
|
+
percentage is of the ACTIVE provider's window — 1M for DeepSeek, a per-model
|
|
449
|
+
value for Qwen and GLM (`qwen.contextLimit` / `glm.contextLimit`) — and it is
|
|
450
|
+
COLORED by fill level: green below 50%, yellow 50-80%, red above 80%.
|
|
451
|
+
It comes from the provider's own token counter (DeepSeek's
|
|
452
|
+
`accumulated_token_usage`, Qwen's `input_tokens`, GLM's `prompt_tokens`) and is
|
|
442
453
|
hidden until the first answer delivers it.
|
|
443
454
|
|
|
444
455
|
## Project context, skills and memory
|
|
@@ -571,8 +582,9 @@ Examples:
|
|
|
571
582
|
/config lang en
|
|
572
583
|
```
|
|
573
584
|
|
|
574
|
-
Changes are written to the
|
|
575
|
-
|
|
585
|
+
Changes are written to the HOME config (`~/.zames/config.json`), NOT to the
|
|
586
|
+
project `.zamesrc.json` — a personal toggle must not leak into git — and applied
|
|
587
|
+
right away (where possible without a restart).
|
|
576
588
|
|
|
577
589
|
### Language
|
|
578
590
|
|
|
@@ -629,7 +641,7 @@ signed-in browser profile.
|
|
|
629
641
|
**How do I install a terminal AI coding agent?**
|
|
630
642
|
|
|
631
643
|
```bash
|
|
632
|
-
npm install -g zames_pro # Node.js >=
|
|
644
|
+
npm install -g zames_pro # Node.js >= 22; Chromium is fetched automatically
|
|
633
645
|
cd your-project
|
|
634
646
|
zames
|
|
635
647
|
```
|
package/llms.txt
CHANGED
|
@@ -20,7 +20,7 @@ LLM-friendly map of the project. Everything below is plain Markdown.
|
|
|
20
20
|
- **Supported backends:** DeepSeek (`chat.deepseek.com`, default), Qwen
|
|
21
21
|
(`chat.qwen.ai`), GLM (`chat.z.ai`). Live switch with
|
|
22
22
|
`/provider <deepseek|qwen|glm>`; each backend keeps its own browser profile.
|
|
23
|
-
- **Language / stack:** TypeScript (strict), Node.js >=
|
|
23
|
+
- **Language / stack:** TypeScript (strict), Node.js >= 22, Playwright,
|
|
24
24
|
Ink/React TUI, MCP client.
|
|
25
25
|
- **License:** MIT. **Not affiliated** with DeepSeek, Alibaba or Zhipu AI.
|
|
26
26
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zames_pro",
|
|
3
|
-
"version": "2.82.
|
|
3
|
+
"version": "2.82.139",
|
|
4
4
|
"description": "Terminal coding agent that drives a real browser to chat with DeepSeek, Qwen and other web LLMs — no API key required. Reads and edits files, runs commands, commits to git, like Claude Code / Codex CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/scripts/postinstall.mjs
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// Post-install step: fetch the Chromium build Playwright drives and, on a
|
|
2
|
+
// Linux box that needs it, its system libraries. It runs BEFORE tsx is
|
|
3
|
+
// guaranteed to be installed, so it stays a plain .mjs script. Every failure
|
|
4
|
+
// is a WARNING, never a non-zero exit: a missing browser must not break
|
|
5
|
+
// `npm install`, and the warning names the manual command to run instead.
|
|
1
6
|
import { spawnSync } from 'node:child_process'
|
|
2
7
|
|
|
3
8
|
const NL = String.fromCharCode(10)
|