change readme
- commit
- 6aea65ea028ea2d953226700ff2d7d591d95f968
- author
- patriceckhart · · 2026-04-18 08:35 UTC
- parent
- 6324668
- signature
- unsigned
1 file · +13 -4
M README.md +13 -4
| @@ -143,6 +143,8 @@ shows previous sessions for the current working directory, newest first, with ti | |||
| 143 | 143 | ||
| 144 | 144 | sends the current transcript through the model with a structured summarization prompt. the returned summary replaces the transcript as one synthetic user message, with the last few exchanges kept verbatim for continuity. status bar's `ctx N/M (P%)` meter resets. use it when the context meter creeps past ~80%. | |
| 145 | 145 | ||
| 146 | + | zot also auto-compacts in the background: after any turn that leaves context usage ≥ **85%** of the model's window, the agent kicks off a condense pass on its own. you'll see `condensing history… (esc to cancel)` above the status bar and an `(auto)` tag next to the context percentage; esc aborts it without touching the transcript. | |
| 147 | + | ||
| 146 | 148 | ### `/lock` | |
| 147 | 149 | ||
| 148 | 150 | enforces a sandbox rooted at the cwd shown in the status bar. `read` / `write` / `edit` resolve their target path (including through symlinks) and refuse anything outside the sandbox. `bash` refuses obvious escape patterns: `sudo`, `rm -rf /`, leading `cd /` / `cd ..` / `cd ~`, `chmod -R`, `dd of=/`, etc. status bar shows `· locked · ~/your/cwd` while active. | |
| @@ -176,19 +178,26 @@ when a tool returns an image (e.g. `read` on a png), zot renders it inline on te | |||
| 176 | 178 | ||
| 177 | 179 | frames containing images are full-repainted (no differential diff) to prevent stale image pixels from lingering through scroll. that costs one terminal flash per image-containing frame; set `ZOT_INLINE_IMAGES=off` if that bothers you. | |
| 178 | 180 | ||
| 181 | + | ## queued messages | |
| 182 | + | ||
| 183 | + | you can keep typing while the agent is working. pressing enter during a turn queues the message instead of interrupting: it shows up above the status bar as `▸ sliding in: <text>` and is delivered as the next user turn the moment the current one finishes. queue as many as you want; they run in order. esc / ctrl+c cancels the active turn and drops the queue so a runaway turn doesn't flood you with stale follow-ups. | |
| 184 | + | ||
| 185 | + | slash commands still require an idle state — typing `/something` during a turn prints `cancel the current turn (esc) before running a slash command`. | |
| 186 | + | ||
| 179 | 187 | ## keys (interactive mode) | |
| 180 | 188 | ||
| 181 | 189 | ### input | |
| 182 | 190 | ||
| 183 | 191 | | key | action | | |
| 184 | 192 | |---|---| | |
| 185 | - | | `enter` | submit | | |
| 193 | + | | `enter` | submit (queued if the agent is busy) | | |
| 186 | 194 | | `alt+enter` | newline | | |
| 187 | 195 | | `tab` | complete the selected slash command | | |
| 188 | 196 | | `esc` | cancel the current turn (while busy); clear input (while idle) | | |
| 189 | 197 | | `ctrl+c` | exit when idle; cancel the current turn while busy | | |
| 190 | 198 | | `ctrl+d` | exit on empty input | | |
| 191 | 199 | | `ctrl+l` | redraw the screen | | |
| 200 | + | | `ctrl+o` | expand / collapse long tool results | | |
| 192 | 201 | ||
| 193 | 202 | ### editor line navigation | |
| 194 | 203 | ||
| @@ -229,13 +238,13 @@ the background flavor writes the child's pid to `$ZOT_HOME/bot.pid` and redirect | |||
| 229 | 238 | setup flow: | |
| 230 | 239 | ||
| 231 | 240 | 1. talk to [@BotFather](https://t.me/BotFather) on telegram, run `/newbot`, copy the token it gives you. | |
| 232 | - | 2. run `zot bot setup` and paste the token when prompted. | |
| 233 | - | 3. run `zot bot run` in the directory you want the agent to operate in. | |
| 241 | + | 2. run `zot telegram-bot setup` and paste the token when prompted. | |
| 242 | + | 3. run `zot telegram-bot run` in the directory you want the agent to operate in. | |
| 234 | 243 | 4. open your bot on telegram, send `/start`. the first user to do this claims the bridge (stored as `allowed_user_id`); every other user is rejected. | |
| 235 | 244 | ||
| 236 | 245 | from then on, any dm you send is forwarded to the agent as a user prompt. attached photos or image/* documents are downloaded and passed to vision-capable models. in-bot telegram commands: `/help`, `/status`, `/stop` (cancel the current turn). config lives in `$ZOT_HOME/bot.json` (mode 0600). | |
| 237 | 246 | ||
| 238 | - | bot mode respects the usual zot flags — `--provider`, `--model`, `--cwd`, `--reasoning`, `--continue`, `--no-session`, `--no-tools`, etc. run `zot bot run -c --model claude-opus-4-1` to resume the latest session on opus, for example. | |
| 247 | + | bot mode respects the usual zot flags — `--provider`, `--model`, `--cwd`, `--reasoning`, `--continue`, `--no-session`, `--no-tools`, etc. run `zot tg run -c --model claude-opus-4-1` to resume the latest session on opus, for example. | |
| 239 | 248 | ||
| 240 | 249 | ## development | |
| 241 | 250 | ||
| @@ -143,6 +143,8 @@ shows previous sessions for the current working directory, newest first, with ti | |||||
| 143 | 143 | ||||
| 144 | sends the current transcript through the model with a structured summarization prompt. the returned summary replaces the transcript as one synthetic user message, with the last few exchanges kept verbatim for continuity. status bar's `ctx N/M (P%)` meter resets. use it when the context meter creeps past ~80%. | 144 | sends the current transcript through the model with a structured summarization prompt. the returned summary replaces the transcript as one synthetic user message, with the last few exchanges kept verbatim for continuity. status bar's `ctx N/M (P%)` meter resets. use it when the context meter creeps past ~80%. | ||
| 145 | 145 | ||||
| 146 | + | zot also auto-compacts in the background: after any turn that leaves context usage ≥ **85%** of the model's window, the agent kicks off a condense pass on its own. you'll see `condensing history… (esc to cancel)` above the status bar and an `(auto)` tag next to the context percentage; esc aborts it without touching the transcript. | |||
| 147 | + | ||||
| 146 | ### `/lock` | 148 | ### `/lock` | ||
| 147 | 149 | ||||
| 148 | enforces a sandbox rooted at the cwd shown in the status bar. `read` / `write` / `edit` resolve their target path (including through symlinks) and refuse anything outside the sandbox. `bash` refuses obvious escape patterns: `sudo`, `rm -rf /`, leading `cd /` / `cd ..` / `cd ~`, `chmod -R`, `dd of=/`, etc. status bar shows `· locked · ~/your/cwd` while active. | 150 | enforces a sandbox rooted at the cwd shown in the status bar. `read` / `write` / `edit` resolve their target path (including through symlinks) and refuse anything outside the sandbox. `bash` refuses obvious escape patterns: `sudo`, `rm -rf /`, leading `cd /` / `cd ..` / `cd ~`, `chmod -R`, `dd of=/`, etc. status bar shows `· locked · ~/your/cwd` while active. | ||
| @@ -176,19 +178,26 @@ when a tool returns an image (e.g. `read` on a png), zot renders it inline on te | |||||
| 176 | 178 | ||||
| 177 | frames containing images are full-repainted (no differential diff) to prevent stale image pixels from lingering through scroll. that costs one terminal flash per image-containing frame; set `ZOT_INLINE_IMAGES=off` if that bothers you. | 179 | frames containing images are full-repainted (no differential diff) to prevent stale image pixels from lingering through scroll. that costs one terminal flash per image-containing frame; set `ZOT_INLINE_IMAGES=off` if that bothers you. | ||
| 178 | 180 | ||||
| 181 | + | ## queued messages | |||
| 182 | + | ||||
| 183 | + | you can keep typing while the agent is working. pressing enter during a turn queues the message instead of interrupting: it shows up above the status bar as `▸ sliding in: <text>` and is delivered as the next user turn the moment the current one finishes. queue as many as you want; they run in order. esc / ctrl+c cancels the active turn and drops the queue so a runaway turn doesn't flood you with stale follow-ups. | |||
| 184 | + | ||||
| 185 | + | slash commands still require an idle state — typing `/something` during a turn prints `cancel the current turn (esc) before running a slash command`. | |||
| 186 | + | ||||
| 179 | ## keys (interactive mode) | 187 | ## keys (interactive mode) | ||
| 180 | 188 | ||||
| 181 | ### input | 189 | ### input | ||
| 182 | 190 | ||||
| 183 | | key | action | | 191 | | key | action | | ||
| 184 | |---|---| | 192 | |---|---| | ||
| 185 | - | | `enter` | submit | | 193 | + | | `enter` | submit (queued if the agent is busy) | |
| 186 | | `alt+enter` | newline | | 194 | | `alt+enter` | newline | | ||
| 187 | | `tab` | complete the selected slash command | | 195 | | `tab` | complete the selected slash command | | ||
| 188 | | `esc` | cancel the current turn (while busy); clear input (while idle) | | 196 | | `esc` | cancel the current turn (while busy); clear input (while idle) | | ||
| 189 | | `ctrl+c` | exit when idle; cancel the current turn while busy | | 197 | | `ctrl+c` | exit when idle; cancel the current turn while busy | | ||
| 190 | | `ctrl+d` | exit on empty input | | 198 | | `ctrl+d` | exit on empty input | | ||
| 191 | | `ctrl+l` | redraw the screen | | 199 | | `ctrl+l` | redraw the screen | | ||
| 200 | + | | `ctrl+o` | expand / collapse long tool results | | |||
| 192 | 201 | ||||
| 193 | ### editor line navigation | 202 | ### editor line navigation | ||
| 194 | 203 | ||||
| @@ -229,13 +238,13 @@ the background flavor writes the child's pid to `$ZOT_HOME/bot.pid` and redirect | |||||
| 229 | setup flow: | 238 | setup flow: | ||
| 230 | 239 | ||||
| 231 | 1. talk to [@BotFather](https://t.me/BotFather) on telegram, run `/newbot`, copy the token it gives you. | 240 | 1. talk to [@BotFather](https://t.me/BotFather) on telegram, run `/newbot`, copy the token it gives you. | ||
| 232 | - | 2. run `zot bot setup` and paste the token when prompted. | 241 | + | 2. run `zot telegram-bot setup` and paste the token when prompted. |
| 233 | - | 3. run `zot bot run` in the directory you want the agent to operate in. | 242 | + | 3. run `zot telegram-bot run` in the directory you want the agent to operate in. |
| 234 | 4. open your bot on telegram, send `/start`. the first user to do this claims the bridge (stored as `allowed_user_id`); every other user is rejected. | 243 | 4. open your bot on telegram, send `/start`. the first user to do this claims the bridge (stored as `allowed_user_id`); every other user is rejected. | ||
| 235 | 244 | ||||
| 236 | from then on, any dm you send is forwarded to the agent as a user prompt. attached photos or image/* documents are downloaded and passed to vision-capable models. in-bot telegram commands: `/help`, `/status`, `/stop` (cancel the current turn). config lives in `$ZOT_HOME/bot.json` (mode 0600). | 245 | from then on, any dm you send is forwarded to the agent as a user prompt. attached photos or image/* documents are downloaded and passed to vision-capable models. in-bot telegram commands: `/help`, `/status`, `/stop` (cancel the current turn). config lives in `$ZOT_HOME/bot.json` (mode 0600). | ||
| 237 | 246 | ||||
| 238 | - | bot mode respects the usual zot flags — `--provider`, `--model`, `--cwd`, `--reasoning`, `--continue`, `--no-session`, `--no-tools`, etc. run `zot bot run -c --model claude-opus-4-1` to resume the latest session on opus, for example. | 247 | + | bot mode respects the usual zot flags — `--provider`, `--model`, `--cwd`, `--reasoning`, `--continue`, `--no-session`, `--no-tools`, etc. run `zot tg run -c --model claude-opus-4-1` to resume the latest session on opus, for example. |
| 239 | 248 | ||||
| 240 | ## development | 249 | ## development | ||
| 241 | 250 | ||||