# OpenClaw 调教最佳实践（学习笔记）

来源：NodeSeek 帖子 post-622721，作者 rocs（5 台 OpenClaw 实战经验）

---

## 🧠 核心理念：文件即记忆

AI 每次醒来都是失忆的。对话窗口是临时的，文件才是永久的。
所有规则、记忆、行为都必须变成物理文件，AI 才有连续性。

---

## 📁 推荐文件架构

```
~/.openclaw/workspace/
├── SOUL.md          # 性格、规则、底线
├── AGENTS.md        # 启动流程、记忆管理、安全边界
├── USER.md          # 主人档案：偏好、环境、习惯
├── IDENTITY.md      # 名字、物种、emoji
├── MEMORY.md        # 长期记忆（脱水提炼的精华）
├── HEARTBEAT.md     # 心跳任务（后台自动维护）
├── TOOLS.md         # SSH、设备、本地配置笔记
├── memory/
│   ├── YYYY-MM-DD.md          # 每日流水账
│   └── heartbeat-state.json   # 心跳状态追踪
└── skills/                    # 自定义技能/SOP
```

---

## 🔄 启动加载（治愈失忆症）

在 AGENTS.md 里写死启动序列，每次新 session 不可跳过：
1. 读 SOUL.md — 你是谁
2. 读 USER.md — 你帮谁
3. 读 memory/YYYY-MM-DD.md（今天+昨天）— 近期上下文
4. 主 session 额外读 MEMORY.md — 长期记忆

效果：每次醒来第一秒就知道自己是谁、主人是谁、昨天干了什么。

---

## 💧 记忆脱水（拒绝流水账）

每日 daily notes 会越来越长，90% 是噪音。

在 HEARTBEAT.md 配置自动脱水（建议每 3 天一次）：
1. 读取近几天的 daily notes
2. 提炼：重要决策、踩坑教训、基础设施变更、用户偏好
3. 去掉：临时调试过程、中间状态、废话
4. 更新 MEMORY.md（合并去重，删过时条目）
5. 用 heartbeat-state.json 追踪上次执行时间

---

## 📋 SOP 驱动（杜绝"自以为是"）

复杂操作写成 Skill（Markdown 脚本），AI 按步骤执行，不靠灵感靠流程。
每一步有明确的命令、预期输出、踩坑提示。

---

## 🔒 SOUL.md 绝对规则示例

- 永远用用户偏好的语言回复
- 不要输出思考过程
- 每次新对话先读记忆文件
- 查配置用 gateway config.get，不要凭感觉
- 任务完成后必须反馈具体结果，不能只说"搞定了"

---

## 🧩 智力分层（省钱）

| 场景 | 模型选择 | 原因 |
|------|---------|------|
| 主力对话 | claude-opus 等强模型 | 需要理解力和执行力 |
| 心跳巡检 | 便宜小模型 | 够用就行 |
| Fallback | 中等模型 | 主力挂了自动切 |

- Cache 命中率直接决定成本：100% cache ≈ $0
- Session 越少越好，cron job 是 cache 杀手
- 心跳用便宜模型，主力用贵模型，分层省钱

---

## 💓 心跳不只是 HEARTBEAT_OK

每次心跳可以做：
- 记忆脱水（自动整理 daily notes）
- 健康检查（探测 API/服务可用性）
- 定期巡检（磁盘、种子、元数据等）
- Telegram 菜单恢复（OpenClaw 重启会覆盖）

---

## 🔧 踩坑大全

- `openclaw doctor --fix` 会静默覆盖配置 → 每次 doctor 后检查关键配置
- 不要创建 BOOTSTRAP.md → 会让 agent 卡在 bootstrapping 循环
- Telegram 尖括号 `<>` 会被当 HTML 解析导致消息截断 → 用反引号包裹
- SSH 长命令容易超时断连 → 用 nohup 后台执行，主动回查结果
- 后台任务启动后必须设定时间主动检查，不能丢了不管

---

*整理自 2026-02-20 NodeSeek 帖子，结合实际运维经验。*
