refactor: simplify cross-session messaging

This commit is contained in:
chengyongru
2026-08-19 01:15:56 +08:00
committed by chengyongru
parent 0e184965e8
commit 251a1ccd40
78 changed files with 1578 additions and 7569 deletions
+1 -1
View File
@@ -2082,7 +2082,7 @@ For API keys, tokens, and other secrets, see [Environment Variables for Secrets]
| Option | Default | Description |
|--------|---------|-------------|
| `tools.restrictToWorkspace` | `false` | When `true`, enables nanobot's application-level workspace guards for workspace-aware tools. File tools resolve paths under the active workspace; selected internal roots can be added as read-only or explicitly write-enabled roots, and media uploads are read-only by default. Shell execution rejects workspace-external `working_dir` values and applies best-effort command path checks, but this is not an OS sandbox. |
| `tools.maxSessionMessagesPerMinute` | `6` | Maximum messages one WebUI session may send to other sessions during any rolling 60-second window. Additional sends are rejected to stop runaway agent loops. |
| `tools.maxSessionMessagesPerMinute` | `6` | Maximum messages one source session may send during any rolling 60-second window. Additional sends are rejected to stop runaway agent loops. |
| `tools.exec.sandbox` | `""` | Sandbox backend for shell commands. Set to `"bwrap"` to wrap exec calls in a [bubblewrap](https://github.com/containers/bubblewrap) sandbox — the process can only see the workspace (read-write) and media directory (read-only); config files and API keys are hidden. Automatically enables workspace restriction for file tools. **Linux only** — requires `bwrap` installed (`apt install bubblewrap`; pre-installed in the Docker image). Not available on macOS or Windows (bwrap depends on Linux kernel namespaces). |
| `tools.exec.enable` | `true` | When `false`, the shell `exec` tool is not registered at all. Use this to completely disable shell command execution. |
| `tools.exec.timeout` | `60` | Default hard timeout in seconds for shell commands. Config values may exceed the per-call tool cap; set `0` to disable the hard timeout for trusted long-running commands. |
+11 -15
View File
@@ -79,7 +79,7 @@ This path avoids hand-editing `config.json` for normal setup. Use the reference
| Agent activity | See thinking, tool calls, file edits with diffs, command output, and generated artifacts in context |
| Workspace | Pick the project workspace before asking for file or shell work |
| Access | Choose the access mode for local capabilities allowed by your gateway configuration |
| Composer | Send text, images, voice input, slash commands, `@` addresses, and `#` conversation references |
| Composer | Send text, images, voice input, slash commands, and `@` mentions for sessions, Apps, or MCP presets |
| Channels | Connect and validate chat platforms, install their optional support, and manage saved channel setup |
| Apps | Install, test, update, and use local CLI App adapters and MCP presets |
| Skills | Inspect and manage installed skills, or discover skills from supported marketplaces |
@@ -173,21 +173,17 @@ clients.
## Composer
The composer supports plain messages, image attachments, voice input when
transcription is configured, slash commands, and two kinds of structured names:
transcription is configured, slash commands, and `@` mentions for installed Apps,
MCP presets, or persisted sessions. Sessions have stable handles such as
`@mira-1a2b3c4d5e`; titles are display text rather than addresses. Select a session
from the menu, or drag it from the sidebar, to attach its structured reference.
Typing the same text without selecting it remains plain text.
- Use `@` to address an installed App, an MCP preset, or another persisted WebUI
session. Sessions have globally unique, stable handles such as `@mira`;
titles are not part of a handle or the model context. Selecting a session handle
lets the current agent send that session an asynchronous message. Agents can also
discover handles with `list_sessions` and communicate with `send_session_message`.
- Use `#` to reference another conversation's history. Select it from the menu or
drag it from the sidebar. Nanobot reads the referenced history only when it is
relevant.
Select a menu item to create either binding. Typing the same text without selecting
it remains plain text. Temporary chats cannot address other sessions or attach persisted
conversation history. The model badge shows the current model or preset and links
to model settings when setup is incomplete.
The agent can inspect an attached session with `read_session`. It can discover other
persisted sessions with `list_sessions` and send asynchronous messages with
`send_session_message`; session messaging is not limited by workspace scope.
The model badge shows the current model or preset and links to model settings when
setup is incomplete.
For image generation, configure an image provider first and then use the WebUI
image mode from the composer. See [`image-generation.md`](./image-generation.md)