引言:打开技能的'黑盒'
你是否好奇过,OpenClaw 的技能究竟是如何工作的?为什么一个 self-improving 技能能让 AI 拥有跨会话的记忆,甚至能从错误中自我反思?答案并不在神秘的代码深处,而是藏在每个技能目录下那个看似普通的 Markdown 文件——SKILL.md 中。
SKILL.md 是技能的'基因组'。它用一套清晰、结构化的语法,定义了技能的触发条件、行为逻辑、学习规则,甚至自我更新的方式。今天,我们就以 self-improving 技能为样本,打开它的 SKILL.md,逐行解析其中的设计智慧,带你理解 AI '自我进化'背后的底层逻辑。
一、SKILL.md 概览:技能的'身份证'与'操作手册'
一个典型的 self-improving 技能目录结构如下:
self-improving/
├── SKILL.md # 核心定义文件
├── memory/ # 记忆存储目录
│ ├── memory.md # HOT 层(常驻记忆)
│ ├── projects/ # WARM 层(项目级记忆)
│ └── archive/ # COLD 层(归档记忆)
├── hooks/ # 钩子脚本(可选)
└── README.md # 技能说明
而 SKILL.md 本身由几个关键区块组成,我们可以通过一张结构图来认识它们:
| 区块 | 内容 |
|---|---|
| 元数据区 | 技能名称、版本、作者 |
| BEHAVIOR | 行为定义、触发器列表、依赖项 |
| LEARNING | 记忆捕获规则、分层存储策略 |
| SELF-EVOLUTION | 自我反思流程、人类确认机制、元学习指令 |
接下来,我们将逐一深入这些区块,揭示 self-improving 技能的底层逻辑。
二、提示词原理:BEHAVIOR 区块的指令逻辑
BEHAVIOR 区块是技能的核心,它用近乎伪代码的清晰语言,定义了 AI 在特定事件下该如何行动。这其实就是 '提示词原理' 的具体体现——通过结构化的指令,让 AI 执行复杂的认知任务。
1. 记忆捕获规则:从纠正中学习
### 1. 记忆捕获规则
当触发器 `on_user_correction` 被激活时,执行以下流程:
a. 解析用户消息,识别纠正类型:
- 偏好纠正(如'我更喜欢 X')
- 事实纠正(如'这个命令应该是 Y')
- 流程纠正(如'你应该先做 A 再做 B')
b. 生成候选记忆条目,格式为:
`[<context>] <pattern> -> <preference>`
例如:`[coding:python] "use print instead of logger" -> "avoid logger"`
c. 将候选条目写入 `~/self-improving/memory/pending/` 目录,并记录首次出现时间。
原理图解:
- 用户纠正
- 触发
on_user_correction - 解析纠正类型
- 生成候选记忆条目
- 存入 pending 目录
- 等待确认
这段规则揭示了 AI 是如何从用户的自然语言中 '提炼' 出结构化记忆的。通过模式识别(如关键词匹配),AI 将模糊的纠正转化为清晰的'模式→偏好'映射,并暂存在待确认区,等待后续的验证。
2. 分层存储策略:模拟人脑的认知分级
### 2. 分层存储策略
- **HOT 层** (`memory/memory.md`):
- 存储最近 7 天内使用次数 ≥ 3 的条目,或用户明确'固定'的条目。
- 行数上限:100 行。超出时按'最近最少使用'淘汰至 WARM 层。
- **WARM 层** (`memory/projects/`, `memory/domains/`):
- 按项目或领域分类存储,每个文件独立。
- 加载条件:当用户当前任务路径或话题匹配项目/领域标签时,自动加载对应文件。
- **COLD 层** (`memory/archive/`):
- 超过 90 天未访问的条目自动移入。
- 不主动加载,但可通过用户手动查询调取。

