第二章:从"能用"到"离不开"

上篇《配置与调教》教你给 AI 装上了人格和记忆。但你可能发现——它还是只能等你说话才动,复杂任务经常翻车,token 费用蹭蹭涨。这篇解决这些问题。

这篇教程是折腾 OpenClaw 一个多月、踩了无数坑之后总结出来的实战经验。不是翻译官方文档,是真金白银的 token 烧出来的。每一个配置、每一个"推荐值"都是反复试错后的结论。

本篇默认你已经:装好了 OpenClaw 并能正常聊天、写过 SOUL.md / USER.md / IDENTITY.md、知道 MEMORY.md 和 memorySearch 是什么。

本篇覆盖 7 个主题:

  1. AGENTS.md — 给 AI 写一部行为宪法
  2. 记忆系统实战 — 让 AI 真正"记住",而且自己维护
  3. 子 Agent — 一个人变一支团队
  4. Cron 定时任务 — 精确到分钟的自动化
  5. Skill 开发 — 教 AI 学新技能
  6. 多渠道接入 — 随时随地找到你的 AI
  7. 配置速查表 — 把每个参数调到最优
维度上篇水平本篇调教后
行为规范SOUL.md 写了几行完整行为宪法
记忆有分层结构自动维护、自动压缩、语义检索秒回
任务能力主脑单线程干活一个人变一支团队,并行派活
自动化心跳能巡检精确定时任务,早报晚报自动发
扩展性装了几个 skill自己能写 skill
渠道接了一个平台多平台同时在线
配置能跑就行每个参数都调到最优

一、AGENTS.md — 给 AI 写一部行为宪法

这是什么?为什么重要?

上篇我们写了 SOUL.md(它是谁)、USER.md(你是谁)、IDENTITY.md(名字和形象)。但 AI 不知道该怎么工作——不知道每次新对话该先读什么文件,不知道记忆该写到哪里,不知道哪些操作可以自己做、哪些要先问你。就像招了一个很聪明的实习生,但没给他工作手册。

AGENTS.md 就是 AI 的工作手册:

AGENTS.md 放在 workspace 根目录,OpenClaw 每次新 session 都会自动加载。

Session 启动流程

AI 每次新 session 都是"失忆"状态。你需要告诉它醒来后按什么顺序读文件来恢复记忆:

## Every Session
Before doing anything else:
1. Read `SOUL.md` — this is who you are
2. Read `USER.md` — this is who you're helping
3. Read `memory/YYYY-MM-DD.md` (today + yesterday) for recent context
4. If in MAIN SESSION: Also read `MEMORY.md`
Don't ask permission. Just do it.

逐行解释:

你不需要手动判断当前是什么 session。只要在 AGENTS.md 里写清楚规则,AI 会自己判断。

记忆写入规范

在 AGENTS.md 里加上写入规范,核心思想是"记结论不记过程":

## Memory
You wake up fresh each session. These files are your continuity.

### 写入规则
- 日志写入 `memory/YYYY-MM-DD.md`,记结论不记过程
- 项目有进展时同步更新 `memory/projects.md`
- 踩坑后写入 `memory/lessons.md`
- MEMORY.md 只在索引变化时更新
- 想记住就写文件,不要靠"记在脑子里"

好日志 vs 烂日志:

烂日志:"今天部署了项目。先试了直接跑,报错了。然后查了半天,发现是端口被占了……"

好日志

### [PROJECT:MyApp] 部署完成
- **结论**: 用 nginx 反代部署成功,监听 80 端口
- **文件变更**: `/etc/nginx/sites-available/myapp`
- **教训**: 直接暴露端口不可行,必须走 nginx 反代
- **标签**: #myapp #deploy #nginx

安全边界

## Safety
- Don't exfiltrate private data. Ever.
- Don't run destructive commands without asking.
- `trash` > `rm`
- When in doubt, ask.

**Safe to do freely:** Read files, search, organize, work within workspace
**Ask first:** Sending emails/tweets, anything that leaves the machine

## Group Chats
You have access to your human's stuff. That doesn't mean you share it.
In groups, you're a participant — not their voice, not their proxy.

关键原则:内部操作自由,外部操作要问。群聊里管住嘴。

这个模板是精简版。随着你用 OpenClaw 越来越深入,你会不断往里加规则。AGENTS.md 是活文档,跟着你的使用习惯一起成长。

二、记忆系统实战

memoryFlush:对话再长也不丢记忆

问题:跟 AI 聊了一个小时,突然"失忆"了——上下文压缩(compaction)触发了,压缩过程中丢失了细节。

memoryFlush 的工作原理:在压缩之前,先让 AI 把重要信息写到文件里,然后才执行压缩。

{
  "agents": {
    "defaults": {
      "compaction": {
        "reserveTokensFloor": 20000,
        "memoryFlush": {
          "enabled": true,
          "softThresholdTokens": 4000
        }
      }
    }
  }
}
参数含义推荐值
reserveTokensFloor压缩后至少保留多少 token20000
memoryFlush.enabled是否开启压缩前自动保存true
softThresholdTokens距离压缩多少 token 时触发4000

日志写入规范:让 memorySearch 更精准

memorySearch 底层是向量语义检索。结构化日志比自由文本命中率高得多:

自动记忆维护:防止记忆腐烂

在 HEARTBEAT.md 里加每周维护任务,让 AI 自己整理记忆:

## 记忆维护(每周一次)
如果距今 >= 7 天:
1. 读最近 7 天的日志
2. 提炼有价值的信息到 projects.md / lessons.md
3. 压缩已完成任务的日志为一行结论
4. 删除过期信息
5. 更新 heartbeat-state.json

memorySearch 进阶:免费 Embedding API

推荐 SiliconFlow 的 bge-m3 模型:免费、中英双语好、向量维度 1024。

{
  "memorySearch": {
    "provider": "openai",
    "remote": {
      "baseUrl": "https://api.siliconflow.cn/v1",
      "apiKey": "你的 SiliconFlow API key"
    },
    "model": "BAAI/bge-m3"
  }
}

AI 内部工作流:memory_search("nginx 问题") → 定位文件和行号 → memory_get 精确读取 → 回答。search 负责"找到在哪",get 负责"读出来"。

三、子 Agent — 一个人变一支团队

什么是子 Agent?

主 AI(主脑)可以派出独立的 AI 进程执行任务。每个子 Agent 有自己的 session、上下文,甚至可以用不同模型。

模型分级

在 AGENTS.md 里写明模型分级策略,token 消耗能降 60-70%:

等级模型适用场景
🔴 高opus复杂架构设计、深度推理
🟡 中sonnet写代码、信息整理(默认)
🟢 低haiku文件操作、格式转换

上下文传递:子 Agent 的最大坑

子 Agent 是"零上下文"的,只能看到 task 描述。好的 task 应包含:目标、文件路径、约束、背景、验收标准。

烂 task 描述

"帮我审查一下代码"

子 Agent 不知道审查哪个文件、关注什么问题、结果写到哪里。

好 task 描述

审查 /src/api/auth.py 的安全问题。重点关注:SQL 注入、未验证的用户输入、硬编码密钥。不要修改文件,把发现的问题写入 /tmp/audit-report.md,格式:问题描述 + 行号 + 修复建议。

并发控制

经验值:同时最多跑 2-3 个子 Agent。有依赖关系的任务必须串行——比如"先爬数据,再分析数据",分析任务必须等爬取完成。

子 Agent 并发过多会导致 API 限速,而且主脑需要同时跟踪多个任务状态,容易出错。2-3 个是经过实测的安全上限。

四、Cron 定时任务

Heartbeat vs Cron

HeartbeatCron
精度约 30 分钟精确到分钟
执行环境主 session可开独立 session
模型主脑模型可指定不同模型
适合批量轻量检查精确定时独立任务

两种执行模式

三种调度类型

一定要设 tz(时区)!不设默认 UTC,你的"每天早上 9 点"可能变成凌晨 1 点。

常用 cron 表达式:

0 9 * * *    # 每天早上 9 点
0 9 * * 1   # 每周一早上 9 点
*/30 * * * * # 每 30 分钟

四个实用场景

1
N 分钟后提醒我

at + systemEvent,执行一次后自动删除。适合"30 分钟后提醒我开会"这类临时提醒。

2
每天早上发新闻简报

cron + agentTurn + haiku 模型。每天定时开独立 session,搜索新闻、整理摘要、发送到 Telegram。成本极低。

3
每小时检查服务状态

every + agentTurn + haiku。关键:在 task 里写"只有服务挂了才通知我",正常时静默。否则每小时一条消息会把你逼疯。

4
每周一发项目周报

cron + agentTurn + sonnet。读取本周日志,整理进展、问题、下周计划,发送给相关人员。

五、Skill 开发入门

Skill 是什么?

Skill 就是一份给 AI 看的操作手册(SKILL.md)。AI 在需要时自动读取并按步骤执行。加载优先级:workspace/skills/ > ~/.openclaw/skills/ > 内置 skill。

SKILL.md 结构

---
name: weather
description: >
  获取天气信息。触发条件:用户问天气、气温、是否下雨、
  穿什么衣服、需不需要带伞等。
---

## 执行步骤
1. 识别用户提到的城市(没有则问)
2. 调用 wttr.in API 获取天气数据
3. 格式化输出:温度、天气状况、建议

## 错误处理
- API 超时:重试一次,仍失败则告知用户

description 是最关键的字段——AI 靠这个判断是否触发。要写得具体且全面,把所有可能的触发场景都列出来。

手把手写一个 IP 查询 Skill

  1. 创建目录:mkdir -p ~/.openclaw/workspace/skills/ip-lookup
  2. 写 SKILL.md:触发条件("用户问某个 IP 是哪里的")、执行步骤(调用 ip-api.com)、输出格式
  3. 测试:"帮我查一下 8.8.8.8 是哪里的"
  4. 迭代优化:根据实际效果调整 description 和步骤描述

进阶:带脚本的 Skill

比如视频下载 Skill,需要调用 yt-dlp:

skills/video-downloader/ SKILL.md ← 操作手册 scripts/ download.sh ← 实际执行脚本

SKILL.md 里引用脚本路径,写清楚执行步骤。社区 skill 可以在 clawhub.com 找到。

六、多渠道接入

OpenClaw 支持同时接入多个聊天平台:Telegram、Discord、WhatsApp、飞书、QQ 等。配置好后,AI 在所有平台同时在线,你在哪个平台发消息,它就在哪里回复。

注意不同平台的格式差异:

平台Markdown 支持字符限制特殊注意
Telegram支持4096 字符表格需要用代码块
Discord支持2000 字符长内容自动分段
WhatsApp不支持用 bullet list 代替表格
飞书不支持纯文本,避免 Markdown

AI 会根据当前渠道自动适配格式。在 SOUL.md 或 AGENTS.md 里写明各平台的格式偏好,效果更稳定。

七、配置速查表

blockStreaming — 流式回复

开启后回复像打字机一样逐字出现,体验更好。

{
  "agents": {
    "defaults": {
      "blockStreamingDefault": "on",
      "blockStreamingBreak": "text_end",
      "blockStreamingChunk": { "minChars": 200, "maxChars": 1500 }
    }
  }
}

ackReaction — 确认收到

收到消息后先 react 一个 emoji,让你知道 AI 在处理中,不用干等。

{
  "channels": {
    "discord": { "ackReaction": "🫐" },
    "telegram": { "ackReaction": "👀" }
  }
}

compaction — 上下文不爆炸

配置 reserveTokensFloor + memoryFlush(见第二章)。相关命令:/compact/new/reset/status

Heartbeat 调优

{
  "heartbeat": {
    "every": "30m",
    "target": "last",
    "activeHours": { "start": "08:00", "end": "23:00" }
  }
}

设了 activeHours 后 23:00-08:00 不会打扰你。

其他实用配置

配置 Checklist

按优先级排序,先做前 5 项(不到 1 小时)就能感受到明显提升:

  • AGENTS.md:session 启动流程 + 记忆规范 + 安全边界30 分钟
  • memoryFlush:开启压缩前自动保存5 分钟
  • ackReaction:配置确认 emoji1 分钟
  • blockStreaming:开启流式回复5 分钟
  • Heartbeat 调优:设置 activeHours5 分钟
  • memorySearch:配置免费 embedding API10 分钟
  • 记忆维护:HEARTBEAT.md 加每周维护10 分钟
  • 模型分级:配置 alias + AGENTS.md 分配策略15 分钟
  • Cron 任务:设置 1-2 个定时任务15 分钟
  • Skill 开发:写一个自定义 skill 练手30 分钟
  • 多渠道:接入第二个聊天平台30 分钟

写在最后

到这一步,你的 OpenClaw 已经不是一个"聊天机器人"了——它更像一个真正的私人助手:

浏览器自动化、复杂工作流编排、多 Agent 协作……更深入的玩法,以后有机会再聊。