学习与记录 Skill
核心理念
学习不固化 = 白学。每次学完一个东西,必须产出可复用的资产。
学习流程
Phase 0: 准备(开始前)
- 1. 明确目标 — 学什么?学到什么程度?能用来干什么?
- 收集入口 — 官方文档、GitHub repo、教程、示例项目
- 建立笔记文件 — 在
memory/learning-logs/<主题>-<日期>.md 创建学习日志 - 列出探索清单 — 预估要搞清楚的关键问题
Phase 1: 环境搭建
记录以下内容:
- - 安装命令(完整、可复现)
- 依赖冲突和解决方案
- 版本信息(
--version) - 环境变量配置
- 踩坑:任何报错、意外行为、文档没说的注意事项
Phase 2: 最小可用验证
- - 写一个最简单的 hello world / demo
- 确认基本通路跑通
- 记录最小可用代码
- 踩坑:初始化、权限、网络、路径等常见问题
Phase 3: 系统探索
按以下维度逐一探索,每个都记录:
- - 核心概念 — 这个工具的世界观是什么?关键术语?
- API/命令 — 主要接口有哪些?参数含义?
- 配置项 — 可调的参数、默认值、最佳实践
- 边界情况 — 极端输入、错误处理、性能限制
- 集成方式 — 怎么和其他工具配合?
- 高级特性 — 不是必需但很强大的功能
- 常见坑 — 文档没提但你踩到了的
- 社区智慧 — GitHub issues、讨论区的高频问题
Phase 4: 实战验证
- - 用学到的知识做一个小项目
- 记录从构思到完成的全过程
- 遇到的问题和解决方案
- 和文档描述不一致的地方
Phase 5: 固化输出(最重要!)
学习不固化 = 白学。每完成一个主题,必须产出可复用的资产。
固化产物选择
| 产物 | 用途 | 示例 |
|---|
| Skill | 知识指南,让 AI 知道怎么做 | 火山方舟 API 用法、OpenClaw 配置 |
| 脚本 |
可执行的功能代码,直接跑 | 批量处理工具、数据转换 |
|
MCP Server | 标准化工具接口,任何 AI 客户端可调用 | 天气查询、API 代理 |
判断规则:
- - 只需要 AI "知道怎么用" → Skill(知识文档)
- 需要反复执行的具体操作 → 脚本(scripts/ 目录)
- 需要 AI 主动调用的工具能力 → MCP Server(长期服务)
- 三者可组合:Skill 引导流程,Skill 内嵌脚本,MCP 提供工具接口
5a: 创建 Skill(知识固化)
当满足以下任一条件时,必须创建 Skill:
- - 学到了可重复使用的工作流或代码模式
- 涉及 API 调用、配置模板、最佳实践
- 未来可能再次用到这些知识
⚠️ 必须严格按照 skill-creator 规范创建:
Step 1: 初始化(必须用脚本)
CODEBLOCK0
Step 2: 编辑 SKILL.md
- - 填写 YAML frontmatter:
name + description(description 是触发机制,必须写清使用场景) - 删除模板中的 TODO 和 Structuring 段落
- SKILL.md 保持 < 500 行,核心用法
- 详细内容放
references/ 目录
Step 3: 添加 references/
- - 从学习笔记中提取详细内容
- 按
references/models.md、references/examples.md、references/best-practices.md 等组织 - 大文件(>100行)顶部加目录索引
Step 4: 如有可复用脚本,添加到 scripts/
- - 必须
chmod +x,支持 INLINECODE9 - 参数通过命令行传入,禁止硬编码
- 输出结构化文本(JSON/表格)
Step 5: 打包(必须用脚本)
CODEBLOCK1
Step 6: 更新 TOOLS.md Skills 列表
Step 7: 删除或归档原始学习笔记(知识已沉淀到 Skill 中)
5b: 创建脚本(功能固化)
脚本规范:
- - 放在
skills/<主题>/scripts/ 或 INLINECODE11 - 必须
chmod +x,支持 INLINECODE13 - 关键参数通过命令行参数传入,禁止硬编码
- 输出结构化文本(JSON/表格),方便 AI 解析
- 包含错误处理和退出码
脚本模板(Python):
CODEBLOCK2
5c: 创建 MCP Server(工具服务固化)
MCP Server 规范:
- - 放在
~/.openclaw/mcp-servers/ 或独立 Git 仓库 - 使用
@modelcontextprotocol/sdk 或 mcp Python 包 - 每个工具必须有清晰的 name、description、inputSchema
MCP Server 模板(Python):
CODEBLOCK3
注册到 OpenClaw(~/.openclaw/openclaw.json):
CODEBLOCK4
5d: 更新记忆
- - 更新 INLINECODE17
- 更新 MEMORY.md 相关章节
- 更新 TOOLS.md 如果涉及新工具
- 标记探索清单完成度
5e: 清理
- - 已固化的学习笔记移到 INLINECODE18
- 或直接删除(知识已沉淀到 Skill/脚本/MCP 中)
学习日志模板
CODEBLOCK5
探索清单模板
学习新东西时,主动回答这些问题:
- - [ ] 它解决什么问题?不解决什么?
- [ ] 核心工作流是怎样的?
- [ ] 最常见的用法是什么?
- [ ] 配置项有哪些?默认值合理吗?
- [ ] 错误处理机制是什么?
- [ ] 性能特征?(速度、内存、限制)
- [ ] 和类似工具比,优劣势?
- [ ] 有什么隐藏功能/彩蛋?
- [ ] 社区最常问的问题是什么?
- [ ] 文档哪里写得不好/有误导?
- [ ] 如果要向别人介绍,三句话怎么讲?
记录规范
- 1. 所有踩坑必须记录 — 包括错误信息、原因分析、解决方案
- 可复现性 — 别人(或未来的我)按记录能复现
- 区分事实和推测 — 确认过的标 ✅,推测的标 ❓
- 保留原始命令 — 不要省略,不要"类似地"
- 记录版本 — 工具版本、OS、环境都可能影响
- 交叉引用 — 相关的学习日志互相链接
存储结构
CODEBLOCK6
回顾已有经验
学习新东西前:
- 1. 检查
memory/learning-logs/_index.md — 有没有类似工具的学习经验? - 检查
skills/ 目录 — 是否已有相关 Skill?直接加载,不用从头学 - 检查 MEMORY.md — 之前踩过的坑、积累的经验
学习闭环: 笔记 → Skill → 日常使用 → 发现不足 → 补充 Skill
学习与记录 Skill
核心理念
学习不固化 = 白学。每次学完一个东西,必须产出可复用的资产。
学习流程
Phase 0: 准备(开始前)
- 1. 明确目标 — 学什么?学到什么程度?能用来干什么?
- 收集入口 — 官方文档、GitHub repo、教程、示例项目
- 建立笔记文件 — 在 memory/learning-logs/<主题>-<日期>.md 创建学习日志
- 列出探索清单 — 预估要搞清楚的关键问题
Phase 1: 环境搭建
记录以下内容:
- - 安装命令(完整、可复现)
- 依赖冲突和解决方案
- 版本信息(--version)
- 环境变量配置
- 踩坑:任何报错、意外行为、文档没说的注意事项
Phase 2: 最小可用验证
- - 写一个最简单的 hello world / demo
- 确认基本通路跑通
- 记录最小可用代码
- 踩坑:初始化、权限、网络、路径等常见问题
Phase 3: 系统探索
按以下维度逐一探索,每个都记录:
- - 核心概念 — 这个工具的世界观是什么?关键术语?
- API/命令 — 主要接口有哪些?参数含义?
- 配置项 — 可调的参数、默认值、最佳实践
- 边界情况 — 极端输入、错误处理、性能限制
- 集成方式 — 怎么和其他工具配合?
- 高级特性 — 不是必需但很强大的功能
- 常见坑 — 文档没提但你踩到了的
- 社区智慧 — GitHub issues、讨论区的高频问题
Phase 4: 实战验证
- - 用学到的知识做一个小项目
- 记录从构思到完成的全过程
- 遇到的问题和解决方案
- 和文档描述不一致的地方
Phase 5: 固化输出(最重要!)
学习不固化 = 白学。每完成一个主题,必须产出可复用的资产。
固化产物选择
| 产物 | 用途 | 示例 |
|---|
| Skill | 知识指南,让 AI 知道怎么做 | 火山方舟 API 用法、OpenClaw 配置 |
| 脚本 |
可执行的功能代码,直接跑 | 批量处理工具、数据转换 |
|
MCP Server | 标准化工具接口,任何 AI 客户端可调用 | 天气查询、API 代理 |
判断规则:
- - 只需要 AI 知道怎么用 → Skill(知识文档)
- 需要反复执行的具体操作 → 脚本(scripts/ 目录)
- 需要 AI 主动调用的工具能力 → MCP Server(长期服务)
- 三者可组合:Skill 引导流程,Skill 内嵌脚本,MCP 提供工具接口
5a: 创建 Skill(知识固化)
当满足以下任一条件时,必须创建 Skill:
- - 学到了可重复使用的工作流或代码模式
- 涉及 API 调用、配置模板、最佳实践
- 未来可能再次用到这些知识
⚠️ 必须严格按照 skill-creator 规范创建:
Step 1: 初始化(必须用脚本)
bash
python3 ~/.npm-global/lib/nodemodules/openclaw/skills/skill-creator/scripts/initskill.py \
--path <输出目录> --resources references
Step 2: 编辑 SKILL.md
- - 填写 YAML frontmatter:name + description(description 是触发机制,必须写清使用场景)
- 删除模板中的 TODO 和 Structuring 段落
- SKILL.md 保持 < 500 行,核心用法
- 详细内容放 references/ 目录
Step 3: 添加 references/
- - 从学习笔记中提取详细内容
- 按 references/models.md、references/examples.md、references/best-practices.md 等组织
- 大文件(>100行)顶部加目录索引
Step 4: 如有可复用脚本,添加到 scripts/
- - 必须 chmod +x,支持 --help
- 参数通过命令行传入,禁止硬编码
- 输出结构化文本(JSON/表格)
Step 5: 打包(必须用脚本)
bash
python3 ~/.npm-global/lib/nodemodules/openclaw/skills/skill-creator/scripts/packageskill.py \
[输出目录]
Step 6: 更新 TOOLS.md Skills 列表
Step 7: 删除或归档原始学习笔记(知识已沉淀到 Skill 中)
5b: 创建脚本(功能固化)
脚本规范:
- - 放在 skills/<主题>/scripts/ 或 ~/.openclaw/scripts/
- 必须 chmod +x,支持 --help
- 关键参数通过命令行参数传入,禁止硬编码
- 输出结构化文本(JSON/表格),方便 AI 解析
- 包含错误处理和退出码
脚本模板(Python):
python
#!/usr/bin/env python3
<一句话描述>
用法: python3 script.py <参数>
import argparse, sys, json
def main():
p = argparse.ArgumentParser(description=doc)
p.add_argument(input, help=输入)
p.add_argument(-o, --output, help=输出)
args = p.parse_args()
# ... 逻辑 ...
print(json.dumps(result, ensure_ascii=False))
if name == main:
main()
5c: 创建 MCP Server(工具服务固化)
MCP Server 规范:
- - 放在 ~/.openclaw/mcp-servers/ 或独立 Git 仓库
- 使用 @modelcontextprotocol/sdk 或 mcp Python 包
- 每个工具必须有清晰的 name、description、inputSchema
MCP Server 模板(Python):
python
#!/usr/bin/env python3
from mcp.server.fastmcp import FastMCP
mcp = FastMCP(<名称>)
@mcp.tool()
def do_something(param: str) -> str:
<工具描述>
# ... 逻辑 ...
return result
if name == main:
mcp.run(transport=stdio)
注册到 OpenClaw(~/.openclaw/openclaw.json):
json
{
mcpServers: {
: {
command: python3,
args: [/path/to/server.py],
env: { APIKEY: ${ENVVAR} }
}
}
}
5d: 更新记忆
- - 更新 memory/learning-logs/<主题>-summary.md
- 更新 MEMORY.md 相关章节
- 更新 TOOLS.md 如果涉及新工具
- 标记探索清单完成度
5e: 清理
- - 已固化的学习笔记移到 memory/learning-logs/archive/
- 或直接删除(知识已沉淀到 Skill/脚本/MCP 中)
学习日志模板
markdown
学习日志: <主题>
- - 日期: YYYY-MM-DD
- 状态: 进行中 / 已完成
- 目标: 学什么、为什么学
Phase 0: 准备
- - 学习目标: ...
- 入口资源: ...
- 探索清单: [ ] [ ] [ ]
Phase 1: 环境搭建
Phase 2: 最小验证
Phase 3: 系统探索
核心概念
踩坑汇总
- 1. ...
Phase 4: 实战
Phase 5: 固化
- - Skill: <名称> ✅/❌
- 脚本: <列表> ✅/❌
- MCP: <名称> ✅/❌
探索清单模板
学习新东西时,主动回答这些问题:
- - [ ] 它解决什么问题?不解决什么?
- [ ] 核心工作流是怎样的?
- [ ] 最常见的用法是什么?
- [ ] 配置项有哪些?默认值合理吗?
- [ ] 错误处理机制是什么?
- [ ] 性能特征?(速度、内存、限制)
- [ ] 和类似工具比,优劣势?
- [ ] 有什么隐藏功能/彩蛋?
- [ ] 社区最常问的问题是什么?
- [ ] 文档哪里写得不好/有误导?
- [ ] 如果要向别人介绍,三句话怎么讲?
记录规范
- 1. 所有踩坑必须记录 —