[SOP]配置OpenClaw混乱的tool概念-hook-skill-plugin
[SOP]配置OpenClaw混乱的tool概念-hook-skill-plugin
- 官网的这部分描述是真的写的很迷,而且需要结合源码去弄
- 官方文档,说明openclaw的设计思考:智能体所做的一切,凡是超出生成文本范围的,都通过**工具(tools)**完成
OpenClaw 有三个协同工作的层级:【这段话讲得很迷,需要多次理解】
1、tools是agent可调用的类型化函数(例如 exec、browser、 web_search、message)。OpenClaw 自带一组内置工具,并且 插件(plugins)可以注册额外工具
2、Skills 是注入到系统提示词中的 Markdown 文件(SKILL.md)。 Skills 为智能体提供上下文、约束,以及 高效使用工具的分步指导。Skills 可以位于你的工作区、共享文件夹中, 或由插件(plugins)内置提供。
3、插件是一种软件包,可以注册任意组合的能力: 渠道、模型提供商、工具、Skills、语音、实时转写、 实时语音、媒体理解、图像生成、视频生成、 网页抓取、网页搜索等等。有些插件是核心插件(随 OpenClaw 一起提供)
1、配置hook
- Hooks 是在 Gateway 网关内部发生某些事件时运行的小型脚本
- OpenClaw 中有两种 hooks:
- 内部 hooks(本页):当智能体事件触发时在 Gateway 网关内部运行,例如
/new、/reset、/stop或生命周期事件。 - Webhooks:外部 HTTP 端点,让其他系统在 OpenClaw 中触发工作流。参见 Webhooks
- 内部 hooks(本页):当智能体事件触发时在 Gateway 网关内部运行,例如
- Hooks 也可以内置在插件(plugins)中
- 注意!
openclaw hooks list会同时显示独立 hooks 和由插件管理的 hooks
Hook 结构
每个 hook 都是一个包含两个文件的目录:
my-hook/
├── HOOK.md # 元数据 + 文档
└── handler.ts # 处理器实现示例如下:比如在~/.openclaw/hooks下新建
mkdir -p my-prefix-hook
cd my-prefix-hook/
touch HOOK.md handler.tsHOOK.md
---
name: prefix-hook
description: "在每次回复前加一句 我是hook"
metadata:
openclaw:
emoji: "🪝"
events: ["message:sent"]
---handler.ts
const handler = async (event) => {
if (event.output?.text) {
// 这里直接修改每次产出的内容
event.output.text =
"我是hook,我是hook\n" + event.output.text;
}
};
export default handler;效果
openclaw tui里面的效果

openclaw的GUI界面效果

2、配置plugin
- Hook = 改流程(拦截 / 修改)
- Plugin = 加能力(让 AI 会新技能)
~/openclaw.json的注册点
/ openc law.Json
{
"'plugins": {
"'entries":{
''proactive-leaming":{ "'enabled"': true
}
}
}
}3、配置skill(可以直接去claudehub去下载)
附录1.配置多个模型来源-比如ark和longcat
比如下面的切换到longcat模型, 会配置当前session到对应的模型
/model longcat/LongCat-Flash-Thinking-2601原理是
Current: longcat/LongCat-Flash-Thinking-2601
Switch: /model <provider/model>
{
"meta": {
"lastTouchedVersion": "2026.2.26",
"lastTouchedAt": "2026-03-30T06:45:11.085Z"
},
"agents": {
"defaults": {
"workspace": "~/.openclaw/workspace",
"compaction": {
"mode": "safeguard"
},
"model": {
"primary": "volcengine-plan/ark-code-latest"
},
"models": {
"volcengine-plan/ark-code-latest": {},
"volcengine-plan/doubao-seed-2.0-code": {},
"volcengine-plan/doubao-seed-2.0-pro": {},
"volcengine-plan/doubao-seed-2.0-lite": {},
"volcengine-plan/doubao-seed-code": {},
"volcengine-plan/minimax-m2.5": {},
"volcengine-plan/glm-4.7": {},
"volcengine-plan/deepseek-v3.2": {},
"volcengine-plan/kimi-k2.5": {},
"longcat/LongCat-Flash-Thinking-2601": {}
}
}
},
"commands": {
"native": "auto",
"nativeSkills": "auto",
"restart": true,
"ownerDisplay": "raw"
},
"gateway": {
"mode": "local",
"bind": "lan",
"controlUi": {
"allowedOrigins": [
"*"
],
"allowInsecureAuth": true,
"dangerouslyDisableDeviceAuth": true
},
"auth": {
"mode": "token",
"token": "12345678"
}
},
"models": {
"providers": {
"volcengine-plan": {
"baseUrl": "https://ark.cn-beijing.volces.com/api/coding/v3",
"apiKey": "你的秘钥",
"api": "openai-completions",
"models": [
{
"id": "ark-code-latest",
"name": "ark-code-latest",
"contextWindow": 256000,
"maxTokens": 32000,
"input": [
"text",
"image"
]
},
{
"id": "doubao-seed-code",
"name": "doubao-seed-code",
"contextWindow": 256000,
"maxTokens": 32000,
"input": [
"text",
"image"
]
},
{
"id": "glm-4.7",
"name": "glm-4.7",
"contextWindow": 200000,
"maxTokens": 128000,
"input": [
"text"
]
},
{
"id": "deepseek-v3.2",
"name": "deepseek-v3.2",
"contextWindow": 128000,
"maxTokens": 32000,
"input": [
"text"
]
},
{
"id": "doubao-seed-2.0-code",
"name": "doubao-seed-2.0-code",
"contextWindow": 256000,
"maxTokens": 128000,
"input": [
"text",
"image"
]
},
{
"id": "doubao-seed-2.0-pro",
"name": "doubao-seed-2.0-pro",
"contextWindow": 256000,
"maxTokens": 128000,
"input": [
"text",
"image"
]
},
{
"id": "doubao-seed-2.0-lite",
"name": "doubao-seed-2.0-lite",
"contextWindow": 256000,
"maxTokens": 128000,
"input": [
"text",
"image"
]
},
{
"id": "minimax-m2.5",
"name": "minimax-m2.5",
"contextWindow": 200000,
"maxTokens": 128000,
"input": [
"text"
]
},
{
"id": "kimi-k2.5",
"name": "kimi-k2.5",
"contextWindow": 256000,
"maxTokens": 32000,
"input": [
"text",
"image"
]
}
]
},
"longcat": {
"baseUrl": "https://api.longcat.chat/openai",
"apiKey": "你的秘钥",
"api": "openai-completions",
"authHeader": true,
"models": [
{
"id": "LongCat-Flash-Lite",
"name": "LongCat-Flash-Lite",
"contextWindow": 200000,
"maxTokens": 8192,
"input": [
"text"
],
"compat": {
"maxTokensField": "max_tokens"
}
}
]
}
}
}
}附录2.关于龙虾的Slash Commands(斜线命令与众不同的设计)
1、命令由 Gateway 网关处理。大多数命令必须作为一条独立消息发送,并且以 / 开头。
2、仅主机可用的 bash 聊天命令使用 ! <cmd>而(/bash <cmd> 是别名)。
但是以/开头的,有2套系统
1、独立的 /... 消息。
2、指令:/think、/fast、/verbose、/reasoning、/elevated、/exec、/model、/queue。【指令会在模型看到消息前从消息中剥离,也就是说纯本地预处理!】