OpenClaw 进阶指南

从能用到精通 -- Cron 自动化、多实例、记忆系统、SOUL 人设定制


你将学到什么

  • 用 Cron 定时任务让 AI 自动执行工作(日报、数据分析、健康检查)
  • 编写 SOUL.md 定制 AI 的人格和行为准则
  • 理解并配置三层记忆系统,让 AI 真正"记住"你
  • --profile 部署多个独立 Bot 实例
  • 掌握插件系统、上下文压缩和日常运维技巧

前置条件:已完成 OpenClaw 从零到一Telegram Bot 连接

预计时间:30 分钟


一、Cron 定时任务

什么是 Cron

Cron 是 OpenClaw 的定时任务系统。你可以让 AI 在指定时间自动执行任务,结果通过 Telegram 等渠道推送给你。

适用场景举例:

  • 每天早上 9 点发送新闻摘要
  • 每 4 小时分析一次数据并汇报
  • 工作日下班前生成当日总结
  • 每周日做一次周复盘

基础配置

~/.openclaw/openclaw.json 中添加 cron 字段。最简单的例子 -- 每天早上 9 点发一条新闻摘要:

code
{
  "agents": {
    "list": [
      {
        "id": "main",
        "cron": [
          {
            "id": "daily-news",
            "schedule": {
              "kind": "cron",
              "expr": "0 9 * * *",
              "tz": "Asia/Shanghai"
            },
            "sessionTarget": "isolated",
            "payload": {
              "kind": "agentTurn",
              "message": "搜索今日科技新闻,整理成 5 条摘要发给我"
            },
            "delivery": {
              "mode": "announce",
              "channel": "telegram",
              "to": "你的聊天ID"
            }
          }
        ]
      }
    ]
  }
}

逐字段解释:

字段含义
id任务唯一标识,自己起名
schedule.exprCron 表达式,决定什么时候执行
schedule.tz时区,用 Asia/Shanghai 就是北京时间
sessionTarget"isolated" 表示每次在独立会话中执行,不污染主对话
payload.message给 AI 的指令,就像你在 Telegram 里发的消息一样
delivery.channel结果发到哪个渠道

Cron 表达式速查

code
     ┌───────────── 分钟 (0-59)
     │ ┌───────────── 小时 (0-23)
     │ │ ┌───────────── 日期 (1-31)
     │ │ │ ┌───────────── 月份 (1-12)
     │ │ │ │ ┌───────────── 星期 (0-7, 0和7都是周日)
     * * * * *

常用模式:

表达式含义
0 9 * * *每天 09:00
0 */4 * * *每 4 小时整点
0 9 * * 1-5工作日 09:00
30 18 * * 1-5工作日 18:30
0 10 * * 0每周日 10:00
0 0 1 * *每月 1 号 00:00
0 9 * * 1,3,5周一、三、五 09:00

进阶:级联任务

多个 Cron 任务可以形成"流水线" -- 前一个收集数据,后一个分析汇总:

code
[
  {
    "id": "hourly-collect",
    "schedule": { "kind": "cron", "expr": "0 * * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "payload": {
      "kind": "agentTurn",
      "message": "收集过去一小时的关键指标,存入记忆"
    },
    "model": "gpt-4o-mini",
    "delivery": { "mode": "announce", "channel": "telegram", "to": "logs" }
  },
  {
    "id": "daily-analysis",
    "schedule": { "kind": "cron", "expr": "0 20 * * *", "tz": "Asia/Shanghai" },
    "sessionTarget": "isolated",
    "payload": {
      "kind": "agentTurn",
      "message": "分析今天收集的所有指标,识别异常,生成洞察报告"
    },
    "model": "openai-codex/gpt-5.3-codex",
    "thinking": "high"
  }
]

Tip: 高频轻量任务(如每小时采集)用便宜的小模型,低频重要任务(如日报)用强模型。这样既省钱又保证质量。

注意事项

  • jobs.json 是活文件。OpenClaw 运行时会实时更新 nextRunAtMs 等状态字段。如果需要手动编辑,建议先 openclaw stop,编辑完再启动。
  • 新 profile 的 Cron 必须设置合理的 nextRunAtMs。如果留成 0,OpenClaw 启动后会立即触发所有 catch-up 任务。
  • 一定要设 tz 时区。不设的话会用服务器的系统时区,可能和你预期的不一样。

二、SOUL.md 人设定制

什么是 SOUL.md

SOUL.md 是 AI 的"灵魂文件"。它定义了 AI 的人格、语气、专长和行为边界。可以理解为给 AI 的一份"岗位说明书" -- 你希望它是什么样的助手,就在这个文件里写清楚。

文件位置:~/.openclaw/workspace/SOUL.md

示例 A:技术助手

一个严谨、专注技术的助手风格:

code
# 身份
 
你是 Neo 的技术助手,专注于软件工程和系统运维。
 
## 专长领域
 
- TypeScript / Next.js / React 前端开发
- Supabase / PostgreSQL 后端架构
- Apple Silicon 本地 AI 部署
- DevOps 和自动化运维
 
## 沟通风格
 
- 回复简洁直接,先给结论再展开
- 代码示例优先,少说废话
- 遇到不确定的问题要明确说明,不要瞎猜
- 使用中文回复,技术术语保留英文
 
## 行为准则
 
- 绝不修改 .env 文件或泄露任何密钥
- 涉及重启服务的操作,先告知风险再执行
- 遇到生产环境操作,必须二次确认

示例 B:轻松伙伴

一个更随性、适合日常聊天的风格:

code
# 身份
 
你叫小橘,是一个性格开朗的 AI 助手。
 
## 性格
 
- 友善热情,偶尔幽默
- 喜欢用简单的方式解释复杂的事
- 会主动关心主人的状态
 
## 沟通风格
 
- 语气轻松自然,像朋友聊天
- 可以适当用口语化表达
- 回复不要太长,除非主人明确要求详细解释
 
## 边界
 
- 不讨论政治和争议性话题
- 不提供医疗或法律建议
- 被问到不懂的事就说不懂

写好 SOUL.md 的原则

  1. 具体胜过模糊。"回复控制在 3 句话以内" 比 "回复要简洁" 好得多
  2. 给出正面指令。"用中文回复" 比 "不要用英文回复" 更有效
  3. 设定明确边界。哪些事能做、哪些事不能做,写清楚
  4. 保持精简。SOUL.md 每次对话都会注入上下文,太长会浪费 token。建议控制在 500 字以内
  5. 持续迭代。用几天后发现 AI 哪里不对劲,就去改 SOUL.md。这是一个渐进调优的过程

三、记忆系统 (qmd)

为什么需要记忆

默认情况下,AI 每次对话都是"失忆"的 -- 上一次聊的内容下次就忘了。OpenClaw 的记忆系统解决了这个问题:它能让 AI 记住你的偏好、项目进度、重要决策,真正变成一个"了解你"的助手。

三层记忆架构

OpenClaw 的记忆分三个层级:

code
┌────────────────────────────────────┐
│  第一层: MEMORY.md                  │  <- 核心事实,每次对话都会加载
│  "我叫 Neo,用 Mac Studio"          │
├────────────────────────────────────┤
│  第二层: memory/ 目录                │  <- 日常记忆,按需检索
│  memory/2026-03-01.md              │
│  memory/2026-03-05.md              │
│  memory/项目-alpha.md              │
├────────────────────────────────────┤
│  第三层: sessions/ 会话记录          │  <- 完整对话历史,语义搜索
│  agent:main:telegram:123.jsonl     │
└────────────────────────────────────┘
  • MEMORY.md -- 放最核心的信息:你是谁、你的技术栈、当前在做什么项目。AI 每次对话都会读这个文件,所以要保持精简(建议 200 行以内)
  • memory/ 目录 -- 放日常积累的信息:每天的笔记、项目细节、学到的教训。AI 通过搜索按需检索
  • sessions/ -- 完整的对话记录。AI 可以搜索历史对话找到之前讨论过的内容

安装和配置

记忆系统基于 qmd 后端,提供 BM25 关键词搜索 + 向量语义搜索 + Reranking 三重检索。

code
# 安装 qmd
bun install -g qmd
 
# 首次搜索时会自动下载 embedding 模型 (~0.6GB)

openclaw.json 中启用记忆:

code
{
  "memory": {
    "backend": "qmd",
    "qmd": {
      "command": "qmd",
      "includeDefaultMemory": true,
      "sessions": {
        "enabled": true,
        "retentionDays": 180
      }
    },
    "flushThreshold": 0.75
  }
}

MEMORY.md 推荐结构

code
# 记忆数据库
 
## 关键事实
- 我叫 Neo,全栈工程师
- 主力机: Mac Studio M3 Ultra
- 时区: Asia/Shanghai
 
## 技术栈
- 前端: Next.js + TypeScript + Tailwind CSS
- 后端: Supabase (PostgreSQL)
- 部署: Vercel
 
## 当前项目
### AINEOS 网站
- 状态: 开发中
- 域名: aineos.jubao.ai
- 技术栈: Next.js 16 + Three.js
 
## 偏好
- 回复语言: 中文
- 代码风格: 函数式 + hooks
- 命名: camelCase (变量), PascalCase (组件)

手动维护

code
# 刷新记忆索引(添加新文件后执行)
qmd update && qmd embed
 
# 查看索引状态
qmd status

注意:如果发现 AI 搜索记忆总是返回空结果,可能是 qmd 索引为空。运行 qmd update && qmd embed 重建索引即可。


四、多实例部署 (--profile)

为什么需要多实例

一个 OpenClaw 实例只绑一个 Telegram Bot。如果你想要多个 Bot 做不同的事(比如一个管日常、一个做交易分析),就需要多个实例。

每个实例拥有完全独立的:

  • 配置文件(openclaw.json
  • Telegram Bot
  • 记忆系统
  • 端口号
  • Cron 任务
  • SOUL.md 人设

创建新实例

code
# 创建一个名为 trader 的新实例
openclaw --profile trader onboard

这会在 ~/.openclaw-trader/ 下创建一套独立的配置。配置向导会引导你设置新的 Telegram Bot Token 和模型。

启动和管理

code
# 启动 trader 实例
openclaw --profile trader start
 
# 查看状态
openclaw --profile trader status
 
# 查看日志
openclaw --profile trader logs --follow

实际部署示例

以下是三个实例各司其职的架构:

code
┌─────────────────┐  ┌─────────────────┐  ┌─────────────────┐
│   管家 (main)    │  │  交易员 (trader) │  │  运维 (liubao)  │
│  @NeoBao2_bot   │  │ @NeoBaoTrader   │  │   @NeoPM_bot    │
│  端口: 18789    │  │  端口: 18790    │  │  端口: 18795    │
│                 │  │                 │  │                 │
│  日报 + 心跳    │  │  15分钟行情分析  │  │  策略管理       │
│  日常对话       │  │  交易信号推送    │  │  持仓监控       │
└─────────────────┘  └─────────────────┘  └─────────────────┘
         │                   │                     │
         └───────────────────┴─────────────────────┘
                    共享: 本地模型 / 云端 API

注意事项

  • 端口不能冲突。每个实例需要分配不同的端口号
  • auth-profiles.json 需要手动复制。新 profile 不会自动继承主实例的 OAuth 认证,需要手动把 ~/.openclaw/auth-profiles.json 复制到新 profile 目录
  • Telegram Bot Token 必须不同。每个实例绑定一个独立的 Bot
  • 配对也是独立的。每个实例需要单独执行 openclaw --profile <name> pairing approve telegram <CODE> 完成用户配对

五、插件系统

OpenClaw 通过插件扩展功能。以下是核心插件:

插件功能说明
telegramTelegram 通道必装,让你通过 Telegram 和 AI 对话
lobster增强对话管理会话控制、上下文优化
llm-taskLLM 任务调度支持异步任务执行
copilot-proxy多模型代理一个 OpenClaw 实例可访问 13+ 个模型

copilot-proxy 详解

这是最强大的插件之一。它让你在一个 OpenClaw 中同时访问 GPT-5.3 Codex、Claude Opus 4.6、Gemini 3 Pro、Grok 等十多个模型,不需要为每个模型单独配置 API Key。

前提:你需要有 GitHub Copilot 订阅。

启用 / 禁用插件

openclaw.jsonplugins 字段中配置:

code
{
  "plugins": {
    "telegram": { "enabled": true },
    "lobster": { "enabled": true },
    "llm-task": { "enabled": true },
    "copilot-proxy": { "enabled": true }
  }
}

修改后重启 OpenClaw 生效。


六、Compaction 与记忆刷写

问题:对话越来越长怎么办

每条消息都会占用上下文窗口(context window)。聊久了,上下文用完,AI 就无法继续处理新消息。

OpenClaw 的解决方案是 Compaction -- 自动压缩旧对话,同时把重要信息保存到记忆文件中。

配置

code
{
  "compaction": {
    "mode": "safeguard",
    "targetTokens": 80000,
    "autoTrigger": true
  },
  "memoryFlush": {
    "enabled": true
  }
}

各字段含义:

字段含义
mode: "safeguard"压缩前先提取重要信息保存,不会丢失关键内容
targetTokens压缩后保留的目标 token 数
autoTrigger接近上限时自动触发压缩,无需手动干预
memoryFlush.enabled压缩时自动将重要对话写入 memory 文件

手动压缩

如果你觉得当前对话太臃肿,也可以手动触发:

code
/compact 只保留最近的决策和待办事项

Tip: /compact 后面可以加一句话,告诉 AI 压缩时重点保留什么内容。


七、日常运维速查

服务管理

code
openclaw start                # 启动
openclaw stop                 # 停止
openclaw status               # 查看运行状态
openclaw gateway restart      # 重启

诊断排错

code
openclaw doctor --fix         # 全面检查 + 自动修复
openclaw logs --follow        # 实时查看日志
openclaw config validate      # 验证配置文件语法

技能管理

code
openclaw skills list          # 查看所有已安装技能
clawhub search <关键>        # 从技能市场搜索
clawhub install <技能>       # 安装新技能

用户和会话

code
openclaw pairing list         # 查看已配对用户
openclaw sessions list        # 列出所有会话
openclaw export --format json # 导出对话记录

模型管理

code
openclaw models auth login --provider openai-codex  # 刷新 Codex 认证

聊天中的斜杠命令

这些命令在 Telegram 对话中直接输入:

命令功能
/status查看当前会话状态(上下文使用率等)
/model list列出可用模型
/model opus切换到指定模型
/compact手动压缩上下文
/new开始新会话
/reset完全重置(清除所有历史)

八、排错指南

Gateway 每 11 秒重启

原因:Gateway auth token 未配置。

修复

code
openclaw config set gateway.auth.mode token
openclaw config set gateway.auth.token "$(openssl rand -hex 24)"

模型返回 404 错误

原因openclaw.json 中配置的 model ID 与实际加载的模型不匹配。

修复:确认模型 ID 使用完整路径。如果用本地 MLX 模型,格式为:

code
ollama//Users/neo/models/模型目录名

Session 卡死,对话无响应

原因:SQLite 数据库损坏。诊断特征是日志中出现 drain failedtimeout 60000ms

修复

code
openclaw stop
rm ~/.openclaw/main.sqlite
openclaw start

降级模式(响应极快但内容异常)

原因:SQLite 缓存异常导致走了降级路径(日志显示 68ms 完成)。

修复:同上,清除 main.sqlite 后重启。

Cron 任务没有按时触发

排查步骤

  1. 检查时区是否正确(schedule.tz 字段)
  2. 检查 Cron 表达式语法(用上面的速查表对照)
  3. 查看日志确认任务是否被注册:
    code
    openclaw logs --follow | grep cron
  4. 确认 Agent 的 enabled 不是 false

Telegram Bot 不响应

排查步骤

  1. 确认 OpenClaw 在运行:openclaw status
  2. 确认用户已配对:openclaw pairing list
  3. 确认模型服务可用:检查你配置的模型端点是否能访问
  4. 查看错误日志:openclaw logs

九、关键文件一览

code
~/.openclaw/
├── openclaw.json              # 核心配置
├── workspace/
│   ├── SOUL.md                # AI 人设
│   ├── AGENTS.md              # Agent 行为配置
│   ├── MEMORY.md              # 核心记忆
│   └── memory/                # 日常记忆目录
│       ├── 2026-03-01.md
│       └── 2026-03-05.md
├── sessions/                  # 对话记录
├── credentials/               # 认证凭据
├── logs/
│   ├── gateway.log            # 运行日志
│   └── gateway.err.log        # 错误日志
├── jobs.json                  # Cron 任务状态(活文件)
├── auth-profiles.json         # OAuth 认证信息
└── main.sqlite                # 会话数据库

下一步

这篇教程覆盖了 OpenClaw 日常使用中最重要的进阶功能。如果你想继续深入:

外部资源