导读如果你和我一样对OpenClaw怀有以下疑问直接让 OpenClaw 操控我的电脑工作存在哪些安全风险OpenClaw 是怎么配置到各种聊天软件中的原理是什么会不会出现还没开始工作AI 理解上下文就已经消耗了大量tokenopenclaw有没有优化上下文过长导致 AI 无法理解核心导致幻觉严重的问题openclaw怎么更好的使用skills在众多skills中怎么做到更好的按需分配openclaw解决了哪些难点怎么解决的那么我建议你阅读本文章最开始我也有这些问题在AI的辅助下阅读了源码现已解决故分享。有错误或者补充欢迎指正1. OpenClaw 是什么1.1 用一句话理解OpenClaw 是一个运行在你自己电脑上的 AI 助手平台它可以通过 20 种聊天软件微信、Telegram、Discord 等与你交互自动操作浏览器、执行命令、管理文件跨设备协同电脑、手机、平板所有数据存储在本地隐私可控1.2 与其他 AI 产品的区别特性OpenClawChatGPT/Claude 网页版AutoGPT/LangChain部署方式本地运行云端服务本地/云端数据隐私如果自己配那么完全本地上传云端取决于配置多渠道接入✅ 20 平台❌ 仅网页❌ 需自行开发跨设备协同✅ macOS/iOS/Android❌❌浏览器控制✅ 完整自动化❌⚠️ 基础支持权限管理✅ 多层安全机制N/A⚠️ 较弱2. 核心架构一图看懂2.1 整体架构30秒理解核心理念Gateway网关像一个总机接收所有消息并分发Agent智能体真正的大脑理解你的需求并决定怎么做Tools工具Agent 的手执行具体操作本地存储所有数据都在你的电脑上不上传云端2.2 消息处理流程3分钟理解3. 四大技术难点及解决方案难点 1安全与权限的平衡3.1.1 问题描述类比理解给 AI 助手权限就像给保姆家里钥匙。给太多权限保姆可能乱翻东西、破坏财物给太少权限保姆无法打扫卫生、做饭具体风险提示词注入黑客通过聊天消息欺骗 AI 执行危险命令记忆投毒在 AI 的记忆中植入恶意指令未授权访问陌生人冒充你发送消息3.1.2 OpenClaw 的解决方案OpenClaw 采用多层防御体系源码证据如下第一层DM Pairing私聊配对原理陌生人第一次给你发消息时必须先通过配对验证。源码位置src/infra/device-pairing.ts:14-100// 配对请求结构 export type DevicePairingPendingRequest { requestId: string; deviceId: string; publicKey: string; // 设备公钥加密通信 displayName?: string; platform?: string; role?: string; // 角色operator/admin/device scopes?: string[]; // 权限范围 ts: number; };实际效果陌生人发消息 → OpenClaw 生成 6 位配对码你在电脑上执行openclaw pairing approve telegram code配对成功后该联系人才能与 AI 对话第二层命令执行审批Exec Approvals原理AI 想执行危险命令时必须先征得你的同意。源码位置src/infra/exec-approvals.ts:10-36// 三种安全等级 export type ExecSecurity deny | allowlist | full; // deny完全禁止执行命令 // allowlist只允许白名单命令如 ls、cat // full允许所有命令危险 // 询问模式 export type ExecAsk off | on-miss | always; // off不询问仅限白名单 // on-miss白名单外的命令询问 // always所有命令都询问配置示例{ agents: { defaults: { exec: { security: allowlist, // 只允许白名单命令 ask: on-miss // 白名单外的命令询问 } } } }第三层Docker 沙箱隔离原理在群组聊天中AI 在隔离的 Docker 容器中执行命令无法访问你的真实文件。源码位置src/agents/sandbox/config.ts// 沙箱配置 { sandbox: { mode: non-main, // 仅非个人 DM 使用沙箱 allowTools: [bash, read, write], // 允许的工具 denyTools: [browser, canvas, nodes] // 禁止的工具 } }实际效果个人 DMAI 可以访问你的真实文件群组聊天AI 在 Docker 容器中运行无法破坏你的系统第四层安全审计系统原理OpenClaw 内置安全扫描工具自动检测配置风险。源码位置src/security/audit.ts:32-61// 安全审计报告结构 export type SecurityAuditFinding { checkId: string; severity: info | warn | critical; // 严重程度 title: string; detail: string; remediation?: string; // 修复建议 };使用方法openclaw doctor # 运行安全检查 # 输出示例 [CRITICAL] DM policy not enabled 未启用私聊配对陌生人可直接与 AI 对话 修复设置 channels.telegram.dmPolicy: pairing [WARN] Sandbox disabled for groups 群组聊天未启用沙箱存在安全风险 修复设置 sandbox.mode: non-main3.1.3 安全机制总结防御层防御对象源码位置配置项DM Pairing未授权访问src/infra/device-pairing.tschannels.*.dmPolicy: pairingExec Approvals危险命令执行src/infra/exec-approvals.tsagents.defaults.exec.securityDocker Sandbox群组恶意操作src/agents/sandbox/agents.defaults.sandbox.modeSecurity Audit配置漏洞src/security/audit.tsopenclaw doctor认证系统网关访问控制src/gateway/auth.tsgateway.auth.mode安全架构图难点 2多渠道统一适配3.2.1 问题描述类比理解就像一个翻译官要同时听懂 20 种语言Telegram、Discord、Slack...并且每种语言的语法、格式都不一样。具体挑战Telegram 用grammY库Discord 用discord.js消息格式差异Telegram 支持 MarkdownDiscord 支持 Embed附件类型不同图片、视频、文件的处理方式各异API 变更平台更新 API适配代码需要跟着改3.2.2 OpenClaw 的解决方案插件化架构原理每个聊天平台都是一个独立的插件通过统一的接口与 Gateway 通信。源码位置src/channels/plugins/src/channels/plugins/ ├── telegram/ # Telegram 插件 │ ├── index.ts # 插件入口 │ ├── send.ts # 发送消息 │ └── receive.ts # 接收消息 ├── discord/ # Discord 插件 ├── slack/ # Slack 插件 └── whatsapp/ # WhatsApp 插件统一接口定义src/channels/plugins/types.ts// 所有渠道插件必须实现这个接口 interface ChannelPlugin { start(): Promisevoid; // 启动插件 stop(): Promisevoid; // 停止插件 sendMessage(params: { // 发送消息 to: string; text: string; mediaUrls?: string[]; }): Promisevoid; }实际效果新增一个聊天平台只需开发一个插件平台 API 变更只需修改对应插件不影响其他部分Agent 无需关心底层细节只处理标准格式消息归一化原理将不同平台的消息转换为统一格式。源码位置src/channels/session.ts难点 3本地执行与资源管控3.3.1 问题描述类比理解在你的电脑上运行 AI就像在家里养宠物。宠物AI需要吃饭CPU/内存宠物可能乱跑孤儿进程宠物需要训练模型推理具体挑战浏览器自动化Playwright占用大量内存长时间运行可能内存泄漏本地模型推理卡顿进程管理不当导致系统卡死3.3.2 OpenClaw 的解决方案Runtime 池化进程复用原理不是每次都创建新进程而是复用已有的进程。源码位置src/acp/control-plane/runtime-cache.ts// Runtime 缓存配置 { agents: { defaults: { runtimeIdleTtlMs: 300000 // 5分钟无活动自动回收 } } }实际效果第一次请求创建 Runtime慢约 2-3 秒后续请求复用 Runtime快约 100ms空闲 5 分钟后自动回收释放内存并发控制Actor 模型原理同一个会话的请求排队执行避免冲突。源码位置src/acp/control-plane/session-actor-queue.tsasync runT(actorKey: string, op: () PromiseT): PromiseT { return this.queue.enqueue(actorKey, op, { onEnqueue: () { this.pendingBySession.set(actorKey, (this.pendingBySession.get(actorKey) ?? 0) 1); }, onSettle: () { const pending (this.pendingBySession.get(actorKey) ?? 1) - 1; if (pending 0) { this.pendingBySession.delete(actorKey); } else { this.pendingBySession.set(actorKey, pending); } }, }); }实际效果避免同一会话的请求互相干扰保证消息顺序处理防止资源竞争难点 4长期记忆与上下文管理3.4.1 问题描述类比理解AI 的记忆就像人的大脑但容量有限。短期记忆最近几轮对话上下文窗口长期记忆历史对话、知识库需要持久化具体挑战LLM 上下文窗口有限如 GPT-4 最多 128K tokens长对话后早期信息会被遗忘记忆数据无加密设备故障可能丢失3.4.2 OpenClaw 的解决方案Session Compaction上下文压缩原理将历史对话压缩为摘要保留关键信息。源码位置src/agents/pi-embedded-runner/compact.ts使用方法# 手动压缩 /compact # 自动压缩配置 { agents: { defaults: { autoCompact: true } } }Memory Search语义检索原理不是把所有记忆都加载而是按需检索相关内容。源码位置src/memory/工具调用// Agent 调用 memory_search memory_search({ query: 项目进展, maxResults: 5 }) // 返回相关记忆片段 // 然后用 memory_get 获取详细内容4. 为什么 OpenClaw 能脱颖而出4.1 核心竞争力对比4.2 十大核心功能点功能说明源码位置竞品对比1. Gateway 控制平面单一 WebSocket 管理所有连接src/gateway/✅ 独有2. Multi-Agent 路由7 层优先级智能路由src/routing/resolve-route.ts✅ 独有3. 跨渠道消息20 平台统一接入src/channels/plugins/⚠️ 部分竞品支持4. 浏览器控制Playwright CDP 完整自动化src/browser/⚠️ 功能较弱5. Canvas A2UIAgent 驱动的可视化界面src/canvas-host/✅ 独有6. Nodes 系统跨设备能力调用相机/屏幕/位置src/node-host/✅ 独有7. Docker 沙箱群组聊天环境隔离src/agents/sandbox/❌ 少见8. DM Pairing私聊配对防未授权访问src/infra/device-pairing.ts❌ 少见9. Skills 平台按需加载技能插件src/agents/skills/⚠️ 部分支持10. 心跳机制主动式后台任务执行src/infra/heartbeat-runner.ts✅ 独有5. 上下文优化如何避免 Token 浪费5.1 问题会不会还没开始工作就消耗大量 Token答案OpenClaw 已经做了很好的优化但仍有改进空间。5.2 优化机制详解5.2.1 Bootstrap 文件截断问题AGENTS.md、TOOLS.md等配置文件可能很大几十 KB全部加载会浪费 Token。解决方案设置字符数上限超出部分截断。源码位置src/agents/bootstrap-budget.ts:164-221// 配置示例 { agents: { defaults: { bootstrapMaxChars: 50000, // 单文件最大 50K 字符 bootstrapTotalMaxChars: 200000, // 所有文件总和最大 200K bootstrapWarningMode: once // 截断警告模式 } } }警告机制[Bootstrap truncation warning] Some workspace bootstrap files were truncated before injection. Treat Project Context as partial and read the relevant files directly if details seem missing. - AGENTS.md: 80000 raw - 50000 injected (~37% removed; max/file).实际效果空 session 启动~5K-10K tokens系统提示 工具定义 bootstrap避免了无限制加载导致的 Token 爆炸5.2.2 Skills 按需加载问题如果一次性加载所有 skills可能有 20 个每个 5KB就是 100KB 的上下文开销。解决方案只注入 skills 列表Agent 需要时再加载具体内容。源码位置src/agents/system-prompt.ts:20-36// 系统提示中的 Skills 指令 ## Skills (mandatory), Before replying: scan available_skills description entries., - If exactly one skill clearly applies: read its SKILL.md at location with read, then follow it., - If multiple could apply: choose the most specific one, then read/follow it., - If none clearly apply: do not read any SKILL.md., Constraints: never read more than one skill up front; only read after selecting.对比❌ 传统方式20 个 skills × 5KB 100KB 上下文✅ OpenClawskills 列表 1KB 按需加载 5KB 6KB 上下文5.2.3 Memory 语义检索问题将整个MEMORY.md可能 50KB注入上下文浪费 Token。解决方案先搜索再按需拉取相关片段。源码位置src/agents/system-prompt.ts:38-64// 系统提示中的 Memory 指令 ## Memory Recall, Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md memory/*.md; then use memory_get to pull only the needed lines.5.2.4 Subagent 精简上下文问题子任务也加载完整系统提示浪费 Token。解决方案Subagent 使用minimal模式跳过不必要的部分。源码位置src/agents/system-prompt.ts:11-17export type PromptMode full | minimal | none; // minimal 模式跳过 // - Skills section // - Memory section // - User identity section // - Reply tags section5.3 上下文优化总结优化机制节省效果源码位置Bootstrap 截断单文件 50K → 总量 200K 限制src/agents/bootstrap-budget.tsSkills 按需加载100KB → 6KBsrc/agents/system-prompt.tsMemory 检索50KB → 2KBsrc/memory/Subagent 精简10K → 3K tokenssrc/agents/system-prompt.tsSession Compaction20K → 5K tokenssrc/agents/pi-embedded-runner/compact.ts实测数据基于代码推测空 session 启动~5K-10K tokens10 轮对话后~15K-25K tokens触发 compaction 后降回 ~8K-12K tokens6. Skills 智能分配机制6.1 问题在众多 skills 中怎么做到按需分配OpenClaw 采用两阶段加载 强制约束的策略。6.2 工作流程6.3 强制约束机制源码位置src/agents/system-prompt.ts:20-36// 系统提示中的强制约束 ## Skills (mandatory), Before replying: scan available_skills description entries., - If exactly one skill clearly applies: read its SKILL.md at location with read, then follow it., - If multiple could apply: choose the most specific one, then read/follow it., - If none clearly apply: do not read any SKILL.md., Constraints: never read more than one skill up front; only read after selecting.,关键约束必须先扫描不能跳过扫描直接加载只加载一个禁止贪婪加载多个 skills先判断再加载避免盲目加载6.4 Skills 类型6.5 Skill 结构skills/deployment/ ├── SKILL.md # Skill 说明注入到 agent ├── package.json # 依赖可选 └── tools/ # 自定义工具可选 └── deploy.tsSKILL.md 示例# Deployment Skill ## 适用场景 - 部署静态网站到 Netlify/Vercel - 部署 Node.js 应用到云服务器 ## 使用步骤 1. 检查项目类型静态/动态 2. 选择部署平台 3. 执行部署命令 4. 验证部署结果 ## 工具调用 - exec(npm run build) - exec(netlify deploy --prod)7. 完整技术栈总览7.1 技术架构分层7.2 核心依赖库类别库名用途源码位置运行时Node.js 22JavaScript 运行环境-语言TypeScript类型安全全项目开发工具Bun快速开发/测试-AI 引擎pi-monoLLM 推理src/acp/runtime/浏览器Playwright浏览器自动化src/browser/消息平台grammY, discord.js, Bolt渠道集成src/channels/plugins/沙箱Docker环境隔离src/agents/sandbox/存储JSON/JSONL配置和历史~/.openclaw/8. 总结OpenClaw 的核心价值8.1 技术创新点单一控制平面Gateway WebSocket 统一管理智能路由7 层优先级匹配Runtime 池化自动缓存和回收上下文优化Bootstrap 截断 Session 压缩安全优先多层防御体系8.2 适用场景✅适合使用 OpenClaw 的场景需要 AI 跨多个聊天平台工作需要 AI 使用浏览器自动化工作需要 AI 跨设备协同需要 AI 通过聊天就能为你工作读取本地文件成为你的专属助手❌不适合使用 OpenClaw 的场景只需要简单聊天用 ChatGPT 网页版即可没有本地运行环境需要云服务不希望 AI 直接自主操控我的本地文件8.3 学习路径建议9. 常见问题 FAQQ1: OpenClaw 安全吗会不会被黑客利用A: OpenClaw 提供了多层安全机制但安全性取决于你的配置。推荐安全配置{ channels: { telegram: { dmPolicy: pairing // 启用私聊配对 } }, agents: { defaults: { exec: { security: allowlist, // 只允许白名单命令 ask: on-miss // 白名单外的命令询问 }, sandbox: { mode: non-main // 群组聊天使用沙箱 } } }, gateway: { auth: { mode: password // 启用密码认证 } } }定期检查openclaw doctor # 运行安全审计Q2: 会不会消耗大量 TokenA: OpenClaw 已经做了很好的优化但一定的 Token 消耗是难免的Bootstrap 截断单文件 50K/总量 200K 限制Skills 按需加载只加载需要的 skillMemory 检索语义搜索而非全量加载Session 压缩定期压缩历史对话实测数据空 session 启动~5K-10K tokens10 轮对话后~15K-25K tokens压缩后降回 ~8K-12K tokensQ3: 如何开始使用 OpenClawA: 三步快速上手# 1. 安装 curl -fsSL https://openclaw.ai/install.sh | bash # 2. 启动 Gateway openclaw gateway run # 3. 配置渠道以 Telegram 为例 openclaw onboard详细教程https://docs.openclaw.ai/start/wizardQ4: OpenClaw 与 ChatGPT/Claude 有什么区别特性OpenClawChatGPT/Claude部署本地运行云端服务隐私完全本地上传云端渠道20 平台仅网页/App工具完整自动化受限成本用户自配 API Key可选便宜API订阅费用10. 参考资源官方文档https://docs.openclaw.aiGitHub 仓库https://github.com/openclaw/openclawDiscord 社区https://discord.gg/openclaw源码导读Gateway: src/gateway/server/ws-server.ts路由: src/routing/resolve-route.tsACP: src/acp/control-plane/manager.core.ts安全: src/security/audit.ts浏览器: src/browser/
OpenClaw 核心功能解析:一文让你彻底搞懂 OpenClaw
导读如果你和我一样对OpenClaw怀有以下疑问直接让 OpenClaw 操控我的电脑工作存在哪些安全风险OpenClaw 是怎么配置到各种聊天软件中的原理是什么会不会出现还没开始工作AI 理解上下文就已经消耗了大量tokenopenclaw有没有优化上下文过长导致 AI 无法理解核心导致幻觉严重的问题openclaw怎么更好的使用skills在众多skills中怎么做到更好的按需分配openclaw解决了哪些难点怎么解决的那么我建议你阅读本文章最开始我也有这些问题在AI的辅助下阅读了源码现已解决故分享。有错误或者补充欢迎指正1. OpenClaw 是什么1.1 用一句话理解OpenClaw 是一个运行在你自己电脑上的 AI 助手平台它可以通过 20 种聊天软件微信、Telegram、Discord 等与你交互自动操作浏览器、执行命令、管理文件跨设备协同电脑、手机、平板所有数据存储在本地隐私可控1.2 与其他 AI 产品的区别特性OpenClawChatGPT/Claude 网页版AutoGPT/LangChain部署方式本地运行云端服务本地/云端数据隐私如果自己配那么完全本地上传云端取决于配置多渠道接入✅ 20 平台❌ 仅网页❌ 需自行开发跨设备协同✅ macOS/iOS/Android❌❌浏览器控制✅ 完整自动化❌⚠️ 基础支持权限管理✅ 多层安全机制N/A⚠️ 较弱2. 核心架构一图看懂2.1 整体架构30秒理解核心理念Gateway网关像一个总机接收所有消息并分发Agent智能体真正的大脑理解你的需求并决定怎么做Tools工具Agent 的手执行具体操作本地存储所有数据都在你的电脑上不上传云端2.2 消息处理流程3分钟理解3. 四大技术难点及解决方案难点 1安全与权限的平衡3.1.1 问题描述类比理解给 AI 助手权限就像给保姆家里钥匙。给太多权限保姆可能乱翻东西、破坏财物给太少权限保姆无法打扫卫生、做饭具体风险提示词注入黑客通过聊天消息欺骗 AI 执行危险命令记忆投毒在 AI 的记忆中植入恶意指令未授权访问陌生人冒充你发送消息3.1.2 OpenClaw 的解决方案OpenClaw 采用多层防御体系源码证据如下第一层DM Pairing私聊配对原理陌生人第一次给你发消息时必须先通过配对验证。源码位置src/infra/device-pairing.ts:14-100// 配对请求结构 export type DevicePairingPendingRequest { requestId: string; deviceId: string; publicKey: string; // 设备公钥加密通信 displayName?: string; platform?: string; role?: string; // 角色operator/admin/device scopes?: string[]; // 权限范围 ts: number; };实际效果陌生人发消息 → OpenClaw 生成 6 位配对码你在电脑上执行openclaw pairing approve telegram code配对成功后该联系人才能与 AI 对话第二层命令执行审批Exec Approvals原理AI 想执行危险命令时必须先征得你的同意。源码位置src/infra/exec-approvals.ts:10-36// 三种安全等级 export type ExecSecurity deny | allowlist | full; // deny完全禁止执行命令 // allowlist只允许白名单命令如 ls、cat // full允许所有命令危险 // 询问模式 export type ExecAsk off | on-miss | always; // off不询问仅限白名单 // on-miss白名单外的命令询问 // always所有命令都询问配置示例{ agents: { defaults: { exec: { security: allowlist, // 只允许白名单命令 ask: on-miss // 白名单外的命令询问 } } } }第三层Docker 沙箱隔离原理在群组聊天中AI 在隔离的 Docker 容器中执行命令无法访问你的真实文件。源码位置src/agents/sandbox/config.ts// 沙箱配置 { sandbox: { mode: non-main, // 仅非个人 DM 使用沙箱 allowTools: [bash, read, write], // 允许的工具 denyTools: [browser, canvas, nodes] // 禁止的工具 } }实际效果个人 DMAI 可以访问你的真实文件群组聊天AI 在 Docker 容器中运行无法破坏你的系统第四层安全审计系统原理OpenClaw 内置安全扫描工具自动检测配置风险。源码位置src/security/audit.ts:32-61// 安全审计报告结构 export type SecurityAuditFinding { checkId: string; severity: info | warn | critical; // 严重程度 title: string; detail: string; remediation?: string; // 修复建议 };使用方法openclaw doctor # 运行安全检查 # 输出示例 [CRITICAL] DM policy not enabled 未启用私聊配对陌生人可直接与 AI 对话 修复设置 channels.telegram.dmPolicy: pairing [WARN] Sandbox disabled for groups 群组聊天未启用沙箱存在安全风险 修复设置 sandbox.mode: non-main3.1.3 安全机制总结防御层防御对象源码位置配置项DM Pairing未授权访问src/infra/device-pairing.tschannels.*.dmPolicy: pairingExec Approvals危险命令执行src/infra/exec-approvals.tsagents.defaults.exec.securityDocker Sandbox群组恶意操作src/agents/sandbox/agents.defaults.sandbox.modeSecurity Audit配置漏洞src/security/audit.tsopenclaw doctor认证系统网关访问控制src/gateway/auth.tsgateway.auth.mode安全架构图难点 2多渠道统一适配3.2.1 问题描述类比理解就像一个翻译官要同时听懂 20 种语言Telegram、Discord、Slack...并且每种语言的语法、格式都不一样。具体挑战Telegram 用grammY库Discord 用discord.js消息格式差异Telegram 支持 MarkdownDiscord 支持 Embed附件类型不同图片、视频、文件的处理方式各异API 变更平台更新 API适配代码需要跟着改3.2.2 OpenClaw 的解决方案插件化架构原理每个聊天平台都是一个独立的插件通过统一的接口与 Gateway 通信。源码位置src/channels/plugins/src/channels/plugins/ ├── telegram/ # Telegram 插件 │ ├── index.ts # 插件入口 │ ├── send.ts # 发送消息 │ └── receive.ts # 接收消息 ├── discord/ # Discord 插件 ├── slack/ # Slack 插件 └── whatsapp/ # WhatsApp 插件统一接口定义src/channels/plugins/types.ts// 所有渠道插件必须实现这个接口 interface ChannelPlugin { start(): Promisevoid; // 启动插件 stop(): Promisevoid; // 停止插件 sendMessage(params: { // 发送消息 to: string; text: string; mediaUrls?: string[]; }): Promisevoid; }实际效果新增一个聊天平台只需开发一个插件平台 API 变更只需修改对应插件不影响其他部分Agent 无需关心底层细节只处理标准格式消息归一化原理将不同平台的消息转换为统一格式。源码位置src/channels/session.ts难点 3本地执行与资源管控3.3.1 问题描述类比理解在你的电脑上运行 AI就像在家里养宠物。宠物AI需要吃饭CPU/内存宠物可能乱跑孤儿进程宠物需要训练模型推理具体挑战浏览器自动化Playwright占用大量内存长时间运行可能内存泄漏本地模型推理卡顿进程管理不当导致系统卡死3.3.2 OpenClaw 的解决方案Runtime 池化进程复用原理不是每次都创建新进程而是复用已有的进程。源码位置src/acp/control-plane/runtime-cache.ts// Runtime 缓存配置 { agents: { defaults: { runtimeIdleTtlMs: 300000 // 5分钟无活动自动回收 } } }实际效果第一次请求创建 Runtime慢约 2-3 秒后续请求复用 Runtime快约 100ms空闲 5 分钟后自动回收释放内存并发控制Actor 模型原理同一个会话的请求排队执行避免冲突。源码位置src/acp/control-plane/session-actor-queue.tsasync runT(actorKey: string, op: () PromiseT): PromiseT { return this.queue.enqueue(actorKey, op, { onEnqueue: () { this.pendingBySession.set(actorKey, (this.pendingBySession.get(actorKey) ?? 0) 1); }, onSettle: () { const pending (this.pendingBySession.get(actorKey) ?? 1) - 1; if (pending 0) { this.pendingBySession.delete(actorKey); } else { this.pendingBySession.set(actorKey, pending); } }, }); }实际效果避免同一会话的请求互相干扰保证消息顺序处理防止资源竞争难点 4长期记忆与上下文管理3.4.1 问题描述类比理解AI 的记忆就像人的大脑但容量有限。短期记忆最近几轮对话上下文窗口长期记忆历史对话、知识库需要持久化具体挑战LLM 上下文窗口有限如 GPT-4 最多 128K tokens长对话后早期信息会被遗忘记忆数据无加密设备故障可能丢失3.4.2 OpenClaw 的解决方案Session Compaction上下文压缩原理将历史对话压缩为摘要保留关键信息。源码位置src/agents/pi-embedded-runner/compact.ts使用方法# 手动压缩 /compact # 自动压缩配置 { agents: { defaults: { autoCompact: true } } }Memory Search语义检索原理不是把所有记忆都加载而是按需检索相关内容。源码位置src/memory/工具调用// Agent 调用 memory_search memory_search({ query: 项目进展, maxResults: 5 }) // 返回相关记忆片段 // 然后用 memory_get 获取详细内容4. 为什么 OpenClaw 能脱颖而出4.1 核心竞争力对比4.2 十大核心功能点功能说明源码位置竞品对比1. Gateway 控制平面单一 WebSocket 管理所有连接src/gateway/✅ 独有2. Multi-Agent 路由7 层优先级智能路由src/routing/resolve-route.ts✅ 独有3. 跨渠道消息20 平台统一接入src/channels/plugins/⚠️ 部分竞品支持4. 浏览器控制Playwright CDP 完整自动化src/browser/⚠️ 功能较弱5. Canvas A2UIAgent 驱动的可视化界面src/canvas-host/✅ 独有6. Nodes 系统跨设备能力调用相机/屏幕/位置src/node-host/✅ 独有7. Docker 沙箱群组聊天环境隔离src/agents/sandbox/❌ 少见8. DM Pairing私聊配对防未授权访问src/infra/device-pairing.ts❌ 少见9. Skills 平台按需加载技能插件src/agents/skills/⚠️ 部分支持10. 心跳机制主动式后台任务执行src/infra/heartbeat-runner.ts✅ 独有5. 上下文优化如何避免 Token 浪费5.1 问题会不会还没开始工作就消耗大量 Token答案OpenClaw 已经做了很好的优化但仍有改进空间。5.2 优化机制详解5.2.1 Bootstrap 文件截断问题AGENTS.md、TOOLS.md等配置文件可能很大几十 KB全部加载会浪费 Token。解决方案设置字符数上限超出部分截断。源码位置src/agents/bootstrap-budget.ts:164-221// 配置示例 { agents: { defaults: { bootstrapMaxChars: 50000, // 单文件最大 50K 字符 bootstrapTotalMaxChars: 200000, // 所有文件总和最大 200K bootstrapWarningMode: once // 截断警告模式 } } }警告机制[Bootstrap truncation warning] Some workspace bootstrap files were truncated before injection. Treat Project Context as partial and read the relevant files directly if details seem missing. - AGENTS.md: 80000 raw - 50000 injected (~37% removed; max/file).实际效果空 session 启动~5K-10K tokens系统提示 工具定义 bootstrap避免了无限制加载导致的 Token 爆炸5.2.2 Skills 按需加载问题如果一次性加载所有 skills可能有 20 个每个 5KB就是 100KB 的上下文开销。解决方案只注入 skills 列表Agent 需要时再加载具体内容。源码位置src/agents/system-prompt.ts:20-36// 系统提示中的 Skills 指令 ## Skills (mandatory), Before replying: scan available_skills description entries., - If exactly one skill clearly applies: read its SKILL.md at location with read, then follow it., - If multiple could apply: choose the most specific one, then read/follow it., - If none clearly apply: do not read any SKILL.md., Constraints: never read more than one skill up front; only read after selecting.对比❌ 传统方式20 个 skills × 5KB 100KB 上下文✅ OpenClawskills 列表 1KB 按需加载 5KB 6KB 上下文5.2.3 Memory 语义检索问题将整个MEMORY.md可能 50KB注入上下文浪费 Token。解决方案先搜索再按需拉取相关片段。源码位置src/agents/system-prompt.ts:38-64// 系统提示中的 Memory 指令 ## Memory Recall, Before answering anything about prior work, decisions, dates, people, preferences, or todos: run memory_search on MEMORY.md memory/*.md; then use memory_get to pull only the needed lines.5.2.4 Subagent 精简上下文问题子任务也加载完整系统提示浪费 Token。解决方案Subagent 使用minimal模式跳过不必要的部分。源码位置src/agents/system-prompt.ts:11-17export type PromptMode full | minimal | none; // minimal 模式跳过 // - Skills section // - Memory section // - User identity section // - Reply tags section5.3 上下文优化总结优化机制节省效果源码位置Bootstrap 截断单文件 50K → 总量 200K 限制src/agents/bootstrap-budget.tsSkills 按需加载100KB → 6KBsrc/agents/system-prompt.tsMemory 检索50KB → 2KBsrc/memory/Subagent 精简10K → 3K tokenssrc/agents/system-prompt.tsSession Compaction20K → 5K tokenssrc/agents/pi-embedded-runner/compact.ts实测数据基于代码推测空 session 启动~5K-10K tokens10 轮对话后~15K-25K tokens触发 compaction 后降回 ~8K-12K tokens6. Skills 智能分配机制6.1 问题在众多 skills 中怎么做到按需分配OpenClaw 采用两阶段加载 强制约束的策略。6.2 工作流程6.3 强制约束机制源码位置src/agents/system-prompt.ts:20-36// 系统提示中的强制约束 ## Skills (mandatory), Before replying: scan available_skills description entries., - If exactly one skill clearly applies: read its SKILL.md at location with read, then follow it., - If multiple could apply: choose the most specific one, then read/follow it., - If none clearly apply: do not read any SKILL.md., Constraints: never read more than one skill up front; only read after selecting.,关键约束必须先扫描不能跳过扫描直接加载只加载一个禁止贪婪加载多个 skills先判断再加载避免盲目加载6.4 Skills 类型6.5 Skill 结构skills/deployment/ ├── SKILL.md # Skill 说明注入到 agent ├── package.json # 依赖可选 └── tools/ # 自定义工具可选 └── deploy.tsSKILL.md 示例# Deployment Skill ## 适用场景 - 部署静态网站到 Netlify/Vercel - 部署 Node.js 应用到云服务器 ## 使用步骤 1. 检查项目类型静态/动态 2. 选择部署平台 3. 执行部署命令 4. 验证部署结果 ## 工具调用 - exec(npm run build) - exec(netlify deploy --prod)7. 完整技术栈总览7.1 技术架构分层7.2 核心依赖库类别库名用途源码位置运行时Node.js 22JavaScript 运行环境-语言TypeScript类型安全全项目开发工具Bun快速开发/测试-AI 引擎pi-monoLLM 推理src/acp/runtime/浏览器Playwright浏览器自动化src/browser/消息平台grammY, discord.js, Bolt渠道集成src/channels/plugins/沙箱Docker环境隔离src/agents/sandbox/存储JSON/JSONL配置和历史~/.openclaw/8. 总结OpenClaw 的核心价值8.1 技术创新点单一控制平面Gateway WebSocket 统一管理智能路由7 层优先级匹配Runtime 池化自动缓存和回收上下文优化Bootstrap 截断 Session 压缩安全优先多层防御体系8.2 适用场景✅适合使用 OpenClaw 的场景需要 AI 跨多个聊天平台工作需要 AI 使用浏览器自动化工作需要 AI 跨设备协同需要 AI 通过聊天就能为你工作读取本地文件成为你的专属助手❌不适合使用 OpenClaw 的场景只需要简单聊天用 ChatGPT 网页版即可没有本地运行环境需要云服务不希望 AI 直接自主操控我的本地文件8.3 学习路径建议9. 常见问题 FAQQ1: OpenClaw 安全吗会不会被黑客利用A: OpenClaw 提供了多层安全机制但安全性取决于你的配置。推荐安全配置{ channels: { telegram: { dmPolicy: pairing // 启用私聊配对 } }, agents: { defaults: { exec: { security: allowlist, // 只允许白名单命令 ask: on-miss // 白名单外的命令询问 }, sandbox: { mode: non-main // 群组聊天使用沙箱 } } }, gateway: { auth: { mode: password // 启用密码认证 } } }定期检查openclaw doctor # 运行安全审计Q2: 会不会消耗大量 TokenA: OpenClaw 已经做了很好的优化但一定的 Token 消耗是难免的Bootstrap 截断单文件 50K/总量 200K 限制Skills 按需加载只加载需要的 skillMemory 检索语义搜索而非全量加载Session 压缩定期压缩历史对话实测数据空 session 启动~5K-10K tokens10 轮对话后~15K-25K tokens压缩后降回 ~8K-12K tokensQ3: 如何开始使用 OpenClawA: 三步快速上手# 1. 安装 curl -fsSL https://openclaw.ai/install.sh | bash # 2. 启动 Gateway openclaw gateway run # 3. 配置渠道以 Telegram 为例 openclaw onboard详细教程https://docs.openclaw.ai/start/wizardQ4: OpenClaw 与 ChatGPT/Claude 有什么区别特性OpenClawChatGPT/Claude部署本地运行云端服务隐私完全本地上传云端渠道20 平台仅网页/App工具完整自动化受限成本用户自配 API Key可选便宜API订阅费用10. 参考资源官方文档https://docs.openclaw.aiGitHub 仓库https://github.com/openclaw/openclawDiscord 社区https://discord.gg/openclaw源码导读Gateway: src/gateway/server/ws-server.ts路由: src/routing/resolve-route.tsACP: src/acp/control-plane/manager.core.ts安全: src/security/audit.ts浏览器: src/browser/