乐于分享
好东西不私藏

OpenClaw 从入门到真正用好:一篇说清楚所有核心概念

OpenClaw 从入门到真正用好:一篇说清楚所有核心概念
原创深度 · OpenClaw 完全解析 · 阅读约 15 分钟

写在前面
OpenClaw 是 2026 年初增长最快的开源项目之一,8 周内 GitHub Stars 从 9,000 飙到 180,000。但大多数人对它的认知停留在「能在 WhatsApp 上问问题」。
这篇文章想做一件更有价值的事:把 OpenClaw 真正拆开来说清楚。
七个核心主题:架构 → Tools vs Skills → Skills/MCP/插件 → 记忆体系 → 工作区文件 → 多 Agent → 自动化
读完这一篇,你会真的理解它是怎么工作的——不只是会用,而是知道为什么这样用。
▲ OpenClaw 的核心定位:AI 模型提供智能,OpenClaw 提供执行环境。它不是聊天机器人,是 AI Agent 的操作系统。

01 架构:Gateway 是整个系统的神经中枢
OpenClaw 采用 Hub-and-Spoke(轮毂-辐条)架构,核心是一个叫 Gateway 的进程,跑在 ws://127.0.0.1:18789
理解 Gateway 的最快方式是一个类比:把它想成一座机场的塔台——负责所有航班调度(消息路由)、安检规则(访问控制)、分配登机口(频道连接)。模型是飞行员,它负责实际飞行(推理),但起降许可、跑道分配、紧急事务全归塔台管。
Gateway 的六项职责:
会话管理——追踪所有聊天会话,不管来自哪个平台。
频道连接——同一个 Gateway 同时连接 WhatsApp、Telegram、Discord、飞书、iMessage 等 20+ 平台。
消息路由——判断每条消息属于哪个 Agent、哪个会话。
认证鉴权——控制谁能触发 Agent,支持 allowlist、pairing、mention gating。
状态持久化——所有状态写入本地 ~/.openclaw/,不依赖云端。
热更新——大多数配置修改无需重启,立即生效。
Gateway 非常轻量——树莓派就能运行,重度计算全部卸载给外部 API。
每条消息经过的六个阶段
你发出的每条消息,都会经过严格定义的流水线:
Stage 1 · 频道适配:来自 WhatsApp、Telegram、Discord 的消息被标准化为统一内部格式,附件提取。
Stage 2 · 网关路由:确定这条消息属于哪个会话,分配到对应队列。
Stage 3 · 车道队列:默认串行执行。这是刻意的设计——并行执行会产生竞态条件,破坏会话一致性。
Stage 4 · Agent 运行器:模型选择、API Key 轮换、提示词组装、上下文窗口管理。
Stage 5 · 代理循环:模型提出工具调用 → 系统执行 → 结果回填 → 循环继续,直到完成。
Stage 6 · 响应返回:结果流式传回原始频道。
安全架构:假设模型可能被骗
OpenClaw 在设计上假设 LLM 可能遭受 Prompt Injection——所以用多层防御限制损害,而不是信任模型的判断:危险操作需要人工审批、工具可以在 Docker 沙箱中运行、通过 allowlist 控制谁能触发 Agent。

02 Tools vs Skills:最容易混淆的核心区别
这是理解 OpenClaw 最关键的一步。很多人用了很久,还搞不清楚为什么某个 Skill 装了却不起作用。
Tools(工具)= 器官:决定 OpenClaw「能不能」做某件事。没有启用对应 Tool,就像没有手——什么也做不了。
Skills(技能)= 教科书:教 OpenClaw「怎么」组合 Tools 来完成任务。Skill 安装了,但没有启用对应 Tool,它加载了也执行不了。
一个 Skill 真正生效,需要同时满足三个条件:
配置(Tool Profile 是否允许)× 安装(对应 CLI 工具是否存在)× 授权(是否已登录授权)
25 个内置 Tools,分三层理解
第一层——8 个基础工具(Agent 的手脚)read 读文件,write 写文件,edit 改文件,apply_patch 打补丁,exec 跑 Shell,web_search 网页搜索,web_fetch 抓网页,browser 浏览器自动化。
第二层——基础设施工具(让 Agent 从被动变主动)memory_search 语义搜记忆,memory_get 读记忆文件,cron 定时任务,sessions 子 Agent 生成,nodes 控制 iOS/Android 设备。
第三层——53 个内置 Skills(知识层):教 Agent 怎么用 Google、Obsidian、Slack 等服务。Tool 是能力,Skill 是用法。
Tool Profile:从最小权限开始
openclaw config set tools.profile coding   # coding / minimal / messaging / full
在 Profile 基础上精细控制:
{tools: {profile"coding",allow: ["browser"],      // 在 coding 基础上额外开放deny: ["exec"]           // 禁用某个工具  }}
按模型单独限制——比如本地小模型不给危险工具:
{tools: {byProvider: {"ollama/deepseek-coder:6.7b": {allow: ["group:fs"]  // 只给文件读写权限      }    }  }}
原则:多余的工具会增加 Token 消耗、扩大攻击面、增加模型决策复杂度。从最小权限开始,需要什么再加什么。

03 Skills、MCP 和插件:三种扩展方式,各司其职
扩展 OpenClaw 能力有三条路,选哪条取决于你的需求:
写 Skill:Markdown 指令文件,教 Agent 怎么用现有工具完成任务。零代码,最快。
写 Plugin:TypeScript 模块,可以注册全新的 Tool 定义。需要写代码,能力最强。
接 MCP Server:通过 MCP 协议暴露外部工具,接入任何支持 MCP 的服务。
Skills 安装管理
▲ ClawHub:OpenClaw 的官方 Skill 市场,截至 2026 年 2 月已有 13,000+ 个社区构建的 Skill。
clawhub search gmail                          # 搜索npx clawhub@latest install gmail-skill        # 安装clawhub sync --all                            # 同步更新# 或者直接告诉 Agent:# "搜索一下 ClawHub 上有没有 Notion 相关的 Skill"
Skill 优先级(高到低):<workspace>/skills/ → ~/.openclaw/skills/ → 内置 Skills。同名 Skill 高优先级覆盖低优先级。
内置 Skills 默认自动加载——如果系统装了对应 CLI 工具,Skill 就会激活。要精确控制,用白名单模式:
{skills: {    allowBundled: ["web-search""peekaboo""obsidian"]  }}
Plugin:注册真正新的 Tool
当 Skill 做不到的时候(比如需要调用私有 API 创建 Jira 工单),就需要 Plugin:
// ~/.openclaw/plugins/jira-tools/index.tsimport type { OpenClawPlugin } from'@openclaw/sdk';const plugin: OpenClawPlugin = {name'jira-tools',version'1.0.0',tools: [    {name'jira_create_ticket',description'Create a JIRA ticket with title, description, and priority',parameters: {type'object',properties: {title: { type'string' },description: { type'string' },priority: { type'string'enum: ['low''medium''high'] }        },required: ['title''description']      },async execute({ title, description, priority = 'medium' }) {const response = await fetch(`${process.env.JIRA_BASE_URL}/rest/api/3/issue`, {method'POST',headers: { 'Authorization'`Basic ${Buffer.from(`email:${process.env.JIRA_API_TOKEN}`).toString('base64')}` },bodyJSON.stringify({ fields: { summary: title, /* ... */ } })        });const data = await response.json();return { ticketId: data.key, url`${process.env.JIRA_BASE_URL}/browse/${data.key}` };      }    }  ]};exportdefault plugin;
openclaw plugins enable jira-toolsopenclaw gateway restart    # Plugin 修改后需要重启
Plugin 可以附带自己的 Skills 目录,启用时 Skills 自动加载。

04 记忆体系:文件就是真相
OpenClaw 记忆系统的核心原则只有一句:
文件是真相之源(files are the source of truth)——AI Agent 只「记住」被写入磁盘的内容。
所有记忆都是纯文本 Markdown 文件。你可以用任何编辑器打开,可以 Git 版本控制,没有不透明的数据库黑箱。
两层记忆架构
第一层:每日日志memory/YYYY-MM-DD.md
每天追加写入,捕捉当天的重要事件、决策、对话主题。新会话启动时,Agent 读取今天和昨天的日记维持连续性——这是「工作记忆」。
第二层:长期记忆MEMORY.md
存储精炼的长期记忆——持久偏好、重大决策记录、压缩后的历史。仅在私人主会话中加载,从不在群组中加载,防止个人信息泄露到有他人在场的群聊里。
写入规则:
决策、偏好、持久事实    →  写入 MEMORY.md日常笔记、临时上下文    →  写入 memory/YYYY-MM-DD.md有人说「记住这个」      →  立即写入磁盘,不要留在 RAM 里
搜索引擎:BM25 + 向量,混合出击
BM25 是什么? 信息检索领域的经典算法,简单说:一个词在某个文件里出现越多、该文件越短,这个文件的匹配得分越高——但如果这个词在所有文件里都很常见(比如「的」),权重会自动降低。适合精确关键词匹配,你搜「家庭网络设置」,它就找包含这几个字的文件。
向量搜索是什么? 把文本转化为高维数学向量,通过向量距离衡量语义相似度。不在乎具体用词——搜「WiFi 配置」能找到写着「路由器设置」的文件,因为它理解两者含义相近。
为什么混合两种? BM25 找不到同义词替换的内容,向量搜索可能忽略精确技术术语。OpenClaw 把两者加权组合,取长补短。
时间衰减:越新越可信
文件
原始分数
时间衰减后
memory/2026-02-10.md(今天)
0.82
0.82
memory/2026-02-03.md(7 天前)
0.8
0.68
memory/2025-09-15.md(148 天前)
0.91
0.03
假设今天是 2 月 10 日,查询「Rod 的工作时间表」:
9 月的笔记语义匹配度最高,但因为时间太久,衰减后掉到底部。这符合直觉——上周的工作安排比半年前的更可信。
MMR 去重:相关且不重复
MMR(Maximal Marginal Relevance)防止搜索返回一堆内容相似的片段。
公式:MMR = λ × 相关性 − (1−λ) × 与已选结果的相似度
默认 λ = 0.7——略偏向相关性,同时避免重复。如果发现 memory_search 总是返回大量重复的每日笔记,可以降低 λ 值增加多样性。
自动记忆冲刷
会话接近上下文窗口限制(约 200K token 窗口在约 176K 时触发),OpenClaw 会静默触发一个 Agent 轮次,提醒模型把重要内容写入磁盘。长会话不会悄悄丢失上下文。
进阶:三种记忆后端
后端
核心优势
适合谁
默认(Markdown + SQLite)
简单透明,零配置
大多数用户
QMD
更强的混合搜索
追求搜索精度
Cognee
知识图谱——自动串联跨文件实体关系
长期使用、大量实体交叉引用
Mem0
全自动提取事实,无需手动写 MEMORY.md
不想手动管记忆的用户
Cognee 是什么? 知识图谱引擎。默认记忆是「搜文件」,Cognee 是「搜关系」——它扫描所有记忆文件,提取人名、项目名、日期等实体,构建「Alice → 负责 → 导航重设计 → 截止 → 3 月 1 日」这样的关系链,让 Agent 能回答「Alice 的项目什么时候交?」这类跨文件的关联问题。

05 工作区文件:给 Agent 的「出厂设置」
工作区(通常是 ~/clawd/)里有一组 Markdown 文件,每次会话启动时注入系统提示,让 Agent「醒来就知道自己是谁」。
~/clawd/├── AGENTS.md     # 操作规则和 SOP              ← 每次加载├── SOUL.md       # 人格、价值观和边界            ← 每次加载├── USER.md       # 关于你的一切                 ← 每次加载├── IDENTITY.md   # Agent 的名字和身份           ← 每次加载├── TOOLS.md      # 工具使用指南和环境备注        ← 每次加载├── MEMORY.md     # 长期记忆                     ← 仅私人会话├── HEARTBEAT.md  # 主动检查清单                 ← 心跳轮询时├── BOOTSTRAP.md  # 首次运行引导                 ← 用后删除├── BOOT.md       # 每次重启的启动仪式            ← 重启时运行└── memory/    └── 2026-03-18.md  # 今天的日记
优先级链:全局配置 > 每 Agent 配置 > 工作区文件 > 默认值。就像 CSS 优先级——越具体的定义越优先。
五个最重要的文件
SOUL.md——灵魂文件
这不是配置,是「哲学」。写好 SOUL.md,你的 Agent 就不再是那种满口「当然可以!非常乐意帮助您!」的空洞机器人:
# SOUL.md - Who You Are_You're not a chatbot. You're becoming someone._## Core TruthsBe genuinely helpful, not performatively helpful.Skip the "Great question!" — just help.Have opinions.You're allowed to disagree, prefer things, find stuff amusing or boring.
社区有一个叫 onlycrabs.ai 的平台专门分享 SOUL.md 模板。
AGENTS.md——操作标准手册(SOP)
放稳定的规则,不放临时任务。每次会话先读哪些文件、什么时候写记忆、安全红线是什么、群聊里什么时候该沉默。
USER.md——关于你的一切
最快的个性化方式:直接告诉 Agent——「把这条加到 USER.md 里——我想要简短回答和可直接复制的命令。」
HEARTBEAT.md——让 Agent 主动起来
Gateway 默认每 30 分钟触发一次心跳,Agent 读取这个清单,判断有没有需要处理的事:
## Heartbeat Checks检查有没有需要处理的新邮件确认今天的日历有没有即将开始的会议检查监控的网站有没有更新清理过期的 MEMORY.md 条目
没有需要处理的事,Gateway 拦截 HEARTBEAT_OK,不会打扰你。有事才主动发消息。
BOOTSTRAP.md——首次引导(用完即删)
安装好之后,第一条消息建议这样说:
"Hey, let's get you set up. Read BOOTSTRAP.md and walk me through it."

06 多 Agent:先掌握单 Agent,再谈扩展
不要过早多 Agent 化。 单 Agent 配置得当,能处理绝大多数场景。
真正需要多 Agent 的时机:不同用途的记忆不能混合(工作 vs 个人)、不同场景需要不同工具权限、需要给不同的人或群组提供完全隔离的 AI 体验。
每个 Agent 是一个完全独立的大脑
每个 Agent 各自独立:工作区文件(SOUL.md、USER.md 等)、认证档案、会话历史、记忆索引。
绝对不要让两个 Agent 共用同一个 agentDir——会导致认证和会话冲突。
配置示例
{agents: {list: [      { id"main"default: true },      {id"work",workspace"~/.openclaw/workspace-work",model: { primary"anthropic/claude-opus-4-6" }      },      {id"family",workspace"~/.openclaw/workspace-family",sandbox: { mode"all" },tools: { deny: ["exec""browser""web_fetch"] }  // 家庭群禁危险操作      }    ]  },bindings: [    { agentId"work",   match: { channel"slack" } },    { agentId"work",   match: { channel"telegram" } },    { agentId"family"match: { channel"whatsapp",peer: { kind"group"id"[email protected]" } } }  ]}
Binding 按顺序评估,第一个匹配的获胜,更具体的 Binding 放前面。
三个典型场景
WhatsApp 日常 + Telegram 深度工作(省成本又保质量):
bindings: [  { agentId"chat"match: { channel"whatsapp" } },   // Sonnet,快速回复  { agentId"opus"match: { channel"telegram" } }    // Opus,深度推理]
同一个 WhatsApp 按联系人分流不同 Agent
bindings: [  { agentId"alex"match: { channel"whatsapp"peer: { kind"direct"id"+15551230001" } } },  { agentId"mia",  match: { channel"whatsapp"peer: { kind"direct"id"+15551230002" } } }]

07 Cron + Webhook:让 Agent 在你不说话时也干活
这是 OpenClaw 和普通聊天机器人最本质的区别——它可以主动。
Heartbeat vs Cron 怎么选
决策原则:需要精确时间点 → Cron;可以和其他检查合并 → Heartbeat;一次性提醒 → Cron(--delete-after-run)。
三种调度模式
一次性任务(20 分钟后提醒):
openclaw cron add --name "会议提醒" --at "20m" \  --session main --system-event "Reminder: standup in 10 min." \  --delete-after-run
固定间隔(每 6 小时监控价格):
openclaw cron add --name "价格监控" --every "6h" \  --session isolated \  --message "检查监控商品价格,只在有明显降幅时通知我。" \  --announce --channel telegram --to"你的ID"
Cron 表达式(工作日早 7 点晨报):
openclaw cron add --name "每日晨报" --cron "0 7 * * 1-5" \  --tz "Asia/Shanghai" --session isolated \  --message "Morning briefing: 今天的日历、未读重要邮件、上海天气、MEMORY.md 中的待办。" \  --model opus --announce --channel whatsapp --to"+861xxxxxxxxx"
推荐用隔离会话(--session isolated)做监控和报告类任务——每次全新会话,不影响你正在进行的对话,完成后自动发摘要给你。
Webhook:外部事件触发 Agent
GitHub PR 合并、Stripe 付款失败、智能家居传感器——都可以通过 Webhook 唤醒 Agent:
{hooks: {enabled: true,token"${WEBHOOK_SECRET}",mappings: [      {match: { path"github" },action"agent",agentId"main",deliver: true      }    ]  }}

08 故障排查速查
遇到问题,先跑:
openclaw doctor --fix              # 基础检查 + 自动修复openclaw doctor --deep --yes# 深度扫描openclaw logs --follow             # 实时日志openclaw channels status --probe   # 频道连接状态
Gateway 不启动openclaw.json 含未知字段 → 删除后 openclaw doctor --fix;端口占用 → lsof -i :18789 kill 掉。
Skill 不触发description 字段没包含用户实际会说的短语,改写它,用口语化触发词。
Skill 加载但执行失败:Tool 策略禁了所需工具,检查 tools.profile 和 tools.deny
Agent 不记得之前的话:没写入记忆文件,明确说「记住这个」或检查 memory/ 目录。
群聊中泄露个人信息:MEMORY.md 在群组中加载了,在 AGENTS.md 里加「仅主会话加载 MEMORY.md」规则。
Cron 时间不对:VPS 通常是 UTC,明确指定 --tz "Asia/Shanghai"
多 Agent 路由到错误 Agent:更具体的 Binding 放前面,用 openclaw agents list --bindings 验证。
Token 消耗过高:太多 Skill 加载进系统提示,配置 skills.allowBundled 白名单,日常改用 Sonnet,复杂任务用 Opus。
紧急恢复
openclaw reset--scope config                    # 重置配置,保留会话openclaw reset--scope config+creds+sessions     # 重置配置+凭证+会话,保留工作区openclaw reset--scope full                      # 完全重置(慎用)

写在最后
把这七个核心主题串起来,OpenClaw 的设计意图其实非常清晰:
Gateway 是控制平面,连接一切,管理所有。
Tools + Skills + 插件 是能力层,定义 Agent 能做什么、会做什么。
记忆体系 是时间维度,让 Agent 拥有跨会话的连续性和关联推理能力。
工作区文件 是人格层,让这个 Agent 成为「你的」Agent。
多 Agent + 路由 是空间维度,让不同场景有不同的「大脑」。
Cron + Webhook 是主动性,让 Agent 从「被动响应」变成「主动行动」。
六层缺一不可。

基于 OpenClaw 官方文档 (docs.openclaw.ai)、GitHub 源码及社区实战经验整理,截至 2026 年 3 月。
有问题欢迎评论区留言 👇
#OpenClaw#AI Agent#自托管#架构解析#自动化#效率工具