🧪 Skills
aiclone
通用 AI 机器人克隆技能(安全加固版 v2.0)。支持导出/导入配置,ZIP Slip 防护,元数据脱敏,敏感文件自动排除。用于 A→B 能力复制、团队共享、备份
v2.0.0
Description
name: ai-clone description: 通用 AI 机器人克隆技能(安全加固版 v2.0)。支持导出/导入配置,ZIP Slip 防护,元数据脱敏,敏感文件自动排除。用于 A→B 能力复制、团队共享、备份恢复。 version: 2.0.0 security: hardened
AI 机器人克隆技能 v2.0(安全加固版)
任何 AI 机器人都可以使用的克隆工具
🔒 安全特性(v2.0 新增)
已修复的安全问题
| 问题 | 风险等级 | 修复方案 |
|---|---|---|
| ZIP Slip 漏洞 | 🔴 高危 | 路径验证 + 规范化检查 |
| 固定临时目录 | 🟡 中危 | 使用 tempfile.TemporaryDirectory |
| 元数据路径泄露 | 🟡 中危 | 默认脱敏(可配置) |
| 文档代码不一致 | 🟢 低危 | 统一命令参数 |
| 敏感文件无保护 | 🟡 中危 | 自动排除 .env, *.key 等 |
安全验证
# 导入前验证克隆包
python scripts/clone_robot.py verify clone-package.zip
🎯 核心流程
┌─────────────┐ ┌─────────────┐
│ 机器人 A │ │ 机器人 B │
│ (源) │ │ (目标) │
└──────┬──────┘ └──────┬──────┘
│ │
│ 1. 使用技能导出配置 │
│ → clone-package.zip │
│ │
├─────────────────────────────────>│
│ 传输文件 │
│ │
│ │ 2. 使用技能导入配置
│ │ ← clone-package.zip
│ │
▼ ▼
📦 机器人 A:导出配置
任何机器人执行以下命令导出自己:
# 基本导出(推荐)
python scripts/clone_robot.py export
# 指定输出文件名
python scripts/clone_robot.py export --output my-clone-package.zip
# 指定源目录
python scripts/clone_robot.py export --source /path/to/workspace
# 不包含可选目录(仅核心文件)
python scripts/clone_robot.py export --no-optional
# 额外排除文件
python scripts/clone_robot.py export --exclude "*.env" "secrets/"
# 保留完整路径(默认脱敏)
python scripts/clone_robot.py export --keep-paths
输出示例:
📦 导出配置...
源:/home/admin/.openclaw/workspace
📋 扫描工作区...
✅ SOUL.md (2.1KB)
✅ IDENTITY.md (1.5KB)
✅ USER.md (892B)
✅ MEMORY.md (3.2KB)
✅ HEARTBEAT.md (1.8KB)
✅ TOOLS.md (0.9KB)
✅ AGENTS.md (7.7KB)
📋 准备临时文件...
临时目录:/tmp/ai-clone-xyz123
✅ SOUL.md
✅ IDENTITY.md
...
ℹ️ 元数据已脱敏(不包含绝对路径)
✅ clone_metadata.json
🗜️ 打包为 clone-package-20260306-185500.zip...
✅ 导出完成!
文件:clone-package-20260306-185500.zip
大小:9.1KB
包含:7 个核心文件
安全版本:hardened v2.0
然后: 把 clone-package.zip 发给机器人 B(邮件/网盘/聊天工具)
📥 机器人 B:导入配置
收到克隆包后执行:
# 预览包内容(不执行导入)
python scripts/clone_robot.py import clone-package.zip --preview
# 验证安全性
python scripts/clone_robot.py verify clone-package.zip
# 导入配置(需要确认)
python scripts/clone_robot.py import clone-package.zip
# 跳过确认直接导入
python scripts/clone_robot.py import clone-package.zip --force
# 指定目标目录
python scripts/clone_robot.py import clone-package.zip --target /path/to/workspace
输出示例:
🔍 验证 ZIP 包安全性...
✅ 安全性检查通过
📥 导入配置...
包:clone-package.zip
目标:/home/admin/.openclaw/workspace
📋 克隆包信息:
创建时间:2026-03-06T18:55:00.123456
安全版本:hardened
文件数量:7
📋 即将导入以下文件:
✅ SOUL.md
✅ IDENTITY.md
✅ USER.md
✅ MEMORY.md
✅ HEARTBEAT.md
✅ TOOLS.md
✅ AGENTS.md
⚠️ 注意:这将覆盖目标目录的现有文件!
使用 --force 跳过确认
确认导入?(y/N): y
📥 正在导入...
✅ SOUL.md
✅ IDENTITY.md
...
✅ 导入完成!
目标:/home/admin/.openclaw/workspace
导入:7 个文件
🎉 机器人已成功复制配置!
安全版本:hardened v2.0
📋 核心配置文件
克隆脚本会自动识别和复制以下文件:
必选文件(核心身份)
| 文件 | 说明 |
|---|---|
SOUL.md |
人格和价值观 |
IDENTITY.md |
机器人身份定义 |
USER.md |
用户信息 |
MEMORY.md |
长期记忆 |
HEARTBEAT.md |
任务机制 |
TOOLS.md |
本地工具配置 |
AGENTS.md |
Agent 配置 |
可选目录(能力和资产)
| 目录 | 说明 |
|---|---|
memory/ |
每日记忆文件 |
skills/ |
技能包 |
scripts/ |
自动化脚本 |
projects/ |
项目文档 |
docs/ |
文档资料 |
🔒 安全机制详解
1. ZIP Slip 防护
def is_path_safe(path_str: str) -> bool:
# 拒绝绝对路径
if os.path.isabs(path_str):
return False
# 拒绝路径遍历
if ".." in path_str.split(os.sep):
return False
# 规范化路径并再次检查
normalized = os.path.normpath(path_str)
if normalized.startswith("..") or os.path.isabs(normalized):
return False
return True
防护效果:
- ✅ 阻止
../../../etc/passwd等路径遍历攻击 - ✅ 阻止绝对路径
/etc/passwd覆盖系统文件 - ✅ 双重验证(原始 + 规范化)
2. 临时目录安全
# ❌ 旧版本(不安全)
temp_dir = Path("/tmp/ai-clone-temp")
# ✅ 新版本(安全)
with tempfile.TemporaryDirectory(prefix="ai-clone-") as temp_dir:
# 自动清理,防竞争条件
...
优势:
- ✅ 随机临时目录名(防预测)
- ✅ 自动清理(防残留)
- ✅ 原子操作(防竞争)
3. 元数据脱敏
# ❌ 旧版本(泄露路径)
metadata = {
"source_workspace": "/home/admin/.openclaw/workspace"
}
# ✅ 新版本(脱敏)
metadata = {
"source_workspace_name": "workspace", # 仅目录名
"security_version": "hardened"
}
保护内容:
- ✅ 隐藏完整文件系统路径
- ✅ 隐藏用户名
- ✅ 隐藏操作系统信息
4. 敏感文件自动排除
DEFAULT_EXCLUDE_PATTERNS = [
".env", # 环境变量
"*.key", # 密钥文件
"*.secret", # 敏感文件
"*.pem", "*.crt", # 证书文件
# ... 更多
]
SENSITIVE_PATTERNS = [
"*api_key*",
"*apikey*",
"*secret*",
"*password*",
"*credential*",
]
🔧 命令参考
导出配置
python scripts/clone_robot.py export [选项]
选项:
--source PATH 源工作区路径
--output FILE 输出文件名
--exclude PATTERN 额外排除的文件/目录(可重复)
--no-optional 不包含可选目录
--keep-paths 在元数据中保留完整路径(默认脱敏)
导入配置
python scripts/clone_robot.py import PACKAGE [选项]
选项:
--target PATH 目标工作区路径
--preview 预览包内容(不执行导入)
--force 跳过确认直接导入
验证安全
python scripts/clone_robot.py verify PACKAGE
验证项:
✅ ZIP Slip 检查
✅ 绝对路径检查
✅ 可疑文件检查
⚠️ 安全注意事项
导入前的检查清单
-
验证来源
- 克隆包来自可信来源
- 已验证发送者身份
-
安全验证
- 运行
verify命令检查 - 查看包内文件列表(
--preview)
- 运行
-
环境隔离
- 在测试环境首次导入
- 备份现有配置
导出前的检查清单
-
敏感信息
- 检查是否包含
.env文件 - 检查是否包含 API Keys
- 检查是否包含证书文件
- 检查是否包含
-
元数据
- 使用默认脱敏(
--redact-metadata) - 或手动指定
--keep-paths(谨慎)
- 使用默认脱敏(
-
文件审查
- 使用
unzip -l clone-package.zip查看内容 - 确认无意外文件
- 使用
🧪 验证克隆
部署后运行验证:
# 1. 检查核心文件
ls -la SOUL.md IDENTITY.md USER.md MEMORY.md
# 2. 验证记忆文件
cat MEMORY.md | head -20
# 3. 检查技能包
ls skills/
# 4. 启动测试
openclaw status
📊 克隆报告示例
📋 检查核心配置文件...
✅ SOUL.md (2.1KB)
✅ IDENTITY.md (1.5KB)
✅ USER.md (892B)
✅ MEMORY.md (3.2KB)
✅ HEARTBEAT.md (1.8KB)
📁 检查可选目录...
✅ memory/ (15 文件,45.3KB)
✅ skills/ (8 技能,1.2MB)
✅ scripts/ (23 文件,156.7KB)
📊 扫描完成:
机器人:machine-cat
核心文件:7 个
可选目录:3 个
总大小:1.4MB
📦 创建克隆包...
源:/home/admin/.openclaw/workspace
目标:machine-cat-clone.zip
✅ 克隆包创建成功!
文件:machine-cat-clone.zip
大小:456.2KB
安全版本:hardened v2.0
🔄 版本历史
v2.0.0 (2026-03-06) - 安全加固版
- 🔒 修复 ZIP Slip 漏洞 - 路径验证 + 规范化检查
- 🔒 使用 tempfile.TemporaryDirectory - 替代固定临时路径
- 🔒 元数据脱敏 - 默认隐藏绝对路径
- 🔒 敏感文件自动排除 -
.env,*.key,*.secret等 - 📝 文档代码统一 - 所有命令参数一致
- ✅ 新增 verify 命令 - 导入前验证克隆包
v1.0.0 (2026-03-04) - 初始版本
- ✅ 基础导出/导入功能
- ✅ 核心配置文件识别
- ✅ 临时目录清理
🆘 故障排查
问题 1:导入时提示"不安全路径"
❌ 不安全路径:../../../etc/passwd
原因: 克隆包可能包含恶意文件
解决: 拒绝导入,联系发送者重新打包
问题 2:找不到核心配置文件
❌ 警告:未找到任何核心配置文件
原因: 不在正确的 workspace 目录
解决: 使用 --source 指定正确路径
问题 3:元数据包含敏感路径
⚠️ 元数据包含绝对路径
原因: 使用了 --keep-paths 参数
解决: 重新导出,不使用该参数
技能版本:2.0.0
安全版本:hardened
创建时间:2026-03-04
安全更新:2026-03-06
机器猫 🐱 开发
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!