- 从旧版/其他模型迁移到 OpenClaw:将您的微调数据、配置或模型权重迁移到 OpenClaw 的格式和架构。
- 使用 OpenClaw 处理或迁移您的私有数据:将您的业务数据转化为可用于微调 OpenClaw 的训练数据格式。
下面我将分场景详细介绍使用方法。

将您的微调数据迁移到 OpenClaw 训练格式
这是最常见的需求,OpenClaw 通常采用与 ChatGLM、Qwen、Llama 等主流模型兼容的对话格式进行有监督微调。
标准数据格式(JSONL):
OpenClaw 推荐使用 messages 列表的格式,每条数据是一个多轮对话。
{
"messages": [
{
"role": "system",
"content": "你是AI小龙虾OpenClaw,一个乐于助人的AI助手。"
},
{
"role": "user",
"content": "你好,请介绍一下你自己。"
},
{
"role": "assistant",
"content": "你好!我是OpenClaw,由AI小龙虾团队开发,我的目标是..."
},
{
"role": "user",
"content": "数据迁移应该怎么做?"
},
{
"role": "assistant",
"content": "数据迁移主要涉及将您的旧数据转换为标准的对话格式..."
}
]
}
迁移步骤:
-
数据提取与清洗:
- 从您的旧系统(可能是数据库、日志、Excel、旧版模型训练数据)中导出原始对话或问答对。
- 清洗数据,去除敏感信息、无关字符和噪音。
-
格式转换:
- 编写一个转换脚本(Python推荐),将您的原始数据映射到上述的
messages结构。 - 关键映射:确定您旧数据中的“提问方”、“回答方”分别对应
user和assistant,系统提示(system)可以根据需要添加。 - 多轮对话构建:如果您的数据是独立的Q&A对,可以保持单轮;如果是连贯的会话日志,需要按会话ID分组拼接成多轮。
简单的转换脚本示例:
import json # 假设您的旧数据是列表,每项包含 question 和 answer old_data = [ {"question": "问题1", "answer": "答案1"}, {"question": "问题2", "answer": "答案2"}, ] with open(‘openclaw_train.jsonl‘, ‘w‘, encoding=‘utf-8‘) as f: for item in old_data: new_format = { "messages": [ {"role": "user", "content": item["question"]}, {"role": "assistant", "content": item["answer"]} ] } f.write(json.dumps(new_format, ensure_ascii=False) + ‘\n‘) - 编写一个转换脚本(Python推荐),将您的原始数据映射到上述的
-
数据分割:
- 将转换后的
jsonl文件分割为训练集(train.jsonl)和验证集(validation.jsonl),通常比例为 9:1。
- 将转换后的
-
使用转换后的数据进行微调:
- 参考 OpenClaw 官方 GitHub 仓库的
README或train/目录下的脚本进行微调。 - 典型的命令行(基于类似 LLaMA-Factory 的方案)可能如下:
python train.py \ --model_name_or_path /path/to/openclaw-base-model \ --train_file /path/to/train.jsonl \ --validation_file /path/to/validation.jsonl \ --template openclaw # 或 qwen, chatglm3 等,根据具体模型提示词模板 --output_dir /path/to/output
- 参考 OpenClaw 官方 GitHub 仓库的
模型权重迁移/转换(适用于高级用户或开发者)
如果您想将其他类似架构模型的权重迁移到 OpenClaw 架构中,或进行模型合并,这涉及到更底层的操作。
常见工具和方法:
-
使用
mergekit:如果您想将 OpenClaw 与其他模型(如数学、代码专家模型)进行模型合并(Model Merging)。mergekit-yaml config.yaml output_dir
config.yaml中需要定义源模型(可能包括 OpenClaw)和合并方法(如 SLERP, DARE TIES)。 -
使用
transformers库进行低阶适配:- 如果只是想加载 OpenClaw 的预训练权重,然后在其上加载其他模型的 LoRA 权重,可以直接使用
peft库。
- 如果只是想加载 OpenClaw 的预训练权重,然后在其上加载其他模型的 LoRA 权重,可以直接使用
一般步骤:
- 确保模型架构(层数、注意力头数、隐藏维度)基本兼容。
- 使用脚本(如
convert_weights.py)进行权重名称映射和转换。这需要开发者对两个模型的架构有深入了解,不建议普通用户操作。
关键注意事项与最佳实践
- 数据质量 > 数据数量:迁移时务必注重清洗,高质量、干净的中文指令数据对提升 OpenClaw 的性能至关重要。
- 保留原文信息:在格式转换中,尽量保留原始数据中的意图和核心信息,避免过度概括。
- 版本对齐:确认您使用的 OpenClaw 代码库版本与数据格式要求、模型版本(如
OpenClaw-7B-Base-v1)匹配,务必查阅对应版本的官方文档。 - 提示词模板:在训练和推理时,必须使用与模型对齐的提示词模板(如
openclaw,chatml等),模板错误会导致性能大幅下降。 - 数据安全:迁移包含私有业务数据时,确保在安全环境中操作。
- 验证与测试:数据转换后,抽样检查几行,并用模型进行简单的推理测试,确保数据被正确理解和学习。
总结流程
graph LR
A[原始数据<br>数据库/日志/旧格式文件] --> B[数据提取与清洗];
B --> C[格式转换<br>编写脚本转为JSONL];
C --> D[数据分割<br>train.jsonl / val.jsonl];
D --> E[使用官方脚本微调];
E --> F[得到定制化的OpenClaw模型];
获取官方支持
- GitHub Repository:访问 AI-Crayfish/OpenClaw 官方仓库,查看
docs/目录和README,通常有最新的数据准备示例。 - Hugging Face Model Hub:在 OpenClaw 的模型页面上寻找相关的
tokenizer_config.json和generation_config.json,了解模型期望的输入格式。 - Issue 和 Discussion:如果在迁移过程中遇到问题,可以在 GitHub 仓库提交 Issue 或参与 Discussion,社区和开发者会提供帮助。
希望这份详细的指南能帮助您顺利完成 OpenClaw 的数据迁移工作!