system_cmd - 系统命令执行技能
描述
执行常见的 Windows 系统命令并返回格式化的结果。支持的命令包括网络配置、进程管理、网络连接和系统信息查询。
使用场景
当用户需要快速查看系统状态、网络配置、进程列表或系统信息时使用此技能。
支持的命令
- ipconfig - 查看网络接口配置和IP地址
- tasklist - 查看当前运行的进程列表
- netstat -an - 查看所有网络连接和监听端口
- systeminfo - 查看详细的系统信息
用法
1. 预定义命令模式(安全命令)
/system_cmd <命令名>
示例:
/system_cmd ipconfig- 查看IP配置/system_cmd tasklist- 查看进程列表/system_cmd netstat- 查看网络连接(自动添加-an参数)/system_cmd systeminfo- 查看系统信息
2. 命令别名模式(快捷方式)
/system_cmd <别名>
默认别名:
/system_cmd ip→ 等于/system_cmd ipconfig/system_cmd 进程→ 等于/system_cmd tasklist/system_cmd 网络→ 等于/system_cmd netstat/system_cmd 系统→ 等于/system_cmd systeminfo/system_cmd ping→ 等于/system_cmd exec ping 8.8.8.8
自定义别名: 在 config.json 中配置
3. 自定义命令模式(普通命令)
/system_cmd exec <命令>
示例:
/system_cmd exec ping google.com- 自定义Ping目标/system_cmd exec dir- 查看当前目录/system_cmd exec echo Hello World- 输出文本/system_cmd exec whoami- 查看当前用户/system_cmd exec date /t- 查看当前日期/system_cmd exec time /t- 查看当前时间/system_cmd exec hostname- 查看主机名/system_cmd exec ver- 查看Windows版本
4. 高危命令模式(需要确认)
/system_cmd exec <高危命令> --yes
示例:
/system_cmd exec del temp.txt --yes- 删除文件(需要确认)/system_cmd exec taskkill /f notepad.exe --yes- 强制结束进程(需要确认)/system_cmd exec net stop wuauserv --yes- 停止Windows更新服务(需要确认)/system_cmd exec sc delete MyService --yes- 删除系统服务(需要确认)
实现细节
命令映射
ipconfig→ 执行ipconfig /all获取详细信息tasklist→ 执行tasklist获取进程列表netstat→ 执行netstat -an获取网络连接systeminfo→ 执行systeminfo获取系统信息
输出处理
- 中文支持:所有输出都进行适当的编码处理,确保中文正确显示
- 格式化:根据命令类型进行适当的格式化(表格、列表等)
- 错误处理:捕获命令执行错误并提供友好的错误信息
- 安全性:只允许执行预定义的安全命令
安全等级与权限控制
1. 🟢 安全命令(直接执行)
- 预定义命令:
ipconfig,tasklist,netstat,systeminfo - 命令别名:
ip,进程,网络,系统,ping - 安全只读命令:
ping,echo,whoami,hostname,ver等
2. 🟡 普通命令(安全检查后执行)
- 大多数自定义命令
- 经过安全检查:路径检查、字符过滤、长度限制
- 执行限制:15秒超时,5MB缓冲区
3. 🔴 高危命令(需要用户确认)
高危命令列表:
- 文件操作:
del,erase,rm,rmdir,rd - 磁盘操作:
format,chkdsk,diskpart - 进程管理:
taskkill /f,taskkill /im - 服务管理:
net stop,net start,sc delete,sc stop - 注册表操作:
reg delete,reg add - 系统控制:
shutdown,reboot
确认机制:
- 首次执行高危命令:返回风险提示和确认要求
- 确认执行:添加
--yes参数,如/system_cmd exec del file.txt --yes - 执行限制:30秒超时,额外安全监控
4. 🚫 完全禁止的命令
绝对禁止执行的命令:
rm -rf- 递归强制删除del *.*- 删除所有文件format c:- 格式化系统盘reg delete HKLM- 删除系统注册表net user administrator- 修改管理员账户
5. 配置系统
配置文件: config.json
- pingDefaultTarget: 默认Ping目标(默认:
8.8.8.8) - aliases: 自定义别名映射
- 支持变量:
${pingDefaultTarget}在别名中替换
默认配置:
{
"pingDefaultTarget": "8.8.8.8",
"aliases": {
"ip": "ipconfig",
"进程": "tasklist",
"网络": "netstat",
"系统": "systeminfo",
"ping": "ping ${pingDefaultTarget}"
}
}
6. 执行限制
- 命令长度: 最大1000字符
- 执行时间: 普通命令15秒,高危命令30秒
- 输出长度: 最大4000字符(自动截断)
- 缓冲区大小: 5MB
错误处理
- 命令不存在时返回错误信息
- 命令执行失败时返回详细的错误原因
- 输出过长时进行适当的截断和分页
- 危险命令被阻止并返回安全警告
技能文件结构
system_cmd/
├── SKILL.md # 本文件
├── scripts/
│ └── system_cmd.js # 主要实现脚本
└── references/
└── commands.md # 命令参考文档
依赖
- Windows 操作系统
- PowerShell 或 CMD
- OpenClaw 执行权限
注意事项
- 部分命令可能需要管理员权限才能获取完整信息
- 系统信息命令可能执行较慢,请耐心等待
- 网络连接信息可能包含大量数据,输出会进行适当截断
技能特点
🟢 安全命令模式
- 简单易用: 只需输入命令名称即可执行
- 中文友好: 自动处理编码问题,确保中文正常显示
- 错误处理: 完善的错误检测和友好的错误提示
- 格式化输出: 结果清晰易读,带有标题和分隔符
🔄 命令别名模式(新增)
- 快捷操作: 使用简短别名代替完整命令
- 中文支持: 支持中文别名,如
进程、网络、系统 - 配置灵活: 可通过
config.json自定义别名 - 变量支持: 别名中支持变量替换(如
${pingDefaultTarget})
🟡 普通命令模式
- 灵活扩展: 支持执行大多数系统命令
- 安全检查: 路径检查、字符过滤、长度验证
- 资源限制: 执行时间、输出长度、命令长度限制
- 友好提示: 详细的错误信息和安全警告
🔴 高危命令模式
- 权限控制: 高危命令需要用户明确确认
- 风险提示: 详细说明命令的风险和后果
- 确认机制: 使用
--yes参数确认执行高危命令 - 额外监控: 高危命令有更长的超时时间和额外监控
🚫 安全防护
- 多层防护: 黑名单 + 模式匹配 + 路径检查 + 字符过滤
- 分级控制: 安全命令/普通命令/高危命令/禁止命令四级控制
- 完全禁止: 绝对危险的命令被完全阻止
- 向后兼容: 原有功能完全保留,新增功能可选使用
⚙️ 配置系统
- 配置文件: 支持
config.json配置 - 默认配置: 提供合理的默认值和别名
- 热加载: 配置文件修改后自动生效
- 用户定制: 用户可自定义别名和配置
技术实现
编码处理
使用PowerShell执行命令并设置代码页为65001(UTF-8),确保中英文混合输出正常显示。CMD特有命令使用CMD执行。
别名解析系统
- 多层解析: 配置文件别名 → 预定义命令别名 → 原始命令
- 变量替换: 支持
${pingDefaultTarget}等变量在别名中替换 - 热加载: 配置文件修改后自动重新加载
- 别名映射: 显示别名到实际命令的映射关系
安全机制(四级防护)
- 完全禁止层: 检测并阻止绝对危险的命令(如
rm -rf,format c:) - 高危确认层: 识别高危命令,要求用户明确确认(
--yes参数) - 安全检查层: 路径检查、字符过滤、模式匹配、长度验证
- 资源限制层: 限制命令长度、执行时间、输出大小、缓冲区
权限控制机制
- 命令分类: 自动识别命令的安全等级(安全/普通/高危/禁止)
- 风险评估: 为高危命令提供详细的风险描述
- 确认流程: 高危命令首次执行返回确认提示,需要
--yes确认 - 执行监控: 高危命令有更长的超时时间和额外监控
配置管理系统
- 默认配置: 提供合理的默认值和别名
- 用户配置: 支持用户通过
config.json自定义 - 配置合并: 用户配置与默认配置智能合并
- 错误处理: 配置文件错误时使用默认配置并提示
错误处理机制
- 命令验证:检查输入的命令是否在支持列表中
- 别名解析:解析命令别名到实际命令
- 安全分级:识别命令的安全等级和风险
- 权限检查:验证用户是否有权限执行高危命令
- 执行监控:捕获命令执行过程中的错误
- 资源监控:监控执行时间和资源使用
- 友好提示:将系统错误转换为用户友好的提示信息
输出格式化
- 添加标题和分隔符,提高可读性
- 根据命令类型和安全等级使用不同图标
- 清理多余的空格和换行符
- 自动截断过长的输出
- 显示原始命令和安全等级(自定义命令模式)
- 显示别名映射信息(如果使用别名)
- 高危命令执行结果有额外警告提示
更新日志
v1.0 (2026-04-08)
- 初始版本创建,支持4个基本系统命令
- 修复编码问题,确保中文正常显示
- 添加完整的错误处理和帮助系统
v2.0 (2026-04-08)
- 新增自定义命令功能: 支持
/system_cmd exec <命令>格式 - 增强安全机制: 危险命令检测和阻止
- 资源限制: 命令长度、执行时间、输出大小限制
- 改进错误处理: 更详细的错误信息和安全警告
- 保持向后兼容: 原有功能完全保留
- 更新文档: 完整的帮助和使用说明
v3.0 (2026-04-08)
- 新增权限控制: 高危命令需要用户确认 (
--yes) - 四级安全防护: 安全命令/普通命令/高危命令/禁止命令
- 风险评估: 为高危命令提供详细风险描述
- 确认机制: 高危命令首次执行返回确认提示
- 分级监控: 不同安全等级有不同的执行限制
- 完全禁止: 绝对危险的命令被完全阻止
- 改进帮助: 更详细的帮助信息和示例
v4.0 (2026-04-08)
- 新增命令别名功能: 支持快捷别名,如
ip、进程、网络、系统 - 配置文件系统: 支持
config.json配置别名和默认值 - 中文别名支持: 支持中文别名,提高中文用户友好性
- 变量替换: 别名中支持
${pingDefaultTarget}等变量 - 热加载配置: 配置文件修改后自动生效
- 别名映射显示: 执行结果显示别名到实际命令的映射
- 扩展预定义命令: 新增
ping预定义命令(可配置默认目标) - 改进帮助系统: 显示所有别名和配置信息