skills/btpanel_files/SKILL.md
宝塔面板文件管理技能,提供远程服务器文件/目录浏览、读取、编辑、创建、删除、权限管理等基本文件操作能力
npx skillsauth add aapanel/btpanel-skills btpanel_filesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
宝塔面板服务器文件操作工具,提供远程文件/目录浏览、读取、编辑、创建、删除、权限管理等基本文件操作能力。
技能包提供以下图标文件,可在生成报告时引用:
| 文件 | 格式 | 用途 |
|------|------|------|
| icon/bt-logo.svg | SVG | 矢量图标,适合缩放 |
本技能用于查询和修改服务器文件,AI 应遵循以下原则:
/etc/shadow、.env、config.php 等含密码的文件)执行流程示例:
AI: 我将为您执行以下操作:
1. 读取配置文件 /www/server/nginx/conf/nginx.conf
2. 修改指定配置项
3. 保存文件
正在获取数据,请稍候...
[执行命令]
[展示结果和修改内容]
当前宝塔面板技能包,共包含 3 个相互关联的技能:
| 技能名称 | 描述 | 依赖关系 | |---------------------|------|-----------------------------------| | btpanel | 运维监控技能 | ✅ 基础技能,主要用于资源监控、网站状态检查、服务状态检查等 | | btpanel-files | 文件管理技能 | ✅ 提供远程服务器文件辅助服务,可以读取文件列表和内容 | | btpanel-phpsite | PHP 网站管理技能 | ✅ 提供远程服务器 PHP 网站管理功能,能够部署和管理php网站 |
问题 1: 配置文件不存在
错误:未找到配置文件
解决:运行 python3 bt-config.py add 添加服务器配置
问题 2: PYTHONPATH 未设置
# 运行脚本前需要设置
export PYTHONPATH=/path/to/btpanel-skills/src:$PYTHONPATH
# 检查 bt_common 模块
python3 -c "from bt_common.bt_client import BtClient; print('✅ 模块正常')"
# 检查配置文件
ls -la ~/.openclaw/bt-skills.yaml
# 测试连接
python3 {baseDir}/scripts/monitor.py --server "你的服务器名"
重要: 没有服务器信息时需要先添加
本技能复用 btpanel 技能的配置系统,使用 bt-config.py 工具管理服务器:
# 查看帮助
python3 {baseDir}/scripts/bt-config.py -h
# 添加服务器
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN
# 列出服务器
python3 {baseDir}/scripts/bt-config.py list
# 删除服务器
python3 {baseDir}/scripts/bt-config.py remove prod-01
获取 API Token 的方法:
重要提示 - SSL 证书验证配置: 添加服务器时,AI 应询问用户:
"您的宝塔面板是否使用了受信任的 SSL 证书(如 Let's Encrypt、商业 CA 证书)?"
--verify-ssl false 参数示例:
# 自签名证书场景
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN --verify-ssl false
# 受信任证书场景(默认)
python3 {baseDir}/scripts/bt-config.py add -n prod-01 -H https://panel.example.com:8888 -t YOUR_TOKEN
当用户需要查看服务器某个目录的内容时:
# 查看/www 目录
python3 {baseDir}/scripts/files.py ls /www
# 查看指定目录
python3 {baseDir}/scripts/files.py ls /www/server/nginx/conf
# 带分页查看
python3 {baseDir}/scripts/files.py ls /www/wwwlogs -p 2 -r 100
用户意图识别:
files.py ls /wwwfiles.py ls /www/server/nginx/conffiles.py ls 路径当用户需要查看文件内容时:
# 读取文件
python3 {baseDir}/scripts/files.py cat /www/test.txt
# 读取文件最后 50 行
python3 {baseDir}/scripts/files.py cat /www/logs/error.log -n 50
# 读取并显示文件信息
python3 {baseDir}/scripts/files.py cat /www/server/nginx/conf/nginx.conf -v
用户意图识别:
files.py cat 路径files.py cat 路径 -n 50files.py cat 路径 -v当用户需要修改文件内容时:
# 直接修改文件内容
python3 {baseDir}/scripts/files.py edit /www/test.txt "新内容"
# 从本地文件读取内容并保存
python3 {baseDir}/scripts/files.py edit /www/test.txt -f ./local-file.txt
用户意图识别:
files.py editfiles.py edit重要:编辑文件前必须先读取原内容,确认修改范围后再保存。
当用户需要创建新目录或文件时:
# 创建目录
python3 {baseDir}/scripts/files.py mkdir /www/newdir
# 创建文件
python3 {baseDir}/scripts/files.py touch /www/test.txt
用户意图识别:
files.py mkdir 路径files.py touch 路径当用户需要删除文件或目录时:
# 删除文件
python3 {baseDir}/scripts/files.py rm /www/test.txt
# 删除目录
python3 {baseDir}/scripts/files.py rmdir /www/olddir
用户意图识别:
files.py rm 路径files.py rmdir 路径重要:删除操作会将文件/目录移动到回收站,非永久删除。但操作前仍需用户确认。
当用户需要管理文件权限时:
# 查看文件权限
python3 {baseDir}/scripts/files.py stat /www/test.txt
# 修改文件权限
python3 {baseDir}/scripts/files.py chmod 755 /www/test.txt
# 修改权限并设置所有者
python3 {baseDir}/scripts/files.py chmod 755 /www/test.txt -u www -g www
# 递归修改目录权限
python3 {baseDir}/scripts/files.py chmod 755 /www/wwwroot -R
用户意图识别:
files.py stat 路径files.py chmod 755 路径files.py chmod# 查看帮助
python3 {baseDir}/scripts/files.py -h
# 列出目录内容
python3 {baseDir}/scripts/files.py ls /www
# 指定页码和每页数量
python3 {baseDir}/scripts/files.py ls /www/wwwlogs -p 2 -r 100
# 指定服务器
python3 {baseDir}/scripts/files.py ls /www --server prod-01
# 读取文件内容
python3 {baseDir}/scripts/files.py cat /www/test.txt
# 读取文件最后 N 行
python3 {baseDir}/scripts/files.py cat /www/logs/error.log -n 100
# 读取并显示详细信息
python3 {baseDir}/scripts/files.py cat /www/test.txt -v
# 直接指定内容
python3 {baseDir}/scripts/files.py edit /www/test.txt "Hello World"
# 从本地文件读取内容
python3 {baseDir}/scripts/files.py edit /www/test.txt -f ./content.txt
# 从标准输入读取
cat ./content.txt | python3 {baseDir}/scripts/files.py edit /www/test.txt
# 创建目录
python3 {baseDir}/scripts/files.py mkdir /www/newdir
# 创建文件
python3 {baseDir}/scripts/files.py touch /www/test.txt
# 删除文件
python3 {baseDir}/scripts/files.py rm /www/test.txt
# 删除目录
python3 {baseDir}/scripts/files.py rmdir /www/olddir
# 查看权限
python3 {baseDir}/scripts/files.py stat /www/test.txt
# 修改权限
python3 {baseDir}/scripts/files.py chmod 755 /www/test.txt
# 修改权限并设置所有者
python3 {baseDir}/scripts/files.py chmod 755 /www/test.txt -u www -g www
# 递归修改目录权限
python3 {baseDir}/scripts/files.py chmod 755 /www/wwwroot -R
| 参数 | 说明 | 默认值 |
|------|------|--------|
| --server, -s | 指定服务器名称 | 默认服务器 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 目录路径 | /www |
| --page, -p | 页码 | 1 |
| --rows, -r | 每页显示数量 | 500 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 文件路径 | 必填 |
| --lines, -n | 显示最后 N 行 | 全部 |
| --verbose, -v | 显示文件信息 | 否 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 文件路径 | 必填 |
| content | 文件内容 | 从 stdin 读取 |
| --file, -f | 从本地文件读取内容 | 无 |
| --encoding, -e | 文件编码 | utf-8 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 目录路径 | 必填 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 文件路径 | 必填 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 文件路径 | 必填 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 目录路径 | 必填 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| path | 文件路径 | 必填 |
| 参数 | 说明 | 默认值 |
|------|------|--------|
| access | 权限码(如 755, 644) | 必填 |
| path | 文件路径 | 必填 |
| --user, -u | 所有者用户名 | 当前用户 |
| --group, -g | 用户组名 | 当前组 |
| --recursive, -R | 递归设置子目录和文件 | 否 |
tail 命令)st_mtime 参数)路径安全:所有路径参数会自动进行 URL 编码,支持含空格和特殊字符的路径
删除操作:删除文件/目录会移动到回收站,非永久删除。如需永久删除需在宝塔面板中清空回收站
并发保护:保存文件时会自动检查文件是否被其他进程修改,如有冲突会提示
权限要求:需要对目标路径有相应的读写权限,否则操作会失败
敏感文件:部分系统文件可能因权限限制无法读取或修改
文件大小限制:过大的文件可能导致读取/保存超时,建议分批处理
文件下载 API:宝塔面板 /files?action=DownloadFile API 必须传递 filename 参数,否则返回 HTTP 500 错误。脚本已自动从 URL 提取文件名,无需手动指定
{
"dir": [
{"nm": "目录名", "sz": "大小", "mt": "时间戳", "acc": "权限", "user": "所有者"}
],
"files": [
{"nm": "文件名", "sz": "大小", "mt": "时间戳", "acc": "权限", "user": "所有者", "rmk": "备注"}
],
"path": "/www",
"page": "页码信息"
}
{
"status": true,
"only_read": false,
"size": 639,
"encoding": "utf-8",
"data": "文件内容",
"st_mtime": "1753161154"
}
{
"chmod": "755",
"chown": "www:www"
}
技能包复用 btpanel 技能的配置系统,配置文件位置:
~/.openclaw/bt-skills.yamlconfig/servers.local.yamlconfig/servers.yaml配置示例:
servers:
- name: prod-01
host: https://panel.example.com:8888
token: YOUR_API_TOKEN
disabled: false
global:
timeout: 30
thresholds:
cpu: 80
memory: 85
disk: 90
tools
宝塔面板 PHP 网站管理技能,提供站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态管理、数据库管理等功能
tools
宝塔面板 PHP 网站管理技能,提供站点创建、删除、启停、PHP 版本切换、域名管理、SSL 证书管理、伪静态管理、数据库管理等功能
tools
宝塔面板文件管理技能,提供远程服务器文件/目录浏览、读取、编辑、创建、删除、权限管理等基本文件操作能力
tools
宝塔面板(BT-Panel)运维监控技能,提供服务器资源监控、网站状态检查、服务状态检查、SSH安全审计、计划任务管理、日志读取等功能