上下文窗口与压缩

每个模型都有一个上下文窗口(可见的最大 token 数)。长时间运行的对话会累积消息和工具结果;一旦窗口空间紧张,OpenClaw 会压缩较早的历史记录以保持在限制范围内。 什么是压缩 压缩会将较早的对话总结为一条紧凑的摘要条目,并保持近期消息不变。摘要存储在会话历史中,因此后续请求使用的是: 压缩摘要 压缩点之后的近期消息 压缩会持久化到会话的 JSONL 历史记录中。 配置 有关 agents.defaults.compaction 设置,请参阅压缩配置与模式。 自动压缩(默认开启) 当会话接近或超过模型的上下文窗口时,OpenClaw 会触发自动压缩,并可能使用压缩后的上下文重试原始请求。 你会看到: 详细模式下显示 🧹 Auto-compaction complete /status 显示 🧹 Compactions: <count> 在压缩之前,OpenClaw 可以运行一次静默记忆刷写轮次,将持久化笔记写入磁盘。详情及配置请参阅记忆。 手动压缩 使用 /compact(可选附带指令)强制执行一次压缩: /compact Focus on decisions and open questions 上下文窗口来源 上下文窗口因模型而异。OpenClaw 使用已配置提供商目录中的模型定义来确定限制。 压缩与修剪 压缩:总结并持久化到 JSONL 中。 会话修剪:仅裁剪旧的工具结果,在内存中按请求进行。 有关修剪的详情,请参阅 /concepts/session-pruning。 提示 当会话感觉过时或上下文臃肿时,使用 /compact。 大型工具输出已被截断;修剪可以进一步减少工具结果的堆积。 如果你需要全新开始,/new 或 /reset 会启动一个新的会话 ID。

上下文

“上下文"是 OpenClaw 在一次运行中发送给模型的所有内容。它受模型的上下文窗口(token 限制)约束。 新手心智模型: 系统提示词(OpenClaw 构建):规则、工具、Skills 列表、时间/运行时,以及注入的工作区文件。 对话历史:你的消息 + 助手在此会话中的消息。 工具调用/结果 + 附件:命令输出、文件读取、图片/音频等。 上下文与"记忆”不是同一回事:记忆可以存储在磁盘上并稍后重新加载;上下文是模型当前窗口内的内容。 快速开始(检查上下文) /status → 快速查看"我的窗口有多满?" + 会话设置。 /context list → 注入了什么 + 大致大小(每个文件 + 总计)。 /context detail → 更深入的分解:每个文件、每个工具 schema 大小、每个 Skills 条目大小和系统提示词大小。 /usage tokens → 在正常回复后附加每次回复的使用量页脚。 /compact → 将较旧的历史总结为紧凑条目以释放窗口空间。 另请参阅:斜杠命令、Token 使用与成本、压缩。 示例输出 数值因模型、提供商、工具策略和工作区内容而异。 /context list 🧠 Context breakdown Workspace: <workspaceDir> Bootstrap max/file: 20,000 chars Sandbox: mode=non-main sandboxed=false System prompt (run): 38,412 chars (~9,603 tok) (Project Context 23,901 chars (~5,976 tok)) Injected workspace files: - AGENTS.md: OK | raw 1,742 chars (~436 tok) | injected 1,742 chars (~436 tok) - SOUL.md: OK | raw 912 chars (~228 tok) | injected 912 chars (~228 tok) - TOOLS.md: TRUNCATED | raw 54,210 chars (~13,553 tok) | injected 20,962 chars (~5,241 tok) - IDENTITY.md: OK | raw 211 chars (~53 tok) | injected 211 chars (~53 tok) - USER.md: OK | raw 388 chars (~97 tok) | injected 388 chars (~97 tok) - HEARTBEAT.md: MISSING | raw 0 | injected 0 - BOOTSTRAP.md: OK | raw 0 chars (~0 tok) | injected 0 chars (~0 tok) Skills list (system prompt text): 2,184 chars (~546 tok) (12 skills) Tools: read, edit, write, exec, process, browser, message, sessions_send, … Tool list (system prompt text): 1,032 chars (~258 tok) Tool schemas (JSON): 31,988 chars (~7,997 tok) (counts toward context; not shown as text) Tools: (same as above) Session tokens (cached): 14,250 total / ctx=32,000 /context detail 🧠 Context breakdown (detailed) … Top skills (prompt entry size): - frontend-design: 412 chars (~103 tok) - oracle: 401 chars (~101 tok) … (+10 more skills) Top tools (schema size): - browser: 9,812 chars (~2,453 tok) - exec: 6,240 chars (~1,560 tok) … (+N more tools) 什么计入上下文窗口 模型接收的所有内容都计入,包括: ...

Zalo Personal(非官方)

状态:实验性。此集成通过 zca-cli 自动化个人 Zalo 账户。 **警告:**这是一个非官方集成,可能导致账户被暂停/封禁。使用风险自负。 需要插件 Zalo Personal 作为插件提供,不包含在核心安装中。 通过 CLI 安装:openclaw plugins install @openclaw/zalouser 或从源码检出安装:openclaw plugins install ./extensions/zalouser 详情:插件 前置条件:zca-cli Gateway 网关机器必须在 PATH 中有可用的 zca 二进制文件。 验证:zca --version 如果缺失,请安装 zca-cli(参见 extensions/zalouser/README.md 或上游 zca-cli 文档)。 快速设置(新手) 安装插件(见上文)。 登录(QR,在 Gateway 网关机器上): openclaw channels login --channel zalouser 用 Zalo 手机应用扫描终端中的二维码。 启用渠道: { channels: { zalouser: { enabled: true, dmPolicy: "pairing", }, }, } 重启 Gateway 网关(或完成新手引导)。 私信访问默认为配对模式;首次联系时批准配对码。 这是什么 使用 zca listen 接收入站消息。 使用 zca msg ... 发送回复(文本/媒体/链接)。 专为"个人账户"使用场景设计,适用于 Zalo Bot API 不可用的情况。 命名 渠道 ID 为 zalouser,以明确表示这是自动化个人 Zalo 用户账户(非官方)。我们保留 zalo 用于未来可能的官方 Zalo API 集成。 ...

Zalo Personal(插件)

通过插件为 OpenClaw 提供 Zalo Personal 支持,使用 zca-cli 自动化普通 Zalo 用户账户。 警告: 非官方自动化可能导致账户被暂停/封禁。使用风险自负。 命名 渠道 id 是 zalouser,以明确表示这是自动化个人 Zalo 用户账户(非官方)。我们保留 zalo 用于潜在的未来官方 Zalo API 集成。 运行位置 此插件在 Gateway 网关进程内运行。 如果你使用远程 Gateway 网关,请在运行 Gateway 网关的机器上安装/配置它,然后重启 Gateway 网关。 安装 选项 A:从 npm 安装 openclaw plugins install @openclaw/zalouser 之后重启 Gateway 网关。 选项 B:从本地文件夹安装(开发) openclaw plugins install ./extensions/zalouser cd ./extensions/zalouser && pnpm install 之后重启 Gateway 网关。 前置条件:zca-cli Gateway 网关机器必须在 PATH 中有 zca: zca --version 配置 渠道配置位于 channels.zalouser 下(不是 plugins.entries.*): ...

Zalo (Bot API)

状态:实验性。仅支持私信;根据 Zalo 文档,群组即将推出。 需要插件 Zalo 以插件形式提供,不包含在核心安装中。 通过 CLI 安装:openclaw plugins install @openclaw/zalo 或在新手引导期间选择 Zalo 并确认安装提示 详情:插件 快速设置(初学者) 安装 Zalo 插件: 从源代码检出:openclaw plugins install ./extensions/zalo 从 npm(如果已发布):openclaw plugins install @openclaw/zalo 或在新手引导中选择 Zalo 并确认安装提示 设置 token: 环境变量:ZALO_BOT_TOKEN=... 或配置:channels.zalo.botToken: "..."。 重启 Gateway 网关(或完成新手引导)。 私信访问默认为配对模式;首次联系时批准配对码。 最小配置: { channels: { zalo: { enabled: true, botToken: "12345689:abc-xyz", dmPolicy: "pairing", }, }, } 它是什么 Zalo 是一款专注于越南市场的即时通讯应用;其 Bot API 让 Gateway 网关可以运行一个用于一对一对话的 bot。 它非常适合需要确定性路由回 Zalo 的支持或通知场景。 由 Gateway 网关拥有的 Zalo Bot API 渠道。 确定性路由:回复返回到 Zalo;模型不会选择渠道。 私信共享智能体的主会话。 群组尚不支持(Zalo 文档标注"即将推出")。 设置(快速路径) 1)创建 bot token(Zalo Bot 平台) 前往 https://bot.zaloplatforms.com 并登录。 创建新 bot 并配置其设置。 复制 bot token(格式:12345689:abc-xyz)。 2)配置 token(环境变量或配置) 示例: ...

Z.AI

Z.AI 是 GLM 模型的 API 平台。它为 GLM 提供 REST API,并使用 API 密钥进行身份验证。请在 Z.AI 控制台中创建你的 API 密钥。OpenClaw 通过 zai 提供商配合 Z.AI API 密钥使用。 CLI 设置 openclaw onboard --auth-choice zai-api-key # 或非交互式 openclaw onboard --zai-api-key "$ZAI_API_KEY" 配置片段 { env: { ZAI_API_KEY: "sk-..." }, agents: { defaults: { model: { primary: "zai/glm-4.7" } } }, } 注意事项 GLM 模型以 zai/<model> 的形式提供(例如:zai/glm-4.7)。 参阅 /providers/glm 了解模型系列概览。 Z.AI 使用 Bearer 认证方式配合你的 API 密钥。

Xiaomi MiMo

Xiaomi MiMo 是 MiMo 模型的 API 平台。它提供与 OpenAI 和 Anthropic 格式兼容的 REST API,并使用 API 密钥进行身份验证。请在 Xiaomi MiMo 控制台 中创建你的 API 密钥。OpenClaw 使用 xiaomi 提供商配合 Xiaomi MiMo API 密钥。 模型概览 mimo-v2-flash:262144 token 上下文窗口,兼容 Anthropic Messages API。 基础 URL:https://api.xiaomimimo.com/anthropic 授权方式:Bearer $XIAOMI_API_KEY CLI 设置 openclaw onboard --auth-choice xiaomi-api-key # 或非交互式 openclaw onboard --auth-choice xiaomi-api-key --xiaomi-api-key "$XIAOMI_API_KEY" 配置片段 { env: { XIAOMI_API_KEY: "your-key" }, agents: { defaults: { model: { primary: "xiaomi/mimo-v2-flash" } } }, models: { mode: "merge", providers: { xiaomi: { baseUrl: "https://api.xiaomimimo.com/anthropic", api: "anthropic-messages", apiKey: "XIAOMI_API_KEY", models: [ { id: "mimo-v2-flash", name: "Xiaomi MiMo V2 Flash", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 262144, maxTokens: 8192, }, ], }, }, }, } 备注 模型引用:xiaomi/mimo-v2-flash。 当设置了 XIAOMI_API_KEY(或存在身份验证配置文件)时,该提供商会自动注入。 有关提供商规则,请参阅 /concepts/model-providers。

Windows (WSL2)

Windows 上的 OpenClaw 推荐通过 WSL2(推荐 Ubuntu)。CLI + Gateway 网关在 Linux 内运行,这保持了运行时的一致性并使工具兼容性大大提高(Node/Bun/pnpm、Linux 二进制文件、Skills)。原生 Windows 可能更棘手。WSL2 给你完整的 Linux 体验——一条命令安装:wsl --install。 原生 Windows 配套应用已在计划中。 安装(WSL2) 入门指南(在 WSL 内使用) 安装和更新 官方 WSL2 指南(Microsoft):https://learn.microsoft.com/windows/wsl/install Gateway 网关 Gateway 网关操作手册 配置 Gateway 网关服务安装(CLI) 在 WSL2 内: openclaw onboard --install-daemon 或: openclaw gateway install 或: openclaw configure 出现提示时选择 Gateway service。 修复/迁移: openclaw doctor 高级:通过 LAN 暴露 WSL 服务(portproxy) WSL 有自己的虚拟网络。如果另一台机器需要访问在 WSL 内运行的服务(SSH、本地 TTS 服务器或 Gateway 网关),你必须将 Windows 端口转发到当前的 WSL IP。WSL IP 在重启后会改变,因此你可能需要刷新转发规则。 ...

WhatsApp(网页渠道)

状态:仅支持通过 Baileys 的 WhatsApp Web。Gateway 网关拥有会话。 快速设置(新手) 如果可能,使用单独的手机号码(推荐)。 在 ~/.openclaw/openclaw.json 中配置 WhatsApp。 运行 openclaw channels login 扫描二维码(关联设备)。 启动 Gateway 网关。 最小配置: { channels: { whatsapp: { dmPolicy: "allowlist", allowFrom: ["+15551234567"], }, }, } 目标 在一个 Gateway 网关进程中支持多个 WhatsApp 账户(多账户)。 确定性路由:回复返回到 WhatsApp,无模型路由。 模型能看到足够的上下文来理解引用回复。 配置写入 默认情况下,WhatsApp 允许写入由 /config set|unset 触发的配置更新(需要 commands.config: true)。 禁用方式: { channels: { whatsapp: { configWrites: false } }, } 架构(谁拥有什么) Gateway 网关拥有 Baileys socket 和收件箱循环。 CLI / macOS 应用与 Gateway 网关通信;不直接使用 Baileys。 发送出站消息需要活跃的监听器;否则发送会快速失败。 获取手机号码(两种模式) WhatsApp 需要真实手机号码进行验证。VoIP 和虚拟号码通常会被封锁。在 WhatsApp 上运行 OpenClaw 有两种支持的方式: ...

Webhooks

Gateway 网关可以暴露一个小型 HTTP webhook 端点用于外部触发。 启用 { hooks: { enabled: true, token: "shared-secret", path: "/hooks", }, } 注意事项: 当 hooks.enabled=true 时,hooks.token 为必填项。 hooks.path 默认为 /hooks。 认证 每个请求必须包含 hook 令牌。推荐使用请求头: Authorization: Bearer <token>(推荐) x-openclaw-token: <token> ?token=<token>(已弃用;会记录警告日志,将在未来的主要版本中移除) 端点 POST /hooks/wake 请求体: { "text": "System line", "mode": "now" } text 必填(字符串):事件描述(例如"收到新邮件")。 mode 可选(now | next-heartbeat):是否立即触发心跳(默认 now)或等待下一次定期检查。 效果: 为主会话加入一个系统事件队列 如果 mode=now,则立即触发心跳 POST /hooks/agent 请求体: { "message": "Run this", "name": "Email", "sessionKey": "hook:email:msg-123", "wakeMode": "now", "deliver": true, "channel": "last", "to": "+15551234567", "model": "openai/gpt-5.2-mini", "thinking": "low", "timeoutSeconds": 120 } message 必填(字符串):智能体要处理的提示或消息。 name 可选(字符串):hook 的可读名称(例如"GitHub"),用作会话摘要的前缀。 sessionKey 可选(字符串):用于标识智能体会话的键。默认为随机的 hook:<uuid>。使用一致的键可以在 hook 上下文中进行多轮对话。 wakeMode 可选(now | next-heartbeat):是否立即触发心跳(默认 now)或等待下一次定期检查。 deliver 可选(布尔值):如果为 true,智能体的响应将发送到消息渠道。默认为 true。仅为心跳确认的响应会自动跳过。 channel 可选(字符串):用于投递的消息渠道。可选值:last、whatsapp、telegram、discord、slack、mattermost(插件)、signal、imessage、msteams。默认为 last。 to 可选(字符串):渠道的接收者标识符(例如 WhatsApp/Signal 的电话号码、Telegram 的聊天 ID、Discord/Slack/Mattermost(插件)的频道 ID、MS Teams 的会话 ID)。默认为主会话中的最后一个接收者。 model 可选(字符串):模型覆盖(例如 anthropic/claude-3-5-sonnet 或别名)。如果有限制,必须在允许的模型列表中。 thinking 可选(字符串):思考级别覆盖(例如 low、medium、high)。 timeoutSeconds 可选(数字):智能体运行的最大持续时间(秒)。 效果: ...