🎖️ 任务奖励 — 学完你能做到
写出第一个自定义 Hook,并接入本地 Ollama 模型降低云端依赖
📖 本章目标:掌握 Hooks 扩展机制,了解 Skills 生态全景,建立知识沉淀体系
9.1 Hooks 系统
Hooks 是 OpenClaw 的 TypeScript 扩展点,可在 agent 处理流程的特定节点插入自定义逻辑。
触发时机与典型用途
| 触发时机 | 典型用途 |
|---|---|
session-memory | 会话结束 / context 压缩时:提炼关键信息存档到 MEMORY.md |
on-message | 消息到达前:过滤/改写消息,或添加额外上下文 |
on-tool-call | 工具调用前:拦截危险操作,做二次确认或权限检查 |
on-heartbeat | Heartbeat 前后:记录 heartbeat 历史,分析 agent 行为模式 |
⚠️ 安全警告
Hooks 是代码。 第三方 hook 和 Skill 一样需要严格源码审查。
9.2 Skills 生态全景
| 资源 | 说明 | 地址 |
|---|---|---|
| ClawHub | 官方 Skills 市场,约 13,700+ Skills | clawhub.dev |
| awesome-openclaw-skills | 社区精选,5,400+ 人工筛选的优质 Skills | GitHub 搜索 |
| 官方内置 Skills | 预装的核心 Skills,最安全 | openclaw skills list --builtin |
💡 Skills 最小化原则
只装当前活跃使用的 Skills。
装 20 个 Skill 的 agent,70% 推理 token 都在评估不相关的工具选项。超过一周没用的立刻禁用。
# 禁用不常用的 Skill(不删除,随时可重新启用)
openclaw skills disable <skill-name>
# 查看已安装的全部 Skills
openclaw skills list
9.3 知识沉淀目录结构
建议在工作区建立 discoveries/ 目录,让 agent 自动积累知识:
workspace/
└── discoveries/
├── recipes.md # 积累的实用方案(玩法 / Skills 组合 / 配置策略)
├── changelog-watch.md # 官方版本更新追踪
└── YYYY-MM-DD.md # 每日新发现(agent 在 heartbeat 中自动写入)
recipes.md 示例格式
# Recipes(实用方案库)
## 成本优化
- [2026-03-10] 关闭 Thinking 后成本降低 70%,claude-sonnet 足够日常任务
## Skills 组合
- [2026-03-08] web-search + coding-agent 组合:先搜索方案再写代码,成功率 +40%
## 配置策略
- [2026-03-05] Heartbeat 改 1h 后,月成本从 $205 降至 $40
9.4 推荐的进阶工作流
工作流一:Cron + 本地模型(零成本自动化)
{
"cron": [{
"name": "daily-summary",
"schedule": "0 9 * * *",
"model": "ollama/qwen3.5",
"sessionTarget": "isolated",
"task": "生成今日工作摘要,存入 memory/today.md"
}]
}
工作流二:on-tool-call Hook(危险操作二次确认)
// hooks/confirm-delete.ts
export default {
trigger: 'on-tool-call',
filter: (call) => call.name === 'bash' && call.args.includes('rm'),
handler: async (call, ctx) => {
const confirmed = await ctx.confirm(`确认执行删除操作?\n${call.args}`);
if (!confirmed) throw new Error('用户取消操作');
}
};
工作流三:session-memory Hook(自动提炼长期记忆)
// hooks/memory-distill.ts
export default {
trigger: 'session-memory',
handler: async (session, ctx) => {
// 从本次会话提炼关键信息,写入 MEMORY.md
await ctx.appendMemory(session.keyInsights);
}
};