CoPaw进阶:5分钟开发一个自定义Skill,让你的AI助理学会新技能
前两篇我们部署了CoPaw、接入了钉钉飞书、配置了定时任务。但CoPaw真正强大之处在于Skills机制——你可以像给手机装App一样给AI助理添加新能力。今天手把手教你开发第一个自定义Skill,全程不需要写代码!
一、为什么要开发自定义Skill?
CoPaw内置了很多Skill:定时任务、PDF处理、Word/Excel/PPT操作、新闻摘要、文件阅读等。但实际使用中,你可能需要:
- 特定领域的专业知识(比如Linux运维、金融分析)
- 与内部系统集成(比如查询公司数据库)
- 自定义的工作流程(比如自动生成周报)
- 个性化的交互方式(比如特定的回复模板)
简单说:内置Skill是“出厂预装App”,自定义Skill是你自己开发的“专属App” 。
这篇文章的实操环境依然是那台 华纳云香港CN2服务器(1核1G / 2M CN2 / 198元/年),CoPaw已按前两篇教程部署完成。
二、两种Skill类型
CoPaw支持两种自定义Skill:
配置型Skill
特点:只需编写Markdown文件,定义能力和使用方法
适用场景:领域知识库、业务规则、工作流程指导、回复模板
需不需要写代码:不需要
编程型Skill
特点:需要编写Python代码,调用外部API或执行复杂逻辑
适用场景:与第三方系统集成、数据库查询、自定义数据处理
需不需要写代码: 需要
今天我们先学配置型——不用写一行代码,5分钟就能搞定。
三、配置型Skill:5分钟快速上手
理解Skill的本质
在CoPaw中,一个Skill就是一个包含SKILL.md文件的文件夹。SKILL.md文件包含:
- YAML前置元数据:`name`(技能名称)、`description`(技能描述)
- Markdown正文:告诉AI这个技能怎么用、有什么限制
AI会读取这个文件,理解技能的用途和使用方法,然后在对话中按需调用。
创建第一个Skill:Linux运维知识库
假设你经常需要AI帮你排查服务器问题,但AI缺乏Linux运维的专业知识。我们可以创建一个“Linux运维知识库”Skill。
Step 1:进入Skills目录
cd ~/.copaw/customized_skills/
CoPaw的Skills分为两层:Skill Pool(共享池,`~/.copaw/skill_pool/`)存放所有可用技能;customized_skills存放你自定义但尚未启用的技能。我们先把技能放在`customized_skills`里。
Step 2:创建技能目录
mkdir linux-ops
cd linux-ops
Step 3:创建SKILL.md文件
vim SKILL.md
Step 4:编写SKILL.md内容
markdown
name: linux-ops
description: Linux服务器运维知识库,提供系统管理、故障排查、性能优化等专业知识

Linux运维知识库
这个Skill为CoPaw提供Linux服务器运维领域的专业知识,帮助用户解决服务器管理中的常见问题。
1. 系统监控与性能分析
- CPU监控:使用 top、`htop`、`mpstat` 查看CPU使用率
- 内存监控:使用 free -h、`vmstat` 查看内存状态
- 磁盘监控:使用 df -h、`iostat` 查看磁盘空间和I/O
- 网络监控:使用 iftop、`nethogs`、`ss -tunlp` 查看网络连接
2. 常见故障排查
- 系统负载过高:先用 top 定位高CPU进程,再用 strace 追踪
- 磁盘空间不足:用 du -sh | sort -rh | head -10 找大文件
- 内存不足:用 ps aux --sort=-%mem | head -10 找内存占用高的进程
- 网络连接超时:用 ping、`traceroute`、`telnet` 逐段排查
3. 安全加固建议
- SSH安全:禁用root登录、修改默认端口22、使用密钥认证
- 防火墙:使用 firewalld 或 iptables 限制访问
- 日志审计:定期检查 /var/log/secure 和 /var/log/messages
4. 常用命令速查
查看系统版本 :
cat /etc/os-release
查看内核版本
uname -a
查看运行时间
uptime
查看所有监听端口
ss -tunlp
实时查看日志
tail -f /var/log/messages
使用方法
在对话中直接提问即可,例如:
- "服务器负载很高,怎么排查?"
- "帮我看看这台服务器的内存够不够"
- "怎么加固SSH安全?"
注意事项
- 本知识库适用于CentOS/Ubuntu/Debian等主流Linux发行版
- 具体命令可能需要根据系统版本调整
Step 5:启用Skill
将技能从`customized_skills`移动到`active_skills`(已启用技能存放处):
cd ~/.copaw
mv customized_skills/linux-ops active_skills/
或者在CoPaw Web控制台的「技能」页面中,找到该Skill并点击启用。
Step 6:测试
在CoPaw对话中问:
你:服务器负载很高,怎么排查?
CoPaw:(调用linux-ops Skill)服务器负载高通常由CPU、内存或磁盘I/O引起。建议按以下步骤排查:1. 用`top`查看负载和CPU使用率...(以下省略)
不需要重启CoPaw,技能实时生效。
四、进阶:带Python脚本的编程型Skill
如果需要更复杂的功能(比如查询数据库、调用API),可以给Skill配上Python脚本。
实战案例:服务器状态查询Skill
让AI助理能直接查询这台华纳云服务器的实时状态(CPU、内存、磁盘、网络)。
Step 1:创建技能目录
cd ~/.copaw/customized_skills/
mkdir server-status
cd server-status
Step 2:创建SKILL.md
markdown
name: server-status
description: 查询Linux服务器的实时状态(CPU、内存、磁盘、网络)
服务器状态查询
功能说明
这个Skill可以查询当前Linux服务器的实时运行状态,包括:
- CPU使用率
- 内存使用率
- 磁盘空间
- 网络连接数
- 系统负载
使用方法
直接提问即可,例如:
- "服务器现在状态怎么样?"
- "帮我看看CPU和内存"
- "磁盘还剩多少空间?"
技术实现
本Skill通过执行Linux系统命令获取实时数据,所有命令均为只读操作,不会修改系统配置。
Step 3:创建Python脚本 status.py
python
#!/usr/bin/env python3
import subprocess
import json
def get_cpu_usage():
"""获取CPU使用率"""
result = subprocess.run(
["top", "-bn1"],
capture_output=True,
text=True
)
for line in result.stdout.split('n'):
if "Cpu(s)" in line:
return line.strip()
return "无法获取CPU信息"
def get_memory_usage():
"""获取内存使用率"""
result = subprocess.run(
["free", "-h"],
capture_output=True,
text=True
)
return result.stdout.strip()
def get_disk_usage():
"""获取磁盘使用率"""
result = subprocess.run(
["df", "-h", "/"],
capture_output=True,
text=True
)
return result.stdout.strip()
def get_system_load():
"""获取系统负载"""
result = subprocess.run(
["uptime"],
capture_output=True,
text=True
)
return result.stdout.strip()
def get_network_connections():
"""获取网络连接数"""
result = subprocess.run(
["ss", "-tunlp", "|", "wc", "-l"],
capture_output=True,
text=True,
shell=True
)
return f"当前网络连接数: {result.stdout.strip()}"
def get_server_status():
"""获取服务器完整状态"""
status = {
"cpu": get_cpu_usage(),
"memory": get_memory_usage(),
"disk": get_disk_usage(),
"load": get_system_load(),
"network": get_network_connections()
}
return json.dumps(status, ensure_ascii=False, indent=2)
if name == "__main__":
print(get_server_status())
注意:生产环境中,建议将敏感命令(如涉及系统信息的)做安全限制,CoPaw内置了破坏性shell命令检测机制。
Step 4:在SKILL.md中引用脚本
在SKILL.md中说明该Skill可调用`status.py`脚本获取数据。CoPaw的Skills机制支持通过`@tool`装饰器将Python函数暴露为工具。
Step 5:启用并测试
cd ~/.copaw
mv customized_skills/server-status active_skills/
然后在对话中问:
> 你:帮我看看这台服务器现在的状态
>
> CoPaw:(调用server-status Skill)当前服务器状态:CPU使用率12.5%,内存使用率47%(已用487MB/1GB),磁盘使用率32%(已用16GB/50GB),系统负载0.8,网络连接数23个。
五、更多实战案例
案例1:Docker管理Skill
让AI助理能通过自然语言管理Docker容器:
markdown
name: docker-manager
description: 管理Docker容器(查看、启动、停止、日志)
# Docker容器管理
功能说明
这个Skill让CoPaw可以通过自然语言管理Docker容器。
支持的操作
- 查看所有容器:`docker ps -a`
- 查看容器日志:`docker logs [容器名]`
- 启动容器:`docker start [容器名]`
- 停止容器:`docker stop [容器名]`
使用方法
- "帮我看看有哪些容器在运行"
- "查看node-app的日志"
- "重启一下postgres容器"
安全限制
- 禁止执行 docker rm、`docker rmi` 等危险操作
- 所有操作需用户确认后执行
案例2:Git仓库管理Skill
markdown
name: git-manager
description: 管理Git仓库(查看状态、提交、推送)
# Git仓库管理
功能说明
帮助用户管理Git仓库,执行常见的Git操作。
支持的操作
- 查看仓库状态:`git status`
- 查看提交历史:`git log --oneline -10`
- 查看分支:`git branch -a`
使用方法
- "帮我看看当前Git仓库的状态"
- "最近的提交记录有哪些?"
- "有哪些分支?"
限制
- 不执行 git push、`git reset --hard` 等危险操作
- 需要用户在项目目录下执行
六、从Skills Hub导入现成Skill
不想自己写?CoPaw提供了Skills Hub,可以直接导入社区分享的现成Skill。
1. 打开CoPaw Web控制台
2. 进入「技能」页面
3. 点击「从Skills Hub导入技能」
4. 输入Skill的GitHub仓库URL或Hub链接
5. 点击导入,自动下载并启用
目前Skills Hub已收录超过180种生产力级别的技能包。
七 、这台服务器跑CoPaw Skills的性能表现
关于这台华纳云香港CN2服务器(1核1G / 2M CN2 / 198元/年)跑CoPaw + 多个Skills的表现:
- 同时启用5-8个Skill(含1-2个带Python脚本的),CoPaw服务内存占用稳定在350-450MB
- CPU空闲率保持在85%以上
- 香港CN2 GIA线路确保了钉钉/飞书消息的实时推送,延迟在40ms左右
> 华纳云(HnCloud)是2015年成立的香港老牌IDC,APNIC和ARIN正式会员,持有自有ASN号。如果你也想在自己的服务器上部署CoPaw,198元/年的入门款完全够用。
九、下期预告
至此,CoPaw系列已经完成了部署→接入聊天软件→定时任务自动化→自定义Skills开发四个阶段。
下一期我们换个方向,聊聊CoPaw的多智能体协作——如何创建多个AI助理,让它们各司其职、互相配合完成复杂任务。
