OpenClaw 高级篇要解决的就是这个问题:怎么把实习生变成正式员工。正式员工需要四样东西——岗前培训(Skill)、工作 SOP(Hook)、系统权限(MCP)、以及独立负责项目的能力(自主任务)。每个方向一个核心概念加一个杀手级案例,拆开来看。

Skill:给 Agent 装上业务知识

你每天告诉 Agent 日报格式:先写完成的工作、再写重要决策、最后写明天计划。说了五十遍,换个 session 又忘了。不是它笨,是你教的东西全存在对话里——session 一断就没了。

Skill 本质上就是一个 SKILL.md 文件,放在 skills/ 目录下。Agent 启动时扫描这个目录,识别触发词,匹配到就把内容注入 context。

它和 AGENTS.md 的区别很关键:AGENTS.md 是通用工作规范,每次 session 都加载;Skill 是特定业务流程,按触发词按需加载。一个管工作态度,一个管业务知识。

案例:日报 Skill

没有 Skill 时,你每天要输入五十个字的指令描述格式。有了 Skill,创建 ~/.openclaw/skills/daily-report/SKILL.md

---
name: daily-report
description: >
  Generate daily work reports by reading memory files and summarizing activities.
  Triggers: "daily report", "日报", "今天做了什么", "工作总结".
---
# Daily Report Skill

When triggered:
1. Read today's memory file (memory/YYYY-MM-DD.md)
2. Extract key activities, decisions, and issues
3. Format as:
   - 完成的工作
   - 重要决策
   - 遇到的问题
   - 明天计划

从此你只需要说三个字:写日报。五十个字变三个字,而且不管换多少次 session,格式永远一致。

记住一句话:Skill 管知道什么,Hook 管自动做什么,MCP 管能做什么

Hook:给 Agent 装上反射弧

每次开新 session 你都要说「先看一下今天的计划」。说了一百遍终于想明白——你是老板,不是提词器。

Hook 就是 Agent 的膝跳反射。特定事件发生时,代码直接跑,不经过 LLM 思考,不需要它"决策"要不要执行。

这和 Skill 是两个层面。Skill 是给 Agent 一本操作手册——它可能看可能不看,看了也可能理解偏。Hook 是装了一个传感器加执行器——事件一来代码直接跑,100% 确定执行。一个是建议,一个是铁律。

Hook 的目录结构很简单:

my-hook/
├── HOOK.md          # 声明监听什么事件
└── handler.ts       # 事件触发时跑什么代码

案例:新 session 自动加载今日计划

创建 hooks/session-loader/HOOK.md

---
name: session-loader
description: "新 session 自动加载今天的工作日志"
metadata:
  openclaw:
    events: ["command:new"]
    requires:
      bins: ["node"]
---

创建 hooks/session-loader/handler.ts

import { readFileSync, existsSync } from "fs";
import { join } from "path";

const handler = async (event) => {
  if (event.type !== "command" || event.action !== "new") {
    return;
  }

  const memoryDir = join(process.cwd(), "memory");
  const today = new Date().toISOString().split("T")[0];
  const diaryPath = join(memoryDir, `${today}.md`);

  if (existsSync(diaryPath)) {
    const content = readFileSync(diaryPath, "utf-8");
    event.messages.push(`今天的工作日志已加载:\n${content}`);
  } else {
    event.messages.push("今天还没有工作日志,开始新的一天");
  }
};

export default handler;

效果:打开新 session,Agent 已经知道今天要做什么。「先看一下今天的计划」这句话从此从你的工作流里消失了。

别被 TypeScript 吓到。你不需要会写代码,只需要定义清楚「在什么时机做什么事」——这是 trigger + action 的问题,本质上是产品经理天天在做的事。让 Agent 帮你写 handler.ts 就行。

Hook 的进阶场景也很有想象力:

  • 监听 compact 事件:context 被压缩前自动保存任务状态,压缩后自动恢复
  • 监听 write 操作:拦截危险的文件覆盖
  • 配合 Heartbeat:每次心跳自动检查未完成任务

从「你提醒 Agent」变成「Agent 自己知道」——这就是反射弧的力量。

MCP:AI 世界的 USB 接口

Agent 默认只会两件事:思考和对话。你想让它查数据库,做不到;想让它操作特定目录,也做不到。得给它接外设。

MCP(Model Context Protocol)就是 AI 世界的 USB 接口。不管什么外部服务——数据库、搜索引擎、文件系统、浏览器——只要支持 MCP 协议就能接上去。不需要为每个服务写专用对接代码,就像 USB 统一了所有外设接口一样。

架构一句话说清:Agent → mcporter(桥梁)→ MCP Server → 外部服务

案例:一条配置接上文件系统

config/mcporter.json 里写:

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "/server-filesystem", "/tmp/mcp-test"]
    }
  }
}

三行配置。最后那个路径是安全边界,限制 Server 只能读写这个目录——和给 App 设权限一个道理。

配好后验证:

mcporter list
# 看到 filesystem Server 和它暴露的工具就说明成功了

mcporter call filesystem read_file path=/tmp/mcp-test/test.txt
# 读取测试文件

之后在对话中直接说「帮我用 MCP 读取 /tmp/mcp-test 下的文件」,Agent 会自动走 mcporter 调用。

没接 MCP 的 Agent 只会聊天,接了 MCP 的 Agent 能用工具干活。

MCP 生态已经很丰富了:文件系统、PostgreSQL/SQLite、Brave Search、Puppeteer 浏览器自动化、持久化记忆……一个接口,无限外设,每个新 Server 只需要在 mcporter.json 加几行配置。

不过有一点要说清楚:不要为了用 MCP 而用 MCP。简单的文件读写 Agent 自带工具就够了,MCP 适合的是需要接外部 API、需要标准化多个外部服务调用方式的场景。

自主任务:从指令驱动到目标驱动

这是中级篇到高级篇最大的认知升级。

指令驱动:你给步骤,Agent 执行——你说第一步搜 GitHub,它搜了,然后等你说第二步。目标驱动:你给目标,Agent 自己拆解子任务、规划执行顺序、判断完没完成。

实现目标驱动需要三个基础设施:

  • 计划文件——Agent 自己创建和更新,不是你替它写
  • Heartbeat——每 30 分钟推醒 Agent,让它检查有没有事要做
  • AGENTS.md 规则——告诉 Agent 遇到目标型任务怎么拆解、执行、评估

实战案例:一句话驱动 6 步调研

给 Agent 一个目标:完成高级篇 6 个方向的素材采集。只说了一句话:「按照素材采集 prompt 里的 6 个方向,逐个完成调研和实战。」

Agent 自己做了这些事:

  1. 读取目标文档,理解 6 个方向的具体要求
  2. 自己创建计划文件 temp/advanced-material-plan.md
  3. 把 6 个方向拆成 6 个阶段,每个阶段有明确产出物
  4. 从第一个方向开始执行——搜索文档、实战测试、记录踩坑
  5. 每完成一个阶段自动更新计划文件进度
  6. Heartbeat 定期检查,确保 Agent 没忘记自己在做什么

中间 context 被压缩了两次,跨了三个 session。但每次新 session 开始,Agent 读取计划文件接着上次进度继续,没丢任何进度。最终产出 5 份素材文件,加起来超过 160KB。

说白了,中级篇教的计划文件 + Heartbeat 是基础设施,高级篇的自主任务是在基础设施上搭建自主性。中级篇你手动创建计划文件让 Agent 执行,高级篇 Agent 自己创建计划文件自己执行。

当然不是所有任务都适合目标驱动——简单的事直接给指令更快。但当任务复杂到你自己都不确定该分几步的时候,让 Agent 试试。

四件装备串起来看

  • Skill 让它懂业务
  • Hook 让它按规矩
  • MCP 让它用工具
  • 自主任务 让它独立干活

从中级到高级,不是学了四个新概念,而是把之前养出来的能力用起来了:中级篇的搜索策略变成了高级篇的 MCP 工具选择,计划文件变成了自主任务,Heartbeat 加上 Hook 让所有手动操作变成全自动。

如果你还在每天给 Agent 重复同样的指令,先从一个最简单的 Skill 开始——把你说得最多的那句话变成一个触发词。这一步做完,你会突然理解为什么说 Agent 不是工具,而是员工。