乐于分享
好东西不私藏

OpenClaw改造与扩展方法

OpenClaw改造与扩展方法

OpenClaw 改造指南:打造属于你的 AI 助手

OpenClaw 最大的魅力在于可扩展性。这篇我们来讲如何根据自己的需求,改造和增强 OpenClaw 的能力。

扩展的三种方式

OpenClaw 提供了三个层次的扩展能力,从简单到复杂:

配置(Config) → 技能(Skills) → 插件(Plugins)

就像装修房子:

• 配置:调整家具摆放(最简单)

• 技能:买新家电(中等难度)

• 插件:改造房屋结构(最复杂)

第一层:配置驱动(最简单)

多 Agent 配置

假设你有两个身份:

• 工作中:严谨、专业

• 生活中:轻松、幽默

可以配置两个 Agent:

{
agents:{
list:[
{
id:"work",
name:"工作助手",
model:"anthropic/claude-opus-4-6",// 用最强的模型
workspace:"~/.openclaw/workspace-work"
},
{
id:"personal",
name:"生活助手",
model:"anthropic/claude-sonnet-4-5",// 用更快的模型
workspace:"~/.openclaw/workspace-personal"
}
]
},
bindings:[
// 工作群的消息 → 工作助手
{agentId:"work",match:{channel:"slack"}},
// 其他的消息 → 生活助手
{agentId:"personal",match:{channel:"whatsapp"}}
]
}

人格设定(SOUL.md)

在每个 workspace 创建 SOUL.md:

工作助手:

## 身份
我是专业的工作助手,帮助处理技术问题和项目事务。

## 说话风格
- 技术问题:详细、准确、提供代码示例
- 项目问题:条理清晰、 actionable

## 边界
- 不讨论个人隐私
- 不执行危险命令
- 不确定时先确认再行动

生活助手:

## 身份
我是你的生活伙伴,陪你聊天、推荐电影音乐。

## 说话风格
- 轻松幽默
- 会用表情包和梗
- 像朋友一样交流

工具权限控制

限制 Agent 能做什么:

{
agents:{
list:[
{
id:"family",// 给孩子用的 Agent
tools:{
allow:["read","web_search","tts"],// 只能读和搜索
deny:["exec","write","edit"]// 禁止执行和写入
}
}
]
}
}

第二层:Skills(技能)

什么是 Skills?

Skills 是封装好的"超能力",让 Agent 能完成特定任务。

类比: 就像给手机安装 App:

• 安装天气 App → 能查天气

• 安装地图 App → 能导航

• 安装 Skills → Agent 获得新能力

创建自己的 Skill

场景: 你想让 Agent 能查公司内部的员工信息

步骤 1:创建目录

mkdir-p ~/.openclaw/skills/company-directory

步骤 2:编写 SKILL.md

# company-directory

查询公司内部员工信息。

## 使用场景

当用户询问同事联系方式、部门信息时:
1. 确认用户有权限(已登录公司账号)
2. 查询内部 API
3. 返回格式化的信息

## 示例

用户:"张三在哪个部门?"
→ 查询内部系统
→ 回复:"张三在产品部,邮箱 zhangsan@company.com"

## 工具

-`exec`: 调用内部 CLI 工具查询
-`read`: 读取本地员工名录(脱敏版)

步骤 3:添加工具脚本(可选)

如果查询比较复杂,可以写个脚本:

# ~/.openclaw/skills/company-directory/query.py
import sys
import requests

defquery_employee(name):
# 调用内部 API
    resp = requests.get(f"https://internal-api.com/employees?name={name}")
return resp.json()

if __name__ =="__main__":
    name = sys.argv[1]
    result = query_employee(name)
print(result)

步骤 4:安装到工作区

ln-s ~/.openclaw/skills/company-directory \
       ~/.openclaw/workspace/skills/company-directory

从 ClawHub 安装现成 Skills

# 搜索天气技能
clawhub search weather

# 安装
clawhub install weather

# 更新所有技能
clawhub update

第三层:Plugins(插件)

什么时候需要写 Plugin?

Skills 不够用时,比如:

• 需要添加全新的聊天通道(如企业微信)

• 需要深度集成某个系统

• 需要修改核心行为

简单 Plugin 示例

场景: 添加一个自定义通道(比如钉钉)

目录结构:

openclaw-plugin-dingtalk/
├── package.json
├── index.ts
└── src/
    ├── dingtalk.ts
    └── types.ts

package.json:

{
"name":"openclaw-plugin-dingtalk",
"version":"1.0.0",
"openclaw":{
"plugin":{
"id":"dingtalk",
"name":"DingTalk Channel"
}
}
}

核心代码:

// src/dingtalk.ts
import{ Channel, Message }from'@openclaw/sdk';

exportclassDingTalkChannelimplementsChannel{
  id ='dingtalk';

asyncinitialize(config:any){
// 初始化钉钉 SDK
this.client =newDingTalkClient({
      appKey: config.appKey,
      appSecret: config.appSecret
});
}

asyncsend(message: Message){
// 发送消息到钉钉
awaitthis.client.sendMessage({
      chatId: message.chatId,
      content: message.content
});
}

asyncstartListening(handler){
// 监听钉钉消息
this.client.onMessage((msg)=>{
handler({
        channel:'dingtalk',
        sender: msg.senderStaffId,
        content: msg.text.content
});
});
}
}

安装:

openclaw plugins install ./openclaw-plugin-dingtalk

自动化扩展

Cron 定时任务

场景: 每天早上 9 点自动发日报

{
cron:{
enabled:true,
jobs:[
{
id:"morning-report",
schedule:"0 9 * * 1-5",// 工作日 9 点
prompt:"生成昨日工作总结并发送到工作群",
agentId:"work"
}
]
}
}

Webhook 集成

场景: GitHub 有 PR 时自动审查

{
hooks:{
enabled:true,
mappings:[
{
match:{path:"github",event:"pull_request"},
action:"agent",
agentId:"code-review",
prompt:"审查这个 PR:{{payload.pull_request.html_url}}"
}
]
}
}

外部工具集成

Shell 脚本

场景: 自动备份工作目录

# ~/.openclaw/workspace/tools/backup.sh
#!/bin/bash
DATE=$(date +%Y%m%d)
BACKUP_DIR="$HOME/backups/$DATE"

mkdir-p"$BACKUP_DIR"
tar-czf"$BACKUP_DIR/workspace.tar.gz"-C"$HOME/.openclaw" workspace

echo"备份完成:$BACKUP_DIR"

Agent 可以通过 exec 调用:

你:运行备份
Agent:执行 backup.sh → 返回"备份完成"

Python 脚本

场景: 数据分析

# ~/.openclaw/workspace/tools/analyze.py
import pandas as pd
import sys

defanalyze_csv(path):
    df = pd.read_csv(path)
return{
"行数":len(df),
"列数":len(df.columns),
"统计": df.describe().to_dict()
}

if __name__ =="__main__":
print(analyze_csv(sys.argv[1]))

最佳实践

1. 从简单开始

不要一上来就写 Plugin:

1. 先尝试用配置解决

2. 不够用了再写 Skills

3. 最后才考虑 Plugin

2. 版本管理

# 技能版本控制
cd ~/.openclaw/skills/my-skill
git init
gitadd.
git commit -m"Initial skill"

# 工作区版本控制
cd ~/.openclaw/workspace
git init
gitadd AGENTS.md SOUL.md skills/
git commit -m"Workspace setup"

3. 测试

# 测试配置
openclaw doctor

# 测试 Agent
openclaw agent run --agenttest--prompt"测试"

4. 文档

每个扩展都要写清楚:

• 用途是什么

• 怎么用

• 有什么限制

总结

改造 OpenClaw 就像装修房子:

• 配置:调整布局(简单、快速)

• Skills:添置家具(中等、实用)

• Plugins:改造结构(复杂、强大)

建议从配置开始,逐步深入。记住:不要为了扩展而扩展,解决实际问题最重要。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料