You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- CONFIG.md: added full Tool Progress section with value table,
cleanup docs, how-it-works walkthrough with examples
- commands.go: /mode now shows tool_progress options (all/new/verbose/off
+ tool_progress_cleanup) and updated command description
- Updated default config example in CONFIG.md to include
tool_progress and tool_progress_cleanup
Copy file name to clipboardExpand all lines: docs/CONFIG.md
+45Lines changed: 45 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -39,6 +39,8 @@ Shared across all projects:
39
39
"no_color": false,
40
40
"no_agents": false,
41
41
"max_tool_parallel": 4,
42
+
"tool_progress": "all",
43
+
"tool_progress_cleanup": true,
42
44
"system": ""
43
45
}
44
46
```
@@ -323,6 +325,49 @@ odek run "Daily summary" --deliver
323
325
324
326
See [docs/TELEGRAM.md](docs/TELEGRAM.md#cron-integration) for full cron setup instructions.
325
327
328
+
## Tool Progress
329
+
330
+
Controls how per-tool progress messages appear inside the Telegram bot during agent runs. Independent from `interaction_mode` — you can have engaging terminal output with minimal Telegram progress, or verbose terminal with rich progress bubbles.
331
+
332
+
```json
333
+
{
334
+
"tool_progress": "all",
335
+
"tool_progress_cleanup": true
336
+
}
337
+
```
338
+
339
+
### `tool_progress`
340
+
341
+
| Value | Behavior | Use case |
342
+
|-------|----------|----------|
343
+
|`"all"` (default) | Single editable progress bubble with smart previews — e.g. `📝 read_file: "main.go"`. Includes edit throttling (1.5s), tool dedup (`×N` counter for repeated same-tool), and automatic flood-control fallback | General use — shows what the agent is doing without spamming the chat |
344
+
|`"new"`| Same as `"all"` but only updates when the tool name changes. Consecutive `read_file` calls produce one line; a `shell` call starts a new line | Long-running agents with repetitive tool chains (e.g. reading 50 files in batch) |
345
+
|`"verbose"`| Raw tool arguments as separate messages. Each tool call sends a new message with full JSON args; on completion the result is sent as a new message `✅ (size)`| Debugging — see exactly what the agent passes to each tool |
346
+
|`"off"`| No per-tool progress messages at all. Only the initial "🤔 Looking into that..." and final answer are shown | Privacy-sensitive contexts or users who prefer zero noise |
347
+
348
+
### `tool_progress_cleanup`
349
+
350
+
Default: `true`. Controls whether the progress message bubble is deleted after the agent's final answer arrives:
351
+
-`true` — delete the progress bubble (clean chat, no stale tool traces)
352
+
-`false` — keep the progress bubble as a breadcrumb of what the agent did
353
+
354
+
### How it works
355
+
356
+
The progress system is an evolving single message that gets edited in-place (similar to an animated status). Each tool call adds a line like:
357
+
358
+
```
359
+
📝 read_file: "main.go"
360
+
💻 shell: "npm test"
361
+
📝 read_file: "utils.go" (×3)
362
+
```
363
+
364
+
Key behaviors:
365
+
-**Smart previews** — instead of showing raw JSON args, the system extracts meaningful context: filename for file tools, the command text for shell, URL for browser, query text for memory/search tools, audio filename for transcribe
366
+
-**Edit throttling** — edits are rate-limited to one every 1.5 seconds to avoid hitting Telegram's flood control limits. Rapid tool chains don't produce 429 errors
367
+
-**Tool dedup** — when the same tool runs consecutively (common with parallel batch tools like `batch_read`), identical lines are collapsed into a `(×N)` counter instead of repeating N times
368
+
-**Flood control fallback** — if an edit message fails with "flood" or "retry after", the system automatically switches to sending new messages instead of editing. This prevents the bot from becoming unresponsive under heavy load
369
+
-**Content reset** — when the agent calls `send_message` mid-run to send an interim message, the progress bubble resets below that content, keeping the chat timeline in correct order
0 commit comments