@quantumclaw/quantumclaw 2026.3.22
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 +4601 -0
- package/LICENSE +21 -0
- package/README.md +559 -0
- package/assets/avatar-placeholder.svg +19 -0
- package/assets/chrome-extension/icons/icon128.png +0 -0
- package/assets/chrome-extension/icons/icon16.png +0 -0
- package/assets/chrome-extension/icons/icon32.png +0 -0
- package/assets/chrome-extension/icons/icon48.png +0 -0
- package/assets/dmg-background-small.png +0 -0
- package/assets/dmg-background.png +0 -0
- package/docs/.i18n/README.md +31 -0
- package/docs/.i18n/glossary.ja-JP.json +14 -0
- package/docs/.i18n/glossary.zh-CN.json +302 -0
- package/docs/.i18n/ja-JP.tm.jsonl +0 -0
- package/docs/assets/install-script.svg +1 -0
- package/docs/assets/macos-onboarding/01-macos-warning.jpeg +0 -0
- package/docs/assets/macos-onboarding/02-local-networks.jpeg +0 -0
- package/docs/assets/macos-onboarding/03-security-notice.png +0 -0
- package/docs/assets/macos-onboarding/04-choose-gateway.png +0 -0
- package/docs/assets/macos-onboarding/05-permissions.png +0 -0
- package/docs/assets/pixel-lobster.svg +60 -0
- package/docs/assets/quantumclaw-logo-text-dark.png +0 -0
- package/docs/assets/quantumclaw-logo-text-dark.svg +418 -0
- package/docs/assets/quantumclaw-logo-text.png +0 -0
- package/docs/assets/quantumclaw-logo-text.svg +418 -0
- package/docs/assets/showcase/agents-ui.jpg +0 -0
- package/docs/assets/showcase/bambu-cli.png +0 -0
- package/docs/assets/showcase/codexmonitor.png +0 -0
- package/docs/assets/showcase/gohome-grafana.png +0 -0
- package/docs/assets/showcase/ios-testflight.jpg +0 -0
- package/docs/assets/showcase/oura-health.png +0 -0
- package/docs/assets/showcase/padel-cli.svg +11 -0
- package/docs/assets/showcase/padel-screenshot.jpg +0 -0
- package/docs/assets/showcase/papla-tts.jpg +0 -0
- package/docs/assets/showcase/pr-review-telegram.jpg +0 -0
- package/docs/assets/showcase/roborock-screenshot.jpg +0 -0
- package/docs/assets/showcase/roborock-status.svg +13 -0
- package/docs/assets/showcase/roof-camera-sky.jpg +0 -0
- package/docs/assets/showcase/snag.png +0 -0
- package/docs/assets/showcase/tesco-shop.jpg +0 -0
- package/docs/assets/showcase/wienerlinien.png +0 -0
- package/docs/assets/showcase/wine-cellar-skill.jpg +0 -0
- package/docs/assets/showcase/winix-air-purifier.jpg +0 -0
- package/docs/assets/showcase/xuezh-pronunciation.jpeg +0 -0
- package/docs/assets/sponsors/blacksmith.svg +14 -0
- package/docs/assets/sponsors/convex.svg +16 -0
- package/docs/assets/sponsors/openai.svg +3 -0
- package/docs/assets/sponsors/vercel.svg +5 -0
- package/docs/auth-credential-semantics.md +53 -0
- package/docs/automation/auth-monitoring.md +44 -0
- package/docs/automation/cron-jobs.md +727 -0
- package/docs/automation/cron-vs-heartbeat.md +286 -0
- package/docs/automation/gmail-pubsub.md +256 -0
- package/docs/automation/hooks.md +1056 -0
- package/docs/automation/poll.md +86 -0
- package/docs/automation/standing-orders.md +251 -0
- package/docs/automation/troubleshooting.md +122 -0
- package/docs/automation/webhook.md +217 -0
- package/docs/brave-search.md +93 -0
- package/docs/channels/bluebubbles.md +347 -0
- package/docs/channels/broadcast-groups.md +442 -0
- package/docs/channels/channel-routing.md +139 -0
- package/docs/channels/discord.md +1229 -0
- package/docs/channels/feishu.md +747 -0
- package/docs/channels/googlechat.md +261 -0
- package/docs/channels/group-messages.md +84 -0
- package/docs/channels/groups.md +379 -0
- package/docs/channels/imessage.md +367 -0
- package/docs/channels/index.md +47 -0
- package/docs/channels/irc.md +242 -0
- package/docs/channels/line.md +194 -0
- package/docs/channels/location.md +56 -0
- package/docs/channels/matrix.md +677 -0
- package/docs/channels/mattermost.md +427 -0
- package/docs/channels/msteams.md +780 -0
- package/docs/channels/nextcloud-talk.md +138 -0
- package/docs/channels/nostr.md +249 -0
- package/docs/channels/pairing.md +114 -0
- package/docs/channels/signal.md +329 -0
- package/docs/channels/slack.md +603 -0
- package/docs/channels/synology-chat.md +134 -0
- package/docs/channels/telegram.md +987 -0
- package/docs/channels/tlon.md +276 -0
- package/docs/channels/troubleshooting.md +118 -0
- package/docs/channels/twitch.md +379 -0
- package/docs/channels/whatsapp.md +460 -0
- package/docs/channels/zalo.md +243 -0
- package/docs/channels/zalouser.md +181 -0
- package/docs/ci.md +55 -0
- package/docs/cli/acp.md +288 -0
- package/docs/cli/agent.md +29 -0
- package/docs/cli/agents.md +123 -0
- package/docs/cli/approvals.md +50 -0
- package/docs/cli/backup.md +76 -0
- package/docs/cli/browser.md +106 -0
- package/docs/cli/channels.md +102 -0
- package/docs/cli/clawbot.md +21 -0
- package/docs/cli/completion.md +35 -0
- package/docs/cli/config.md +295 -0
- package/docs/cli/configure.md +36 -0
- package/docs/cli/cron.md +77 -0
- package/docs/cli/daemon.md +53 -0
- package/docs/cli/dashboard.md +22 -0
- package/docs/cli/devices.md +139 -0
- package/docs/cli/directory.md +63 -0
- package/docs/cli/dns.md +23 -0
- package/docs/cli/docs.md +15 -0
- package/docs/cli/doctor.md +48 -0
- package/docs/cli/gateway.md +235 -0
- package/docs/cli/health.md +21 -0
- package/docs/cli/hooks.md +329 -0
- package/docs/cli/index.md +1150 -0
- package/docs/cli/logs.md +28 -0
- package/docs/cli/memory.md +66 -0
- package/docs/cli/message.md +278 -0
- package/docs/cli/models.md +81 -0
- package/docs/cli/node.md +127 -0
- package/docs/cli/nodes.md +75 -0
- package/docs/cli/onboard.md +157 -0
- package/docs/cli/pairing.md +32 -0
- package/docs/cli/plugins.md +210 -0
- package/docs/cli/qr.md +46 -0
- package/docs/cli/reset.md +20 -0
- package/docs/cli/sandbox.md +197 -0
- package/docs/cli/secrets.md +188 -0
- package/docs/cli/security.md +79 -0
- package/docs/cli/sessions.md +110 -0
- package/docs/cli/setup.md +29 -0
- package/docs/cli/skills.md +36 -0
- package/docs/cli/status.md +30 -0
- package/docs/cli/system.md +60 -0
- package/docs/cli/tui.md +30 -0
- package/docs/cli/uninstall.md +20 -0
- package/docs/cli/update.md +103 -0
- package/docs/cli/voicecall.md +34 -0
- package/docs/cli/webhooks.md +25 -0
- package/docs/concepts/agent-loop.md +148 -0
- package/docs/concepts/agent-workspace.md +236 -0
- package/docs/concepts/agent.md +122 -0
- package/docs/concepts/architecture.md +137 -0
- package/docs/concepts/compaction.md +123 -0
- package/docs/concepts/context-engine.md +268 -0
- package/docs/concepts/context.md +172 -0
- package/docs/concepts/delegate-architecture.md +296 -0
- package/docs/concepts/features.md +73 -0
- package/docs/concepts/markdown-formatting.md +130 -0
- package/docs/concepts/memory.md +108 -0
- package/docs/concepts/messages.md +154 -0
- package/docs/concepts/model-failover.md +152 -0
- package/docs/concepts/model-providers.md +607 -0
- package/docs/concepts/models.md +225 -0
- package/docs/concepts/multi-agent.md +552 -0
- package/docs/concepts/oauth.md +158 -0
- package/docs/concepts/presence.md +102 -0
- package/docs/concepts/queue.md +89 -0
- package/docs/concepts/retry.md +69 -0
- package/docs/concepts/session-pruning.md +121 -0
- package/docs/concepts/session-tool.md +242 -0
- package/docs/concepts/session.md +310 -0
- package/docs/concepts/streaming.md +155 -0
- package/docs/concepts/system-prompt.md +132 -0
- package/docs/concepts/timezone.md +91 -0
- package/docs/concepts/typebox.md +291 -0
- package/docs/concepts/typing-indicators.md +68 -0
- package/docs/concepts/usage-tracking.md +35 -0
- package/docs/date-time.md +128 -0
- package/docs/debug/node-issue.md +85 -0
- package/docs/diagnostics/flags.md +91 -0
- package/docs/docs.json +2078 -0
- package/docs/gateway/authentication.md +179 -0
- package/docs/gateway/background-process.md +97 -0
- package/docs/gateway/bonjour.md +177 -0
- package/docs/gateway/bridge-protocol.md +91 -0
- package/docs/gateway/cli-backends.md +225 -0
- package/docs/gateway/configuration-examples.md +651 -0
- package/docs/gateway/configuration-reference.md +3123 -0
- package/docs/gateway/configuration.md +633 -0
- package/docs/gateway/discovery.md +123 -0
- package/docs/gateway/doctor.md +362 -0
- package/docs/gateway/gateway-lock.md +34 -0
- package/docs/gateway/health.md +44 -0
- package/docs/gateway/heartbeat.md +393 -0
- package/docs/gateway/index.md +261 -0
- package/docs/gateway/local-models.md +152 -0
- package/docs/gateway/logging.md +113 -0
- package/docs/gateway/multiple-gateways.md +112 -0
- package/docs/gateway/network-model.md +22 -0
- package/docs/gateway/openai-http-api.md +132 -0
- package/docs/gateway/openresponses-http-api.md +295 -0
- package/docs/gateway/openshell.md +307 -0
- package/docs/gateway/pairing.md +99 -0
- package/docs/gateway/protocol.md +267 -0
- package/docs/gateway/remote-gateway-readme.md +158 -0
- package/docs/gateway/remote.md +153 -0
- package/docs/gateway/sandbox-vs-tool-policy-vs-elevated.md +134 -0
- package/docs/gateway/sandboxing.md +469 -0
- package/docs/gateway/secrets-plan-contract.md +116 -0
- package/docs/gateway/secrets.md +503 -0
- package/docs/gateway/security/index.md +1220 -0
- package/docs/gateway/tailscale.md +132 -0
- package/docs/gateway/tools-invoke-http-api.md +118 -0
- package/docs/gateway/troubleshooting.md +378 -0
- package/docs/gateway/trusted-proxy-auth.md +330 -0
- package/docs/help/debugging.md +168 -0
- package/docs/help/environment.md +163 -0
- package/docs/help/faq.md +2997 -0
- package/docs/help/index.md +28 -0
- package/docs/help/scripts.md +28 -0
- package/docs/help/testing.md +526 -0
- package/docs/help/troubleshooting.md +297 -0
- package/docs/images/configure-model-picker-unsearchable.png +0 -0
- package/docs/images/feishu-step2-create-app.png +0 -0
- package/docs/images/feishu-step3-credentials.png +0 -0
- package/docs/images/feishu-step4-permissions.png +0 -0
- package/docs/images/feishu-step5-bot-capability.png +0 -0
- package/docs/images/feishu-step6-event-subscription.png +0 -0
- package/docs/images/feishu-verification-token.png +0 -0
- package/docs/images/groups-flow.svg +52 -0
- package/docs/images/mobile-ui-screenshot.png +0 -0
- package/docs/index.md +196 -0
- package/docs/install/ansible.md +230 -0
- package/docs/install/azure.md +311 -0
- package/docs/install/bun.md +55 -0
- package/docs/install/development-channels.md +120 -0
- package/docs/install/digitalocean.md +129 -0
- package/docs/install/docker-vm-runtime.md +142 -0
- package/docs/install/docker.md +375 -0
- package/docs/install/exe-dev.md +126 -0
- package/docs/install/fly.md +501 -0
- package/docs/install/gcp.md +402 -0
- package/docs/install/hetzner.md +251 -0
- package/docs/install/index.md +183 -0
- package/docs/install/installer.md +415 -0
- package/docs/install/kubernetes.md +191 -0
- package/docs/install/macos-vm.md +281 -0
- package/docs/install/migrating-matrix.md +346 -0
- package/docs/install/migrating.md +110 -0
- package/docs/install/nix.md +89 -0
- package/docs/install/node.md +138 -0
- package/docs/install/northflank.mdx +54 -0
- package/docs/install/oracle.md +156 -0
- package/docs/install/podman.md +133 -0
- package/docs/install/railway.mdx +100 -0
- package/docs/install/raspberry-pi.md +159 -0
- package/docs/install/render.mdx +169 -0
- package/docs/install/uninstall.md +128 -0
- package/docs/install/updating.md +128 -0
- package/docs/ja-JP/index.md +186 -0
- package/docs/ja-JP/start/getting-started.md +125 -0
- package/docs/ja-JP/start/wizard.md +77 -0
- package/docs/logging.md +352 -0
- package/docs/nav-tabs-underline.js +100 -0
- package/docs/network.md +54 -0
- package/docs/nodes/audio.md +187 -0
- package/docs/nodes/camera.md +162 -0
- package/docs/nodes/images.md +72 -0
- package/docs/nodes/index.md +393 -0
- package/docs/nodes/location-command.md +98 -0
- package/docs/nodes/media-understanding.md +394 -0
- package/docs/nodes/talk.md +92 -0
- package/docs/nodes/troubleshooting.md +114 -0
- package/docs/nodes/voicewake.md +66 -0
- package/docs/perplexity.md +174 -0
- package/docs/pi-dev.md +80 -0
- package/docs/pi.md +567 -0
- package/docs/platforms/android.md +168 -0
- package/docs/platforms/digitalocean.md +266 -0
- package/docs/platforms/index.md +54 -0
- package/docs/platforms/ios.md +220 -0
- package/docs/platforms/linux.md +94 -0
- package/docs/platforms/mac/bundled-gateway.md +73 -0
- package/docs/platforms/mac/canvas.md +125 -0
- package/docs/platforms/mac/child-process.md +69 -0
- package/docs/platforms/mac/dev-setup.md +104 -0
- package/docs/platforms/mac/health.md +34 -0
- package/docs/platforms/mac/icon.md +31 -0
- package/docs/platforms/mac/logging.md +57 -0
- package/docs/platforms/mac/menu-bar.md +81 -0
- package/docs/platforms/mac/peekaboo.md +65 -0
- package/docs/platforms/mac/permissions.md +50 -0
- package/docs/platforms/mac/remote.md +84 -0
- package/docs/platforms/mac/signing.md +47 -0
- package/docs/platforms/mac/skills.md +33 -0
- package/docs/platforms/mac/voice-overlay.md +60 -0
- package/docs/platforms/mac/voicewake.md +67 -0
- package/docs/platforms/mac/webchat.md +43 -0
- package/docs/platforms/mac/xpc.md +61 -0
- package/docs/platforms/macos.md +226 -0
- package/docs/platforms/oracle.md +303 -0
- package/docs/platforms/raspberry-pi.md +412 -0
- package/docs/platforms/windows.md +241 -0
- package/docs/plugins/agent-tools.md +10 -0
- package/docs/plugins/architecture.md +1366 -0
- package/docs/plugins/building-extensions.md +10 -0
- package/docs/plugins/building-plugins.md +239 -0
- package/docs/plugins/bundles.md +181 -0
- package/docs/plugins/community.md +145 -0
- package/docs/plugins/manifest.md +241 -0
- package/docs/plugins/sdk-channel-plugins.md +370 -0
- package/docs/plugins/sdk-entrypoints.md +161 -0
- package/docs/plugins/sdk-migration.md +172 -0
- package/docs/plugins/sdk-overview.md +196 -0
- package/docs/plugins/sdk-provider-plugins.md +370 -0
- package/docs/plugins/sdk-runtime.md +345 -0
- package/docs/plugins/sdk-setup.md +331 -0
- package/docs/plugins/sdk-testing.md +263 -0
- package/docs/plugins/voice-call.md +380 -0
- package/docs/plugins/zalouser.md +77 -0
- package/docs/prose.md +134 -0
- package/docs/providers/anthropic.md +259 -0
- package/docs/providers/bedrock.md +176 -0
- package/docs/providers/claude-max-api-proxy.md +154 -0
- package/docs/providers/cloudflare-ai-gateway.md +71 -0
- package/docs/providers/deepgram.md +93 -0
- package/docs/providers/github-copilot.md +72 -0
- package/docs/providers/glm.md +43 -0
- package/docs/providers/google.md +78 -0
- package/docs/providers/groq.md +96 -0
- package/docs/providers/huggingface.md +209 -0
- package/docs/providers/index.md +69 -0
- package/docs/providers/kilocode.md +74 -0
- package/docs/providers/litellm.md +154 -0
- package/docs/providers/minimax.md +224 -0
- package/docs/providers/mistral.md +54 -0
- package/docs/providers/models.md +45 -0
- package/docs/providers/modelstudio.md +66 -0
- package/docs/providers/moonshot.md +175 -0
- package/docs/providers/nvidia.md +55 -0
- package/docs/providers/ollama.md +352 -0
- package/docs/providers/openai.md +303 -0
- package/docs/providers/opencode-go.md +45 -0
- package/docs/providers/opencode.md +64 -0
- package/docs/providers/openrouter.md +37 -0
- package/docs/providers/perplexity-provider.md +62 -0
- package/docs/providers/qianfan.md +38 -0
- package/docs/providers/qwen.md +53 -0
- package/docs/providers/sglang.md +104 -0
- package/docs/providers/synthetic.md +99 -0
- package/docs/providers/together.md +66 -0
- package/docs/providers/venice.md +282 -0
- package/docs/providers/vercel-ai-gateway.md +60 -0
- package/docs/providers/vllm.md +92 -0
- package/docs/providers/volcengine.md +74 -0
- package/docs/providers/xai.md +60 -0
- package/docs/providers/xiaomi.md +86 -0
- package/docs/providers/zai.md +46 -0
- package/docs/reference/AGENTS.default.md +126 -0
- package/docs/reference/RELEASING.md +42 -0
- package/docs/reference/api-usage-costs.md +144 -0
- package/docs/reference/credits.md +30 -0
- package/docs/reference/device-models.md +47 -0
- package/docs/reference/memory-config.md +711 -0
- package/docs/reference/prompt-caching.md +185 -0
- package/docs/reference/rpc.md +43 -0
- package/docs/reference/secretref-credential-surface.md +140 -0
- package/docs/reference/secretref-user-supplied-credentials-matrix.json +563 -0
- package/docs/reference/session-management-compaction.md +324 -0
- package/docs/reference/templates/AGENTS.dev.md +83 -0
- package/docs/reference/templates/AGENTS.md +219 -0
- package/docs/reference/templates/BOOT.md +11 -0
- package/docs/reference/templates/BOOTSTRAP.md +62 -0
- package/docs/reference/templates/HEARTBEAT.md +14 -0
- package/docs/reference/templates/IDENTITY.dev.md +47 -0
- package/docs/reference/templates/IDENTITY.md +29 -0
- package/docs/reference/templates/SOUL.dev.md +76 -0
- package/docs/reference/templates/SOUL.md +43 -0
- package/docs/reference/templates/TOOLS.dev.md +24 -0
- package/docs/reference/templates/TOOLS.md +47 -0
- package/docs/reference/templates/USER.dev.md +18 -0
- package/docs/reference/templates/USER.md +23 -0
- package/docs/reference/test.md +90 -0
- package/docs/reference/token-use.md +175 -0
- package/docs/reference/transcript-hygiene.md +151 -0
- package/docs/reference/wizard.md +235 -0
- package/docs/security/CONTRIBUTING-THREAT-MODEL.md +98 -0
- package/docs/security/THREAT-MODEL-ATLAS.md +611 -0
- package/docs/security/formal-verification.md +167 -0
- package/docs/start/bootstrapping.md +41 -0
- package/docs/start/docs-directory.md +66 -0
- package/docs/start/getting-started.md +116 -0
- package/docs/start/hubs.md +198 -0
- package/docs/start/lore.md +219 -0
- package/docs/start/onboarding-overview.md +67 -0
- package/docs/start/onboarding.md +91 -0
- package/docs/start/openclaw.md +221 -0
- package/docs/start/quickstart.md +22 -0
- package/docs/start/setup.md +164 -0
- package/docs/start/showcase.md +418 -0
- package/docs/start/wizard-cli-automation.md +215 -0
- package/docs/start/wizard-cli-reference.md +299 -0
- package/docs/start/wizard.md +125 -0
- package/docs/style.css +37 -0
- package/docs/tools/acp-agents.md +623 -0
- package/docs/tools/agent-send.md +100 -0
- package/docs/tools/apply-patch.md +51 -0
- package/docs/tools/brave-search.md +93 -0
- package/docs/tools/browser-linux-troubleshooting.md +138 -0
- package/docs/tools/browser-login.md +73 -0
- package/docs/tools/browser-wsl2-windows-remote-cdp-troubleshooting.md +211 -0
- package/docs/tools/browser.md +731 -0
- package/docs/tools/btw.md +142 -0
- package/docs/tools/capability-cookbook.md +119 -0
- package/docs/tools/clawhub.md +298 -0
- package/docs/tools/creating-skills.md +117 -0
- package/docs/tools/diffs.md +386 -0
- package/docs/tools/elevated.md +114 -0
- package/docs/tools/exec-approvals.md +430 -0
- package/docs/tools/exec.md +207 -0
- package/docs/tools/firecrawl.md +140 -0
- package/docs/tools/index.md +137 -0
- package/docs/tools/llm-task.md +119 -0
- package/docs/tools/lobster.md +340 -0
- package/docs/tools/loop-detection.md +100 -0
- package/docs/tools/multi-agent-sandbox-tools.md +364 -0
- package/docs/tools/pdf.md +156 -0
- package/docs/tools/perplexity-search.md +174 -0
- package/docs/tools/plugin.md +255 -0
- package/docs/tools/reactions.md +64 -0
- package/docs/tools/skills-config.md +86 -0
- package/docs/tools/skills.md +309 -0
- package/docs/tools/slash-commands.md +294 -0
- package/docs/tools/subagents.md +295 -0
- package/docs/tools/tavily.md +125 -0
- package/docs/tools/thinking.md +96 -0
- package/docs/tools/tts.md +406 -0
- package/docs/tools/web.md +516 -0
- package/docs/tts.md +406 -0
- package/docs/vps.md +112 -0
- package/docs/web/control-ui.md +275 -0
- package/docs/web/dashboard.md +54 -0
- package/docs/web/index.md +120 -0
- package/docs/web/tui.md +170 -0
- package/docs/web/webchat.md +61 -0
- package/docs/whatsapp-openclaw-ai-zh.jpg +0 -0
- package/docs/whatsapp-openclaw.jpg +0 -0
- package/docs/zh-CN/AGENTS.md +61 -0
- package/docs/zh-CN/automation/auth-monitoring.md +47 -0
- package/docs/zh-CN/automation/cron-jobs.md +435 -0
- package/docs/zh-CN/automation/cron-vs-heartbeat.md +286 -0
- package/docs/zh-CN/automation/gmail-pubsub.md +249 -0
- package/docs/zh-CN/automation/hooks.md +1051 -0
- package/docs/zh-CN/automation/poll.md +76 -0
- package/docs/zh-CN/automation/troubleshooting.md +8 -0
- package/docs/zh-CN/automation/webhook.md +163 -0
- package/docs/zh-CN/brave-search.md +60 -0
- package/docs/zh-CN/channels/bluebubbles.md +354 -0
- package/docs/zh-CN/channels/broadcast-groups.md +449 -0
- package/docs/zh-CN/channels/channel-routing.md +117 -0
- package/docs/zh-CN/channels/discord.md +468 -0
- package/docs/zh-CN/channels/feishu.md +728 -0
- package/docs/zh-CN/channels/googlechat.md +257 -0
- package/docs/zh-CN/channels/grammy.md +38 -0
- package/docs/zh-CN/channels/group-messages.md +91 -0
- package/docs/zh-CN/channels/groups.md +379 -0
- package/docs/zh-CN/channels/imessage.md +302 -0
- package/docs/zh-CN/channels/index.md +53 -0
- package/docs/zh-CN/channels/line.md +180 -0
- package/docs/zh-CN/channels/location.md +63 -0
- package/docs/zh-CN/channels/matrix.md +221 -0
- package/docs/zh-CN/channels/mattermost.md +144 -0
- package/docs/zh-CN/channels/msteams.md +775 -0
- package/docs/zh-CN/channels/nextcloud-talk.md +142 -0
- package/docs/zh-CN/channels/nostr.md +249 -0
- package/docs/zh-CN/channels/pairing.md +89 -0
- package/docs/zh-CN/channels/signal.md +209 -0
- package/docs/zh-CN/channels/slack.md +531 -0
- package/docs/zh-CN/channels/synology-chat.md +138 -0
- package/docs/zh-CN/channels/telegram.md +751 -0
- package/docs/zh-CN/channels/tlon.md +136 -0
- package/docs/zh-CN/channels/troubleshooting.md +36 -0
- package/docs/zh-CN/channels/twitch.md +385 -0
- package/docs/zh-CN/channels/whatsapp.md +411 -0
- package/docs/zh-CN/channels/zalo.md +196 -0
- package/docs/zh-CN/channels/zalouser.md +147 -0
- package/docs/zh-CN/cli/acp.md +173 -0
- package/docs/zh-CN/cli/agent.md +30 -0
- package/docs/zh-CN/cli/agents.md +82 -0
- package/docs/zh-CN/cli/approvals.md +57 -0
- package/docs/zh-CN/cli/browser.md +114 -0
- package/docs/zh-CN/cli/channels.md +86 -0
- package/docs/zh-CN/cli/config.md +57 -0
- package/docs/zh-CN/cli/configure.md +38 -0
- package/docs/zh-CN/cli/cron.md +43 -0
- package/docs/zh-CN/cli/dashboard.md +23 -0
- package/docs/zh-CN/cli/devices.md +74 -0
- package/docs/zh-CN/cli/directory.md +70 -0
- package/docs/zh-CN/cli/dns.md +30 -0
- package/docs/zh-CN/cli/docs.md +22 -0
- package/docs/zh-CN/cli/doctor.md +48 -0
- package/docs/zh-CN/cli/gateway.md +206 -0
- package/docs/zh-CN/cli/health.md +28 -0
- package/docs/zh-CN/cli/hooks.md +298 -0
- package/docs/zh-CN/cli/index.md +1143 -0
- package/docs/zh-CN/cli/logs.md +31 -0
- package/docs/zh-CN/cli/memory.md +52 -0
- package/docs/zh-CN/cli/message.md +246 -0
- package/docs/zh-CN/cli/models.md +85 -0
- package/docs/zh-CN/cli/node.md +115 -0
- package/docs/zh-CN/cli/nodes.md +80 -0
- package/docs/zh-CN/cli/onboard.md +164 -0
- package/docs/zh-CN/cli/pairing.md +28 -0
- package/docs/zh-CN/cli/plugins.md +66 -0
- package/docs/zh-CN/cli/reset.md +24 -0
- package/docs/zh-CN/cli/sandbox.md +158 -0
- package/docs/zh-CN/cli/security.md +33 -0
- package/docs/zh-CN/cli/sessions.md +23 -0
- package/docs/zh-CN/cli/setup.md +36 -0
- package/docs/zh-CN/cli/skills.md +33 -0
- package/docs/zh-CN/cli/status.md +33 -0
- package/docs/zh-CN/cli/system.md +63 -0
- package/docs/zh-CN/cli/tui.md +30 -0
- package/docs/zh-CN/cli/uninstall.md +24 -0
- package/docs/zh-CN/cli/update.md +101 -0
- package/docs/zh-CN/cli/voicecall.md +41 -0
- package/docs/zh-CN/cli/webhooks.md +32 -0
- package/docs/zh-CN/concepts/agent-loop.md +146 -0
- package/docs/zh-CN/concepts/agent-workspace.md +219 -0
- package/docs/zh-CN/concepts/agent.md +115 -0
- package/docs/zh-CN/concepts/architecture.md +123 -0
- package/docs/zh-CN/concepts/compaction.md +67 -0
- package/docs/zh-CN/concepts/context.md +168 -0
- package/docs/zh-CN/concepts/features.md +59 -0
- package/docs/zh-CN/concepts/markdown-formatting.md +117 -0
- package/docs/zh-CN/concepts/memory.md +412 -0
- package/docs/zh-CN/concepts/messages.md +141 -0
- package/docs/zh-CN/concepts/model-failover.md +145 -0
- package/docs/zh-CN/concepts/model-providers.md +606 -0
- package/docs/zh-CN/concepts/models.md +225 -0
- package/docs/zh-CN/concepts/multi-agent.md +372 -0
- package/docs/zh-CN/concepts/oauth.md +164 -0
- package/docs/zh-CN/concepts/presence.md +99 -0
- package/docs/zh-CN/concepts/queue.md +94 -0
- package/docs/zh-CN/concepts/retry.md +76 -0
- package/docs/zh-CN/concepts/session-pruning.md +129 -0
- package/docs/zh-CN/concepts/session-tool.md +200 -0
- package/docs/zh-CN/concepts/session.md +166 -0
- package/docs/zh-CN/concepts/streaming.md +133 -0
- package/docs/zh-CN/concepts/system-prompt.md +101 -0
- package/docs/zh-CN/concepts/timezone.md +96 -0
- package/docs/zh-CN/concepts/typebox.md +284 -0
- package/docs/zh-CN/concepts/typing-indicators.md +74 -0
- package/docs/zh-CN/concepts/usage-tracking.md +42 -0
- package/docs/zh-CN/date-time.md +129 -0
- package/docs/zh-CN/debug/node-issue.md +90 -0
- package/docs/zh-CN/diagnostics/flags.md +98 -0
- package/docs/zh-CN/gateway/authentication.md +184 -0
- package/docs/zh-CN/gateway/background-process.md +100 -0
- package/docs/zh-CN/gateway/bonjour.md +174 -0
- package/docs/zh-CN/gateway/bridge-protocol.md +86 -0
- package/docs/zh-CN/gateway/cli-backends.md +213 -0
- package/docs/zh-CN/gateway/configuration-examples.md +587 -0
- package/docs/zh-CN/gateway/configuration-reference.md +3103 -0
- package/docs/zh-CN/gateway/configuration.md +640 -0
- package/docs/zh-CN/gateway/discovery.md +123 -0
- package/docs/zh-CN/gateway/doctor.md +238 -0
- package/docs/zh-CN/gateway/gateway-lock.md +41 -0
- package/docs/zh-CN/gateway/health.md +42 -0
- package/docs/zh-CN/gateway/heartbeat.md +274 -0
- package/docs/zh-CN/gateway/index.md +335 -0
- package/docs/zh-CN/gateway/local-models.md +159 -0
- package/docs/zh-CN/gateway/logging.md +114 -0
- package/docs/zh-CN/gateway/multiple-gateways.md +119 -0
- package/docs/zh-CN/gateway/network-model.md +23 -0
- package/docs/zh-CN/gateway/openai-http-api.md +125 -0
- package/docs/zh-CN/gateway/openresponses-http-api.md +317 -0
- package/docs/zh-CN/gateway/pairing.md +99 -0
- package/docs/zh-CN/gateway/protocol.md +220 -0
- package/docs/zh-CN/gateway/remote-gateway-readme.md +164 -0
- package/docs/zh-CN/gateway/remote.md +133 -0
- package/docs/zh-CN/gateway/sandbox-vs-tool-policy-vs-elevated.md +135 -0
- package/docs/zh-CN/gateway/sandboxing.md +188 -0
- package/docs/zh-CN/gateway/security/index.md +777 -0
- package/docs/zh-CN/gateway/tailscale.md +124 -0
- package/docs/zh-CN/gateway/tools-invoke-http-api.md +92 -0
- package/docs/zh-CN/gateway/troubleshooting.md +771 -0
- package/docs/zh-CN/help/debugging.md +160 -0
- package/docs/zh-CN/help/environment.md +88 -0
- package/docs/zh-CN/help/faq.md +2640 -0
- package/docs/zh-CN/help/index.md +28 -0
- package/docs/zh-CN/help/scripts.md +35 -0
- package/docs/zh-CN/help/testing.md +375 -0
- package/docs/zh-CN/help/troubleshooting.md +104 -0
- package/docs/zh-CN/index.md +186 -0
- package/docs/zh-CN/install/ansible.md +215 -0
- package/docs/zh-CN/install/bun.md +65 -0
- package/docs/zh-CN/install/development-channels.md +81 -0
- package/docs/zh-CN/install/docker.md +532 -0
- package/docs/zh-CN/install/exe-dev.md +133 -0
- package/docs/zh-CN/install/fly.md +490 -0
- package/docs/zh-CN/install/gcp.md +510 -0
- package/docs/zh-CN/install/hetzner.md +337 -0
- package/docs/zh-CN/install/index.md +235 -0
- package/docs/zh-CN/install/installer.md +422 -0
- package/docs/zh-CN/install/macos-vm.md +288 -0
- package/docs/zh-CN/install/migrating.md +199 -0
- package/docs/zh-CN/install/nix.md +99 -0
- package/docs/zh-CN/install/node.md +8 -0
- package/docs/zh-CN/install/northflank.mdx +60 -0
- package/docs/zh-CN/install/railway.mdx +106 -0
- package/docs/zh-CN/install/render.mdx +169 -0
- package/docs/zh-CN/install/uninstall.md +135 -0
- package/docs/zh-CN/install/updating.md +233 -0
- package/docs/zh-CN/logging.md +329 -0
- package/docs/zh-CN/network.md +59 -0
- package/docs/zh-CN/nodes/audio.md +120 -0
- package/docs/zh-CN/nodes/camera.md +162 -0
- package/docs/zh-CN/nodes/images.md +79 -0
- package/docs/zh-CN/nodes/index.md +348 -0
- package/docs/zh-CN/nodes/location-command.md +120 -0
- package/docs/zh-CN/nodes/media-understanding.md +380 -0
- package/docs/zh-CN/nodes/talk.md +97 -0
- package/docs/zh-CN/nodes/troubleshooting.md +8 -0
- package/docs/zh-CN/nodes/voicewake.md +72 -0
- package/docs/zh-CN/perplexity.md +102 -0
- package/docs/zh-CN/pi-dev.md +77 -0
- package/docs/zh-CN/pi.md +619 -0
- package/docs/zh-CN/platforms/android.md +155 -0
- package/docs/zh-CN/platforms/digitalocean.md +273 -0
- package/docs/zh-CN/platforms/index.md +60 -0
- package/docs/zh-CN/platforms/ios.md +114 -0
- package/docs/zh-CN/platforms/linux.md +100 -0
- package/docs/zh-CN/platforms/mac/bundled-gateway.md +75 -0
- package/docs/zh-CN/platforms/mac/canvas.md +128 -0
- package/docs/zh-CN/platforms/mac/child-process.md +73 -0
- package/docs/zh-CN/platforms/mac/dev-setup.md +109 -0
- package/docs/zh-CN/platforms/mac/health.md +41 -0
- package/docs/zh-CN/platforms/mac/icon.md +38 -0
- package/docs/zh-CN/platforms/mac/logging.md +64 -0
- package/docs/zh-CN/platforms/mac/menu-bar.md +88 -0
- package/docs/zh-CN/platforms/mac/peekaboo.md +62 -0
- package/docs/zh-CN/platforms/mac/permissions.md +46 -0
- package/docs/zh-CN/platforms/mac/remote.md +90 -0
- package/docs/zh-CN/platforms/mac/signing.md +54 -0
- package/docs/zh-CN/platforms/mac/skills.md +40 -0
- package/docs/zh-CN/platforms/mac/voice-overlay.md +67 -0
- package/docs/zh-CN/platforms/mac/voicewake.md +74 -0
- package/docs/zh-CN/platforms/mac/webchat.md +43 -0
- package/docs/zh-CN/platforms/mac/xpc.md +68 -0
- package/docs/zh-CN/platforms/macos.md +193 -0
- package/docs/zh-CN/platforms/oracle.md +310 -0
- package/docs/zh-CN/platforms/raspberry-pi.md +416 -0
- package/docs/zh-CN/platforms/windows.md +247 -0
- package/docs/zh-CN/plugins/agent-tools.md +99 -0
- package/docs/zh-CN/plugins/manifest.md +68 -0
- package/docs/zh-CN/plugins/voice-call.md +250 -0
- package/docs/zh-CN/plugins/zalouser.md +88 -0
- package/docs/zh-CN/prose.md +141 -0
- package/docs/zh-CN/providers/anthropic.md +265 -0
- package/docs/zh-CN/providers/bedrock.md +170 -0
- package/docs/zh-CN/providers/claude-max-api-proxy.md +155 -0
- package/docs/zh-CN/providers/cloudflare-ai-gateway.md +78 -0
- package/docs/zh-CN/providers/deepgram.md +97 -0
- package/docs/zh-CN/providers/github-copilot.md +67 -0
- package/docs/zh-CN/providers/glm.md +50 -0
- package/docs/zh-CN/providers/huggingface.md +216 -0
- package/docs/zh-CN/providers/index.md +69 -0
- package/docs/zh-CN/providers/kilocode.md +80 -0
- package/docs/zh-CN/providers/litellm.md +160 -0
- package/docs/zh-CN/providers/minimax.md +222 -0
- package/docs/zh-CN/providers/mistral.md +61 -0
- package/docs/zh-CN/providers/models.md +51 -0
- package/docs/zh-CN/providers/moonshot.md +182 -0
- package/docs/zh-CN/providers/nvidia.md +62 -0
- package/docs/zh-CN/providers/ollama.md +359 -0
- package/docs/zh-CN/providers/openai.md +308 -0
- package/docs/zh-CN/providers/opencode-go.md +52 -0
- package/docs/zh-CN/providers/opencode.md +71 -0
- package/docs/zh-CN/providers/openrouter.md +44 -0
- package/docs/zh-CN/providers/qianfan.md +45 -0
- package/docs/zh-CN/providers/qwen.md +55 -0
- package/docs/zh-CN/providers/sglang.md +111 -0
- package/docs/zh-CN/providers/synthetic.md +106 -0
- package/docs/zh-CN/providers/together.md +72 -0
- package/docs/zh-CN/providers/venice.md +289 -0
- package/docs/zh-CN/providers/vercel-ai-gateway.md +66 -0
- package/docs/zh-CN/providers/xiaomi.md +93 -0
- package/docs/zh-CN/providers/zai.md +53 -0
- package/docs/zh-CN/reference/AGENTS.default.md +131 -0
- package/docs/zh-CN/reference/RELEASING.md +48 -0
- package/docs/zh-CN/reference/api-usage-costs.md +141 -0
- package/docs/zh-CN/reference/credits.md +34 -0
- package/docs/zh-CN/reference/device-models.md +54 -0
- package/docs/zh-CN/reference/rpc.md +48 -0
- package/docs/zh-CN/reference/session-management-compaction.md +287 -0
- package/docs/zh-CN/reference/templates/AGENTS.dev.md +89 -0
- package/docs/zh-CN/reference/templates/AGENTS.md +225 -0
- package/docs/zh-CN/reference/templates/BOOT.md +17 -0
- package/docs/zh-CN/reference/templates/BOOTSTRAP.md +68 -0
- package/docs/zh-CN/reference/templates/HEARTBEAT.md +18 -0
- package/docs/zh-CN/reference/templates/IDENTITY.dev.md +54 -0
- package/docs/zh-CN/reference/templates/IDENTITY.md +36 -0
- package/docs/zh-CN/reference/templates/SOUL.dev.md +83 -0
- package/docs/zh-CN/reference/templates/SOUL.md +49 -0
- package/docs/zh-CN/reference/templates/TOOLS.dev.md +31 -0
- package/docs/zh-CN/reference/templates/TOOLS.md +53 -0
- package/docs/zh-CN/reference/templates/USER.dev.md +25 -0
- package/docs/zh-CN/reference/templates/USER.md +30 -0
- package/docs/zh-CN/reference/test.md +57 -0
- package/docs/zh-CN/reference/token-use.md +119 -0
- package/docs/zh-CN/reference/transcript-hygiene.md +109 -0
- package/docs/zh-CN/reference/wizard.md +242 -0
- package/docs/zh-CN/security/formal-verification.md +171 -0
- package/docs/zh-CN/start/bootstrapping.md +9 -0
- package/docs/zh-CN/start/docs-directory.md +70 -0
- package/docs/zh-CN/start/getting-started.md +143 -0
- package/docs/zh-CN/start/hubs.md +194 -0
- package/docs/zh-CN/start/lore.md +226 -0
- package/docs/zh-CN/start/onboarding-overview.md +58 -0
- package/docs/zh-CN/start/onboarding.md +105 -0
- package/docs/zh-CN/start/openclaw.md +248 -0
- package/docs/zh-CN/start/quickstart.md +88 -0
- package/docs/zh-CN/start/setup.md +153 -0
- package/docs/zh-CN/start/showcase.md +423 -0
- package/docs/zh-CN/start/wizard-cli-automation.md +222 -0
- package/docs/zh-CN/start/wizard-cli-reference.md +306 -0
- package/docs/zh-CN/start/wizard.md +132 -0
- package/docs/zh-CN/tools/agent-send.md +59 -0
- package/docs/zh-CN/tools/apply-patch.md +57 -0
- package/docs/zh-CN/tools/browser-linux-troubleshooting.md +144 -0
- package/docs/zh-CN/tools/browser-login.md +75 -0
- package/docs/zh-CN/tools/browser.md +553 -0
- package/docs/zh-CN/tools/chrome-extension.md +183 -0
- package/docs/zh-CN/tools/clawhub.md +209 -0
- package/docs/zh-CN/tools/creating-skills.md +61 -0
- package/docs/zh-CN/tools/elevated.md +64 -0
- package/docs/zh-CN/tools/exec-approvals.md +234 -0
- package/docs/zh-CN/tools/exec.md +169 -0
- package/docs/zh-CN/tools/firecrawl.md +68 -0
- package/docs/zh-CN/tools/index.md +515 -0
- package/docs/zh-CN/tools/llm-task.md +117 -0
- package/docs/zh-CN/tools/lobster.md +349 -0
- package/docs/zh-CN/tools/multi-agent-sandbox-tools.md +401 -0
- package/docs/zh-CN/tools/plugin.md +1612 -0
- package/docs/zh-CN/tools/reactions.md +29 -0
- package/docs/zh-CN/tools/skills-config.md +78 -0
- package/docs/zh-CN/tools/skills.md +279 -0
- package/docs/zh-CN/tools/slash-commands.md +205 -0
- package/docs/zh-CN/tools/subagents.md +167 -0
- package/docs/zh-CN/tools/thinking.md +80 -0
- package/docs/zh-CN/tools/web.md +289 -0
- package/docs/zh-CN/tts.md +375 -0
- package/docs/zh-CN/vps.md +47 -0
- package/docs/zh-CN/web/control-ui.md +191 -0
- package/docs/zh-CN/web/dashboard.md +53 -0
- package/docs/zh-CN/web/index.md +118 -0
- package/docs/zh-CN/web/tui.md +166 -0
- package/docs/zh-CN/web/webchat.md +56 -0
- package/package.json +841 -0
- package/quantumclaw.mjs +135 -0
- package/skills/1password/SKILL.md +70 -0
- package/skills/1password/references/cli-examples.md +29 -0
- package/skills/1password/references/get-started.md +17 -0
- package/skills/apple-notes/SKILL.md +77 -0
- package/skills/apple-reminders/SKILL.md +118 -0
- package/skills/bear-notes/SKILL.md +107 -0
- package/skills/blogwatcher/SKILL.md +69 -0
- package/skills/blucli/SKILL.md +47 -0
- package/skills/bluebubbles/SKILL.md +131 -0
- package/skills/camsnap/SKILL.md +45 -0
- package/skills/canvas/SKILL.md +198 -0
- package/skills/clawhub/SKILL.md +77 -0
- package/skills/coding-agent/SKILL.md +295 -0
- package/skills/discord/SKILL.md +197 -0
- package/skills/eightctl/SKILL.md +50 -0
- package/skills/gemini/SKILL.md +43 -0
- package/skills/gh-issues/SKILL.md +865 -0
- package/skills/gifgrep/SKILL.md +79 -0
- package/skills/github/SKILL.md +163 -0
- package/skills/gog/SKILL.md +116 -0
- package/skills/goplaces/SKILL.md +52 -0
- package/skills/healthcheck/SKILL.md +245 -0
- package/skills/himalaya/SKILL.md +257 -0
- package/skills/himalaya/references/configuration.md +184 -0
- package/skills/himalaya/references/message-composition.md +199 -0
- package/skills/imsg/SKILL.md +122 -0
- package/skills/mcporter/SKILL.md +61 -0
- package/skills/model-usage/SKILL.md +69 -0
- package/skills/model-usage/references/codexbar-cli.md +33 -0
- package/skills/model-usage/scripts/model_usage.py +320 -0
- package/skills/model-usage/scripts/test_model_usage.py +40 -0
- package/skills/nano-pdf/SKILL.md +38 -0
- package/skills/node-connect/SKILL.md +142 -0
- package/skills/notion/SKILL.md +174 -0
- package/skills/obsidian/SKILL.md +81 -0
- package/skills/openai-image-gen/SKILL.md +92 -0
- package/skills/openai-image-gen/scripts/gen.py +328 -0
- package/skills/openai-image-gen/scripts/test_gen.py +140 -0
- package/skills/openai-whisper/SKILL.md +38 -0
- package/skills/openai-whisper-api/SKILL.md +52 -0
- package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
- package/skills/openhue/SKILL.md +112 -0
- package/skills/oracle/SKILL.md +125 -0
- package/skills/ordercli/SKILL.md +78 -0
- package/skills/peekaboo/SKILL.md +190 -0
- package/skills/sag/SKILL.md +87 -0
- package/skills/session-logs/SKILL.md +115 -0
- package/skills/sherpa-onnx-tts/SKILL.md +103 -0
- package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
- package/skills/skill-creator/SKILL.md +372 -0
- package/skills/skill-creator/license.txt +202 -0
- package/skills/skill-creator/scripts/init_skill.py +378 -0
- package/skills/skill-creator/scripts/package_skill.py +139 -0
- package/skills/skill-creator/scripts/quick_validate.py +159 -0
- package/skills/skill-creator/scripts/test_package_skill.py +160 -0
- package/skills/skill-creator/scripts/test_quick_validate.py +72 -0
- package/skills/slack/SKILL.md +144 -0
- package/skills/songsee/SKILL.md +49 -0
- package/skills/sonoscli/SKILL.md +65 -0
- package/skills/spotify-player/SKILL.md +64 -0
- package/skills/summarize/SKILL.md +87 -0
- package/skills/things-mac/SKILL.md +86 -0
- package/skills/tmux/SKILL.md +153 -0
- package/skills/tmux/scripts/find-sessions.sh +112 -0
- package/skills/tmux/scripts/wait-for-text.sh +83 -0
- package/skills/trello/SKILL.md +95 -0
- package/skills/video-frames/SKILL.md +46 -0
- package/skills/video-frames/scripts/frame.sh +81 -0
- package/skills/voice-call/SKILL.md +45 -0
- package/skills/wacli/SKILL.md +72 -0
- package/skills/weather/SKILL.md +112 -0
- package/skills/xurl/SKILL.md +461 -0
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Session management rules, keys, and persistence for chats"
|
|
3
|
+
read_when:
|
|
4
|
+
- Modifying session handling or storage
|
|
5
|
+
title: "Session Management"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Session Management
|
|
9
|
+
|
|
10
|
+
QuantumClaw treats **one direct-chat session per agent** as primary. Direct chats collapse to `agent:<agentId>:<mainKey>` (default `main`), while group/channel chats get their own keys. `session.mainKey` is honored.
|
|
11
|
+
|
|
12
|
+
Use `session.dmScope` to control how **direct messages** are grouped:
|
|
13
|
+
|
|
14
|
+
- `main` (default): all DMs share the main session for continuity.
|
|
15
|
+
- `per-peer`: isolate by sender id across channels.
|
|
16
|
+
- `per-channel-peer`: isolate by channel + sender (recommended for multi-user inboxes).
|
|
17
|
+
- `per-account-channel-peer`: isolate by account + channel + sender (recommended for multi-account inboxes).
|
|
18
|
+
Use `session.identityLinks` to map provider-prefixed peer ids to a canonical identity so the same person shares a DM session across channels when using `per-peer`, `per-channel-peer`, or `per-account-channel-peer`.
|
|
19
|
+
|
|
20
|
+
## Secure DM mode (recommended for multi-user setups)
|
|
21
|
+
|
|
22
|
+
> **Security Warning:** If your agent can receive DMs from **multiple people**, you should strongly consider enabling secure DM mode. Without it, all users share the same conversation context, which can leak private information between users.
|
|
23
|
+
|
|
24
|
+
**Example of the problem with default settings:**
|
|
25
|
+
|
|
26
|
+
- Alice (`<SENDER_A>`) messages your agent about a private topic (for example, a medical appointment)
|
|
27
|
+
- Bob (`<SENDER_B>`) messages your agent asking "What were we talking about?"
|
|
28
|
+
- Because both DMs share the same session, the model may answer Bob using Alice's prior context.
|
|
29
|
+
|
|
30
|
+
**The fix:** Set `dmScope` to isolate sessions per user:
|
|
31
|
+
|
|
32
|
+
```json5
|
|
33
|
+
// ~/.quantumclaw/quantumclaw.json
|
|
34
|
+
{
|
|
35
|
+
session: {
|
|
36
|
+
// Secure DM mode: isolate DM context per channel + sender.
|
|
37
|
+
dmScope: "per-channel-peer",
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**When to enable this:**
|
|
43
|
+
|
|
44
|
+
- You have pairing approvals for more than one sender
|
|
45
|
+
- You use a DM allowlist with multiple entries
|
|
46
|
+
- You set `dmPolicy: "open"`
|
|
47
|
+
- Multiple phone numbers or accounts can message your agent
|
|
48
|
+
|
|
49
|
+
Notes:
|
|
50
|
+
|
|
51
|
+
- Default is `dmScope: "main"` for continuity (all DMs share the main session). This is fine for single-user setups.
|
|
52
|
+
- Local CLI onboarding writes `session.dmScope: "per-channel-peer"` by default when unset (existing explicit values are preserved).
|
|
53
|
+
- For multi-account inboxes on the same channel, prefer `per-account-channel-peer`.
|
|
54
|
+
- If the same person contacts you on multiple channels, use `session.identityLinks` to collapse their DM sessions into one canonical identity.
|
|
55
|
+
- You can verify your DM settings with `quantumclaw security audit` (see [security](/cli/security)).
|
|
56
|
+
|
|
57
|
+
## Gateway is the source of truth
|
|
58
|
+
|
|
59
|
+
All session state is **owned by the gateway** (the “master” QuantumClaw). UI clients (macOS app, WebChat, etc.) must query the gateway for session lists and token counts instead of reading local files.
|
|
60
|
+
|
|
61
|
+
- In **remote mode**, the session store you care about lives on the remote gateway host, not your Mac.
|
|
62
|
+
- Token counts shown in UIs come from the gateway’s store fields (`inputTokens`, `outputTokens`, `totalTokens`, `contextTokens`). Clients do not parse JSONL transcripts to “fix up” totals.
|
|
63
|
+
|
|
64
|
+
## Where state lives
|
|
65
|
+
|
|
66
|
+
- On the **gateway host**:
|
|
67
|
+
- Store file: `~/.quantumclaw/agents/<agentId>/sessions/sessions.json` (per agent).
|
|
68
|
+
- Transcripts: `~/.quantumclaw/agents/<agentId>/sessions/<SessionId>.jsonl` (Telegram topic sessions use `.../<SessionId>-topic-<threadId>.jsonl`).
|
|
69
|
+
- The store is a map `sessionKey -> { sessionId, updatedAt, ... }`. Deleting entries is safe; they are recreated on demand.
|
|
70
|
+
- Group entries may include `displayName`, `channel`, `subject`, `room`, and `space` to label sessions in UIs.
|
|
71
|
+
- Session entries include `origin` metadata (label + routing hints) so UIs can explain where a session came from.
|
|
72
|
+
- QuantumClaw does **not** read legacy Pi/Tau session folders.
|
|
73
|
+
|
|
74
|
+
## Maintenance
|
|
75
|
+
|
|
76
|
+
QuantumClaw applies session-store maintenance to keep `sessions.json` and transcript artifacts bounded over time.
|
|
77
|
+
|
|
78
|
+
### Defaults
|
|
79
|
+
|
|
80
|
+
- `session.maintenance.mode`: `warn`
|
|
81
|
+
- `session.maintenance.pruneAfter`: `30d`
|
|
82
|
+
- `session.maintenance.maxEntries`: `500`
|
|
83
|
+
- `session.maintenance.rotateBytes`: `10mb`
|
|
84
|
+
- `session.maintenance.resetArchiveRetention`: defaults to `pruneAfter` (`30d`)
|
|
85
|
+
- `session.maintenance.maxDiskBytes`: unset (disabled)
|
|
86
|
+
- `session.maintenance.highWaterBytes`: defaults to `80%` of `maxDiskBytes` when budgeting is enabled
|
|
87
|
+
|
|
88
|
+
### How it works
|
|
89
|
+
|
|
90
|
+
Maintenance runs during session-store writes, and you can trigger it on demand with `quantumclaw sessions cleanup`.
|
|
91
|
+
|
|
92
|
+
- `mode: "warn"`: reports what would be evicted but does not mutate entries/transcripts.
|
|
93
|
+
- `mode: "enforce"`: applies cleanup in this order:
|
|
94
|
+
1. prune stale entries older than `pruneAfter`
|
|
95
|
+
2. cap entry count to `maxEntries` (oldest first)
|
|
96
|
+
3. archive transcript files for removed entries that are no longer referenced
|
|
97
|
+
4. purge old `*.deleted.<timestamp>` and `*.reset.<timestamp>` archives by retention policy
|
|
98
|
+
5. rotate `sessions.json` when it exceeds `rotateBytes`
|
|
99
|
+
6. if `maxDiskBytes` is set, enforce disk budget toward `highWaterBytes` (oldest artifacts first, then oldest sessions)
|
|
100
|
+
|
|
101
|
+
### Performance caveat for large stores
|
|
102
|
+
|
|
103
|
+
Large session stores are common in high-volume setups. Maintenance work is write-path work, so very large stores can increase write latency.
|
|
104
|
+
|
|
105
|
+
What increases cost most:
|
|
106
|
+
|
|
107
|
+
- very high `session.maintenance.maxEntries` values
|
|
108
|
+
- long `pruneAfter` windows that keep stale entries around
|
|
109
|
+
- many transcript/archive artifacts in `~/.quantumclaw/agents/<agentId>/sessions/`
|
|
110
|
+
- enabling disk budgets (`maxDiskBytes`) without reasonable pruning/cap limits
|
|
111
|
+
|
|
112
|
+
What to do:
|
|
113
|
+
|
|
114
|
+
- use `mode: "enforce"` in production so growth is bounded automatically
|
|
115
|
+
- set both time and count limits (`pruneAfter` + `maxEntries`), not just one
|
|
116
|
+
- set `maxDiskBytes` + `highWaterBytes` for hard upper bounds in large deployments
|
|
117
|
+
- keep `highWaterBytes` meaningfully below `maxDiskBytes` (default is 80%)
|
|
118
|
+
- run `quantumclaw sessions cleanup --dry-run --json` after config changes to verify projected impact before enforcing
|
|
119
|
+
- for frequent active sessions, pass `--active-key` when running manual cleanup
|
|
120
|
+
|
|
121
|
+
### Customize examples
|
|
122
|
+
|
|
123
|
+
Use a conservative enforce policy:
|
|
124
|
+
|
|
125
|
+
```json5
|
|
126
|
+
{
|
|
127
|
+
session: {
|
|
128
|
+
maintenance: {
|
|
129
|
+
mode: "enforce",
|
|
130
|
+
pruneAfter: "45d",
|
|
131
|
+
maxEntries: 800,
|
|
132
|
+
rotateBytes: "20mb",
|
|
133
|
+
resetArchiveRetention: "14d",
|
|
134
|
+
},
|
|
135
|
+
},
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Enable a hard disk budget for the sessions directory:
|
|
140
|
+
|
|
141
|
+
```json5
|
|
142
|
+
{
|
|
143
|
+
session: {
|
|
144
|
+
maintenance: {
|
|
145
|
+
mode: "enforce",
|
|
146
|
+
maxDiskBytes: "1gb",
|
|
147
|
+
highWaterBytes: "800mb",
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
}
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Tune for larger installs (example):
|
|
154
|
+
|
|
155
|
+
```json5
|
|
156
|
+
{
|
|
157
|
+
session: {
|
|
158
|
+
maintenance: {
|
|
159
|
+
mode: "enforce",
|
|
160
|
+
pruneAfter: "14d",
|
|
161
|
+
maxEntries: 2000,
|
|
162
|
+
rotateBytes: "25mb",
|
|
163
|
+
maxDiskBytes: "2gb",
|
|
164
|
+
highWaterBytes: "1.6gb",
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Preview or force maintenance from CLI:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
quantumclaw sessions cleanup --dry-run
|
|
174
|
+
quantumclaw sessions cleanup --enforce
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Session pruning
|
|
178
|
+
|
|
179
|
+
QuantumClaw trims **old tool results** from the in-memory context right before LLM calls by default.
|
|
180
|
+
This does **not** rewrite JSONL history. See [/concepts/session-pruning](/concepts/session-pruning).
|
|
181
|
+
|
|
182
|
+
## Pre-compaction memory flush
|
|
183
|
+
|
|
184
|
+
When a session nears auto-compaction, QuantumClaw can run a **silent memory flush**
|
|
185
|
+
turn that reminds the model to write durable notes to disk. This only runs when
|
|
186
|
+
the workspace is writable. See [Memory](/concepts/memory) and
|
|
187
|
+
[Compaction](/concepts/compaction).
|
|
188
|
+
|
|
189
|
+
## Mapping transports → session keys
|
|
190
|
+
|
|
191
|
+
- Direct chats follow `session.dmScope` (default `main`).
|
|
192
|
+
- `main`: `agent:<agentId>:<mainKey>` (continuity across devices/channels).
|
|
193
|
+
- Multiple phone numbers and channels can map to the same agent main key; they act as transports into one conversation.
|
|
194
|
+
- `per-peer`: `agent:<agentId>:direct:<peerId>`.
|
|
195
|
+
- `per-channel-peer`: `agent:<agentId>:<channel>:direct:<peerId>`.
|
|
196
|
+
- `per-account-channel-peer`: `agent:<agentId>:<channel>:<accountId>:direct:<peerId>` (accountId defaults to `default`).
|
|
197
|
+
- If `session.identityLinks` matches a provider-prefixed peer id (for example `telegram:123`), the canonical key replaces `<peerId>` so the same person shares a session across channels.
|
|
198
|
+
- Group chats isolate state: `agent:<agentId>:<channel>:group:<id>` (rooms/channels use `agent:<agentId>:<channel>:channel:<id>`).
|
|
199
|
+
- Telegram forum topics append `:topic:<threadId>` to the group id for isolation.
|
|
200
|
+
- Legacy `group:<id>` keys are still recognized for migration.
|
|
201
|
+
- Inbound contexts may still use `group:<id>`; the channel is inferred from `Provider` and normalized to the canonical `agent:<agentId>:<channel>:group:<id>` form.
|
|
202
|
+
- Other sources:
|
|
203
|
+
- Cron jobs: `cron:<job.id>` (isolated) or custom `session:<custom-id>` (persistent)
|
|
204
|
+
- Webhooks: `hook:<uuid>` (unless explicitly set by the hook)
|
|
205
|
+
- Node runs: `node-<nodeId>`
|
|
206
|
+
|
|
207
|
+
## Lifecycle
|
|
208
|
+
|
|
209
|
+
- Reset policy: sessions are reused until they expire, and expiry is evaluated on the next inbound message.
|
|
210
|
+
- Daily reset: defaults to **4:00 AM local time on the gateway host**. A session is stale once its last update is earlier than the most recent daily reset time.
|
|
211
|
+
- Idle reset (optional): `idleMinutes` adds a sliding idle window. When both daily and idle resets are configured, **whichever expires first** forces a new session.
|
|
212
|
+
- Legacy idle-only: if you set `session.idleMinutes` without any `session.reset`/`resetByType` config, QuantumClaw stays in idle-only mode for backward compatibility.
|
|
213
|
+
- Per-type overrides (optional): `resetByType` lets you override the policy for `direct`, `group`, and `thread` sessions (thread = Slack/Discord threads, Telegram topics, Matrix threads when provided by the connector).
|
|
214
|
+
- Per-channel overrides (optional): `resetByChannel` overrides the reset policy for a channel (applies to all session types for that channel and takes precedence over `reset`/`resetByType`).
|
|
215
|
+
- Reset triggers: exact `/new` or `/reset` (plus any extras in `resetTriggers`) start a fresh session id and pass the remainder of the message through. `/new <model>` accepts a model alias, `provider/model`, or provider name (fuzzy match) to set the new session model. If `/new` or `/reset` is sent alone, QuantumClaw runs a short “hello” greeting turn to confirm the reset.
|
|
216
|
+
- Manual reset: delete specific keys from the store or remove the JSONL transcript; the next message recreates them.
|
|
217
|
+
- Isolated cron jobs always mint a fresh `sessionId` per run (no idle reuse).
|
|
218
|
+
|
|
219
|
+
## Send policy (optional)
|
|
220
|
+
|
|
221
|
+
Block delivery for specific session types without listing individual ids.
|
|
222
|
+
|
|
223
|
+
```json5
|
|
224
|
+
{
|
|
225
|
+
session: {
|
|
226
|
+
sendPolicy: {
|
|
227
|
+
rules: [
|
|
228
|
+
{ action: "deny", match: { channel: "discord", chatType: "group" } },
|
|
229
|
+
{ action: "deny", match: { keyPrefix: "cron:" } },
|
|
230
|
+
// Match the raw session key (including the `agent:<id>:` prefix).
|
|
231
|
+
{ action: "deny", match: { rawKeyPrefix: "agent:main:discord:" } },
|
|
232
|
+
],
|
|
233
|
+
default: "allow",
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Runtime override (owner only):
|
|
240
|
+
|
|
241
|
+
- `/send on` → allow for this session
|
|
242
|
+
- `/send off` → deny for this session
|
|
243
|
+
- `/send inherit` → clear override and use config rules
|
|
244
|
+
Send these as standalone messages so they register.
|
|
245
|
+
|
|
246
|
+
## Configuration (optional rename example)
|
|
247
|
+
|
|
248
|
+
```json5
|
|
249
|
+
// ~/.quantumclaw/quantumclaw.json
|
|
250
|
+
{
|
|
251
|
+
session: {
|
|
252
|
+
scope: "per-sender", // keep group keys separate
|
|
253
|
+
dmScope: "main", // DM continuity (set per-channel-peer/per-account-channel-peer for shared inboxes)
|
|
254
|
+
identityLinks: {
|
|
255
|
+
alice: ["telegram:123456789", "discord:987654321012345678"],
|
|
256
|
+
},
|
|
257
|
+
reset: {
|
|
258
|
+
// Defaults: mode=daily, atHour=4 (gateway host local time).
|
|
259
|
+
// If you also set idleMinutes, whichever expires first wins.
|
|
260
|
+
mode: "daily",
|
|
261
|
+
atHour: 4,
|
|
262
|
+
idleMinutes: 120,
|
|
263
|
+
},
|
|
264
|
+
resetByType: {
|
|
265
|
+
thread: { mode: "daily", atHour: 4 },
|
|
266
|
+
direct: { mode: "idle", idleMinutes: 240 },
|
|
267
|
+
group: { mode: "idle", idleMinutes: 120 },
|
|
268
|
+
},
|
|
269
|
+
resetByChannel: {
|
|
270
|
+
discord: { mode: "idle", idleMinutes: 10080 },
|
|
271
|
+
},
|
|
272
|
+
resetTriggers: ["/new", "/reset"],
|
|
273
|
+
store: "~/.quantumclaw/agents/{agentId}/sessions/sessions.json",
|
|
274
|
+
mainKey: "main",
|
|
275
|
+
},
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## Inspecting
|
|
280
|
+
|
|
281
|
+
- `quantumclaw status` — shows store path and recent sessions.
|
|
282
|
+
- `quantumclaw sessions --json` — dumps every entry (filter with `--active <minutes>`).
|
|
283
|
+
- `quantumclaw gateway call sessions.list --params '{}'` — fetch sessions from the running gateway (use `--url`/`--token` for remote gateway access).
|
|
284
|
+
- Send `/status` as a standalone message in chat to see whether the agent is reachable, how much of the session context is used, current thinking/fast/verbose toggles, and when your WhatsApp web creds were last refreshed (helps spot relink needs).
|
|
285
|
+
- Send `/context list` or `/context detail` to see what’s in the system prompt and injected workspace files (and the biggest context contributors).
|
|
286
|
+
- Send `/stop` (or standalone abort phrases like `stop`, `stop action`, `stop run`, `stop quantumclaw`) to abort the current run, clear queued followups for that session, and stop any sub-agent runs spawned from it (the reply includes the stopped count).
|
|
287
|
+
- Send `/compact` (optional instructions) as a standalone message to summarize older context and free up window space. See [/concepts/compaction](/concepts/compaction).
|
|
288
|
+
- JSONL transcripts can be opened directly to review full turns.
|
|
289
|
+
|
|
290
|
+
## Tips
|
|
291
|
+
|
|
292
|
+
- Keep the primary key dedicated to 1:1 traffic; let groups keep their own keys.
|
|
293
|
+
- When automating cleanup, delete individual keys instead of the whole store to preserve context elsewhere.
|
|
294
|
+
|
|
295
|
+
## Session origin metadata
|
|
296
|
+
|
|
297
|
+
Each session entry records where it came from (best-effort) in `origin`:
|
|
298
|
+
|
|
299
|
+
- `label`: human label (resolved from conversation label + group subject/channel)
|
|
300
|
+
- `provider`: normalized channel id (including extensions)
|
|
301
|
+
- `from`/`to`: raw routing ids from the inbound envelope
|
|
302
|
+
- `accountId`: provider account id (when multi-account)
|
|
303
|
+
- `threadId`: thread/topic id when the channel supports it
|
|
304
|
+
The origin fields are populated for direct messages, channels, and groups. If a
|
|
305
|
+
connector only updates delivery routing (for example, to keep a DM main session
|
|
306
|
+
fresh), it should still provide inbound context so the session keeps its
|
|
307
|
+
explainer metadata. Extensions can do this by sending `ConversationLabel`,
|
|
308
|
+
`GroupSubject`, `GroupChannel`, `GroupSpace`, and `SenderName` in the inbound
|
|
309
|
+
context and calling `recordSessionMetaFromInbound` (or passing the same context
|
|
310
|
+
to `updateLastRoute`).
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Streaming + chunking behavior (block replies, channel preview streaming, mode mapping)"
|
|
3
|
+
read_when:
|
|
4
|
+
- Explaining how streaming or chunking works on channels
|
|
5
|
+
- Changing block streaming or channel chunking behavior
|
|
6
|
+
- Debugging duplicate/early block replies or channel preview streaming
|
|
7
|
+
title: "Streaming and Chunking"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Streaming + chunking
|
|
11
|
+
|
|
12
|
+
QuantumClaw has two separate streaming layers:
|
|
13
|
+
|
|
14
|
+
- **Block streaming (channels):** emit completed **blocks** as the assistant writes. These are normal channel messages (not token deltas).
|
|
15
|
+
- **Preview streaming (Telegram/Discord/Slack):** update a temporary **preview message** while generating.
|
|
16
|
+
|
|
17
|
+
There is **no true token-delta streaming** to channel messages today. Preview streaming is message-based (send + edits/appends).
|
|
18
|
+
|
|
19
|
+
## Block streaming (channel messages)
|
|
20
|
+
|
|
21
|
+
Block streaming sends assistant output in coarse chunks as it becomes available.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
Model output
|
|
25
|
+
└─ text_delta/events
|
|
26
|
+
├─ (blockStreamingBreak=text_end)
|
|
27
|
+
│ └─ chunker emits blocks as buffer grows
|
|
28
|
+
└─ (blockStreamingBreak=message_end)
|
|
29
|
+
└─ chunker flushes at message_end
|
|
30
|
+
└─ channel send (block replies)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Legend:
|
|
34
|
+
|
|
35
|
+
- `text_delta/events`: model stream events (may be sparse for non-streaming models).
|
|
36
|
+
- `chunker`: `EmbeddedBlockChunker` applying min/max bounds + break preference.
|
|
37
|
+
- `channel send`: actual outbound messages (block replies).
|
|
38
|
+
|
|
39
|
+
**Controls:**
|
|
40
|
+
|
|
41
|
+
- `agents.defaults.blockStreamingDefault`: `"on"`/`"off"` (default off).
|
|
42
|
+
- Channel overrides: `*.blockStreaming` (and per-account variants) to force `"on"`/`"off"` per channel.
|
|
43
|
+
- `agents.defaults.blockStreamingBreak`: `"text_end"` or `"message_end"`.
|
|
44
|
+
- `agents.defaults.blockStreamingChunk`: `{ minChars, maxChars, breakPreference? }`.
|
|
45
|
+
- `agents.defaults.blockStreamingCoalesce`: `{ minChars?, maxChars?, idleMs? }` (merge streamed blocks before send).
|
|
46
|
+
- Channel hard cap: `*.textChunkLimit` (e.g., `channels.whatsapp.textChunkLimit`).
|
|
47
|
+
- Channel chunk mode: `*.chunkMode` (`length` default, `newline` splits on blank lines (paragraph boundaries) before length chunking).
|
|
48
|
+
- Discord soft cap: `channels.discord.maxLinesPerMessage` (default 17) splits tall replies to avoid UI clipping.
|
|
49
|
+
|
|
50
|
+
**Boundary semantics:**
|
|
51
|
+
|
|
52
|
+
- `text_end`: stream blocks as soon as chunker emits; flush on each `text_end`.
|
|
53
|
+
- `message_end`: wait until assistant message finishes, then flush buffered output.
|
|
54
|
+
|
|
55
|
+
`message_end` still uses the chunker if the buffered text exceeds `maxChars`, so it can emit multiple chunks at the end.
|
|
56
|
+
|
|
57
|
+
## Chunking algorithm (low/high bounds)
|
|
58
|
+
|
|
59
|
+
Block chunking is implemented by `EmbeddedBlockChunker`:
|
|
60
|
+
|
|
61
|
+
- **Low bound:** don’t emit until buffer >= `minChars` (unless forced).
|
|
62
|
+
- **High bound:** prefer splits before `maxChars`; if forced, split at `maxChars`.
|
|
63
|
+
- **Break preference:** `paragraph` → `newline` → `sentence` → `whitespace` → hard break.
|
|
64
|
+
- **Code fences:** never split inside fences; when forced at `maxChars`, close + reopen the fence to keep Markdown valid.
|
|
65
|
+
|
|
66
|
+
`maxChars` is clamped to the channel `textChunkLimit`, so you can’t exceed per-channel caps.
|
|
67
|
+
|
|
68
|
+
## Coalescing (merge streamed blocks)
|
|
69
|
+
|
|
70
|
+
When block streaming is enabled, QuantumClaw can **merge consecutive block chunks**
|
|
71
|
+
before sending them out. This reduces “single-line spam” while still providing
|
|
72
|
+
progressive output.
|
|
73
|
+
|
|
74
|
+
- Coalescing waits for **idle gaps** (`idleMs`) before flushing.
|
|
75
|
+
- Buffers are capped by `maxChars` and will flush if they exceed it.
|
|
76
|
+
- `minChars` prevents tiny fragments from sending until enough text accumulates
|
|
77
|
+
(final flush always sends remaining text).
|
|
78
|
+
- Joiner is derived from `blockStreamingChunk.breakPreference`
|
|
79
|
+
(`paragraph` → `\n\n`, `newline` → `\n`, `sentence` → space).
|
|
80
|
+
- Channel overrides are available via `*.blockStreamingCoalesce` (including per-account configs).
|
|
81
|
+
- Default coalesce `minChars` is bumped to 1500 for Signal/Slack/Discord unless overridden.
|
|
82
|
+
|
|
83
|
+
## Human-like pacing between blocks
|
|
84
|
+
|
|
85
|
+
When block streaming is enabled, you can add a **randomized pause** between
|
|
86
|
+
block replies (after the first block). This makes multi-bubble responses feel
|
|
87
|
+
more natural.
|
|
88
|
+
|
|
89
|
+
- Config: `agents.defaults.humanDelay` (override per agent via `agents.list[].humanDelay`).
|
|
90
|
+
- Modes: `off` (default), `natural` (800–2500ms), `custom` (`minMs`/`maxMs`).
|
|
91
|
+
- Applies only to **block replies**, not final replies or tool summaries.
|
|
92
|
+
|
|
93
|
+
## "Stream chunks or everything"
|
|
94
|
+
|
|
95
|
+
This maps to:
|
|
96
|
+
|
|
97
|
+
- **Stream chunks:** `blockStreamingDefault: "on"` + `blockStreamingBreak: "text_end"` (emit as you go). Non-Telegram channels also need `*.blockStreaming: true`.
|
|
98
|
+
- **Stream everything at end:** `blockStreamingBreak: "message_end"` (flush once, possibly multiple chunks if very long).
|
|
99
|
+
- **No block streaming:** `blockStreamingDefault: "off"` (only final reply).
|
|
100
|
+
|
|
101
|
+
**Channel note:** Block streaming is **off unless**
|
|
102
|
+
`*.blockStreaming` is explicitly set to `true`. Channels can stream a live preview
|
|
103
|
+
(`channels.<channel>.streaming`) without block replies.
|
|
104
|
+
|
|
105
|
+
Config location reminder: the `blockStreaming*` defaults live under
|
|
106
|
+
`agents.defaults`, not the root config.
|
|
107
|
+
|
|
108
|
+
## Preview streaming modes
|
|
109
|
+
|
|
110
|
+
Canonical key: `channels.<channel>.streaming`
|
|
111
|
+
|
|
112
|
+
Modes:
|
|
113
|
+
|
|
114
|
+
- `off`: disable preview streaming.
|
|
115
|
+
- `partial`: single preview that is replaced with latest text.
|
|
116
|
+
- `block`: preview updates in chunked/appended steps.
|
|
117
|
+
- `progress`: progress/status preview during generation, final answer at completion.
|
|
118
|
+
|
|
119
|
+
### Channel mapping
|
|
120
|
+
|
|
121
|
+
| Channel | `off` | `partial` | `block` | `progress` |
|
|
122
|
+
| -------- | ----- | --------- | ------- | ----------------- |
|
|
123
|
+
| Telegram | ✅ | ✅ | ✅ | maps to `partial` |
|
|
124
|
+
| Discord | ✅ | ✅ | ✅ | maps to `partial` |
|
|
125
|
+
| Slack | ✅ | ✅ | ✅ | ✅ |
|
|
126
|
+
|
|
127
|
+
Slack-only:
|
|
128
|
+
|
|
129
|
+
- `channels.slack.nativeStreaming` toggles Slack native streaming API calls when `streaming=partial` (default: `true`).
|
|
130
|
+
|
|
131
|
+
Legacy key migration:
|
|
132
|
+
|
|
133
|
+
- Telegram: `streamMode` + boolean `streaming` auto-migrate to `streaming` enum.
|
|
134
|
+
- Discord: `streamMode` + boolean `streaming` auto-migrate to `streaming` enum.
|
|
135
|
+
- Slack: `streamMode` auto-migrates to `streaming` enum; boolean `streaming` auto-migrates to `nativeStreaming`.
|
|
136
|
+
|
|
137
|
+
### Runtime behavior
|
|
138
|
+
|
|
139
|
+
Telegram:
|
|
140
|
+
|
|
141
|
+
- Uses `sendMessage` + `editMessageText` preview updates across DMs and group/topics.
|
|
142
|
+
- Preview streaming is skipped when Telegram block streaming is explicitly enabled (to avoid double-streaming).
|
|
143
|
+
- `/reasoning stream` can write reasoning to preview.
|
|
144
|
+
|
|
145
|
+
Discord:
|
|
146
|
+
|
|
147
|
+
- Uses send + edit preview messages.
|
|
148
|
+
- `block` mode uses draft chunking (`draftChunk`).
|
|
149
|
+
- Preview streaming is skipped when Discord block streaming is explicitly enabled.
|
|
150
|
+
|
|
151
|
+
Slack:
|
|
152
|
+
|
|
153
|
+
- `partial` can use Slack native streaming (`chat.startStream`/`append`/`stop`) when available.
|
|
154
|
+
- `block` uses append-style draft previews.
|
|
155
|
+
- `progress` uses status preview text, then final answer.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "What the QuantumClaw system prompt contains and how it is assembled"
|
|
3
|
+
read_when:
|
|
4
|
+
- Editing system prompt text, tools list, or time/heartbeat sections
|
|
5
|
+
- Changing workspace bootstrap or skills injection behavior
|
|
6
|
+
title: "System Prompt"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# System Prompt
|
|
10
|
+
|
|
11
|
+
QuantumClaw builds a custom system prompt for every agent run. The prompt is **QuantumClaw-owned** and does not use the pi-coding-agent default prompt.
|
|
12
|
+
|
|
13
|
+
The prompt is assembled by QuantumClaw and injected into each agent run.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
The prompt is intentionally compact and uses fixed sections:
|
|
18
|
+
|
|
19
|
+
- **Tooling**: current tool list + short descriptions.
|
|
20
|
+
- **Safety**: short guardrail reminder to avoid power-seeking behavior or bypassing oversight.
|
|
21
|
+
- **Skills** (when available): tells the model how to load skill instructions on demand.
|
|
22
|
+
- **QuantumClaw Self-Update**: how to run `config.apply` and `update.run`.
|
|
23
|
+
- **Workspace**: working directory (`agents.defaults.workspace`).
|
|
24
|
+
- **Documentation**: local path to QuantumClaw docs (repo or npm package) and when to read them.
|
|
25
|
+
- **Workspace Files (injected)**: indicates bootstrap files are included below.
|
|
26
|
+
- **Sandbox** (when enabled): indicates sandboxed runtime, sandbox paths, and whether elevated exec is available.
|
|
27
|
+
- **Current Date & Time**: user-local time, timezone, and time format.
|
|
28
|
+
- **Reply Tags**: optional reply tag syntax for supported providers.
|
|
29
|
+
- **Heartbeats**: heartbeat prompt and ack behavior.
|
|
30
|
+
- **Runtime**: host, OS, node, model, repo root (when detected), thinking level (one line).
|
|
31
|
+
- **Reasoning**: current visibility level + /reasoning toggle hint.
|
|
32
|
+
|
|
33
|
+
Safety guardrails in the system prompt are advisory. They guide model behavior but do not enforce policy. Use tool policy, exec approvals, sandboxing, and channel allowlists for hard enforcement; operators can disable these by design.
|
|
34
|
+
|
|
35
|
+
## Prompt modes
|
|
36
|
+
|
|
37
|
+
QuantumClaw can render smaller system prompts for sub-agents. The runtime sets a
|
|
38
|
+
`promptMode` for each run (not a user-facing config):
|
|
39
|
+
|
|
40
|
+
- `full` (default): includes all sections above.
|
|
41
|
+
- `minimal`: used for sub-agents; omits **Skills**, **Memory Recall**, **QuantumClaw
|
|
42
|
+
Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**,
|
|
43
|
+
**Messaging**, **Silent Replies**, and **Heartbeats**. Tooling, **Safety**,
|
|
44
|
+
Workspace, Sandbox, Current Date & Time (when known), Runtime, and injected
|
|
45
|
+
context stay available.
|
|
46
|
+
- `none`: returns only the base identity line.
|
|
47
|
+
|
|
48
|
+
When `promptMode=minimal`, extra injected prompts are labeled **Subagent
|
|
49
|
+
Context** instead of **Group Chat Context**.
|
|
50
|
+
|
|
51
|
+
## Workspace bootstrap injection
|
|
52
|
+
|
|
53
|
+
Bootstrap files are trimmed and appended under **Project Context** so the model sees identity and profile context without needing explicit reads:
|
|
54
|
+
|
|
55
|
+
- `AGENTS.md`
|
|
56
|
+
- `SOUL.md`
|
|
57
|
+
- `TOOLS.md`
|
|
58
|
+
- `IDENTITY.md`
|
|
59
|
+
- `USER.md`
|
|
60
|
+
- `HEARTBEAT.md`
|
|
61
|
+
- `BOOTSTRAP.md` (only on brand-new workspaces)
|
|
62
|
+
- `MEMORY.md` when present, otherwise `memory.md` as a lowercase fallback
|
|
63
|
+
|
|
64
|
+
All of these files are **injected into the context window** on every turn, which
|
|
65
|
+
means they consume tokens. Keep them concise — especially `MEMORY.md`, which can
|
|
66
|
+
grow over time and lead to unexpectedly high context usage and more frequent
|
|
67
|
+
compaction.
|
|
68
|
+
|
|
69
|
+
> **Note:** `memory/*.md` daily files are **not** injected automatically. They
|
|
70
|
+
> are accessed on demand via the `memory_search` and `memory_get` tools, so they
|
|
71
|
+
> do not count against the context window unless the model explicitly reads them.
|
|
72
|
+
|
|
73
|
+
Large files are truncated with a marker. The max per-file size is controlled by
|
|
74
|
+
`agents.defaults.bootstrapMaxChars` (default: 20000). Total injected bootstrap
|
|
75
|
+
content across files is capped by `agents.defaults.bootstrapTotalMaxChars`
|
|
76
|
+
(default: 150000). Missing files inject a short missing-file marker. When truncation
|
|
77
|
+
occurs, QuantumClaw can inject a warning block in Project Context; control this with
|
|
78
|
+
`agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`;
|
|
79
|
+
default: `once`).
|
|
80
|
+
|
|
81
|
+
Sub-agent sessions only inject `AGENTS.md` and `TOOLS.md` (other bootstrap files
|
|
82
|
+
are filtered out to keep the sub-agent context small).
|
|
83
|
+
|
|
84
|
+
Internal hooks can intercept this step via `agent:bootstrap` to mutate or replace
|
|
85
|
+
the injected bootstrap files (for example swapping `SOUL.md` for an alternate persona).
|
|
86
|
+
|
|
87
|
+
To inspect how much each injected file contributes (raw vs injected, truncation, plus tool schema overhead), use `/context list` or `/context detail`. See [Context](/concepts/context).
|
|
88
|
+
|
|
89
|
+
## Time handling
|
|
90
|
+
|
|
91
|
+
The system prompt includes a dedicated **Current Date & Time** section when the
|
|
92
|
+
user timezone is known. To keep the prompt cache-stable, it now only includes
|
|
93
|
+
the **time zone** (no dynamic clock or time format).
|
|
94
|
+
|
|
95
|
+
Use `session_status` when the agent needs the current time; the status card
|
|
96
|
+
includes a timestamp line.
|
|
97
|
+
|
|
98
|
+
Configure with:
|
|
99
|
+
|
|
100
|
+
- `agents.defaults.userTimezone`
|
|
101
|
+
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
|
|
102
|
+
|
|
103
|
+
See [Date & Time](/date-time) for full behavior details.
|
|
104
|
+
|
|
105
|
+
## Skills
|
|
106
|
+
|
|
107
|
+
When eligible skills exist, QuantumClaw injects a compact **available skills list**
|
|
108
|
+
(`formatSkillsForPrompt`) that includes the **file path** for each skill. The
|
|
109
|
+
prompt instructs the model to use `read` to load the SKILL.md at the listed
|
|
110
|
+
location (workspace, managed, or bundled). If no skills are eligible, the
|
|
111
|
+
Skills section is omitted.
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
<available_skills>
|
|
115
|
+
<skill>
|
|
116
|
+
<name>...</name>
|
|
117
|
+
<description>...</description>
|
|
118
|
+
<location>...</location>
|
|
119
|
+
</skill>
|
|
120
|
+
</available_skills>
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
This keeps the base prompt small while still enabling targeted skill usage.
|
|
124
|
+
|
|
125
|
+
## Documentation
|
|
126
|
+
|
|
127
|
+
When available, the system prompt includes a **Documentation** section that points to the
|
|
128
|
+
local QuantumClaw docs directory (either `docs/` in the repo workspace or the bundled npm
|
|
129
|
+
package docs) and also notes the public mirror, source repo, community Discord, and
|
|
130
|
+
ClawHub ([https://clawhub.com](https://clawhub.com)) for skills discovery. The prompt instructs the model to consult local docs first
|
|
131
|
+
for QuantumClaw behavior, commands, configuration, or architecture, and to run
|
|
132
|
+
`quantumclaw status` itself when possible (asking the user only when it lacks access).
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Timezone handling for agents, envelopes, and prompts"
|
|
3
|
+
read_when:
|
|
4
|
+
- You need to understand how timestamps are normalized for the model
|
|
5
|
+
- Configuring the user timezone for system prompts
|
|
6
|
+
title: "Timezones"
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Timezones
|
|
10
|
+
|
|
11
|
+
QuantumClaw standardizes timestamps so the model sees a **single reference time**.
|
|
12
|
+
|
|
13
|
+
## Message envelopes (local by default)
|
|
14
|
+
|
|
15
|
+
Inbound messages are wrapped in an envelope like:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
[Provider ... 2026-01-05 16:26 PST] message text
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
The timestamp in the envelope is **host-local by default**, with minutes precision.
|
|
22
|
+
|
|
23
|
+
You can override this with:
|
|
24
|
+
|
|
25
|
+
```json5
|
|
26
|
+
{
|
|
27
|
+
agents: {
|
|
28
|
+
defaults: {
|
|
29
|
+
envelopeTimezone: "local", // "utc" | "local" | "user" | IANA timezone
|
|
30
|
+
envelopeTimestamp: "on", // "on" | "off"
|
|
31
|
+
envelopeElapsed: "on", // "on" | "off"
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
- `envelopeTimezone: "utc"` uses UTC.
|
|
38
|
+
- `envelopeTimezone: "user"` uses `agents.defaults.userTimezone` (falls back to host timezone).
|
|
39
|
+
- Use an explicit IANA timezone (e.g., `"Europe/Vienna"`) for a fixed offset.
|
|
40
|
+
- `envelopeTimestamp: "off"` removes absolute timestamps from envelope headers.
|
|
41
|
+
- `envelopeElapsed: "off"` removes elapsed time suffixes (the `+2m` style).
|
|
42
|
+
|
|
43
|
+
### Examples
|
|
44
|
+
|
|
45
|
+
**Local (default):**
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
[Signal Alice +1555 2026-01-18 00:19 PST] hello
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Fixed timezone:**
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
[Signal Alice +1555 2026-01-18 06:19 GMT+1] hello
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Elapsed time:**
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
[Signal Alice +1555 +2m 2026-01-18T05:19Z] follow-up
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Tool payloads (raw provider data + normalized fields)
|
|
64
|
+
|
|
65
|
+
Tool calls (`channels.discord.readMessages`, `channels.slack.readMessages`, etc.) return **raw provider timestamps**.
|
|
66
|
+
We also attach normalized fields for consistency:
|
|
67
|
+
|
|
68
|
+
- `timestampMs` (UTC epoch milliseconds)
|
|
69
|
+
- `timestampUtc` (ISO 8601 UTC string)
|
|
70
|
+
|
|
71
|
+
Raw provider fields are preserved.
|
|
72
|
+
|
|
73
|
+
## User timezone for the system prompt
|
|
74
|
+
|
|
75
|
+
Set `agents.defaults.userTimezone` to tell the model the user's local time zone. If it is
|
|
76
|
+
unset, QuantumClaw resolves the **host timezone at runtime** (no config write).
|
|
77
|
+
|
|
78
|
+
```json5
|
|
79
|
+
{
|
|
80
|
+
agents: { defaults: { userTimezone: "America/Chicago" } },
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The system prompt includes:
|
|
85
|
+
|
|
86
|
+
- `Current Date & Time` section with local time and timezone
|
|
87
|
+
- `Time format: 12-hour` or `24-hour`
|
|
88
|
+
|
|
89
|
+
You can control the prompt format with `agents.defaults.timeFormat` (`auto` | `12` | `24`).
|
|
90
|
+
|
|
91
|
+
See [Date & Time](/date-time) for the full behavior and examples.
|