世界上有两种更新方式:停机更新和热更新。后者更酷。
热更新(Hot Reload)是OpenClaw Skills的核心能力之一。它允许你在不重启Agent的情况下,动态加载、更新或卸载技能。这意味着Agent可以在运行中「学会」新技能,就像你边走路边学英语一样——虽然你可能学不进去,但Agent可以。
# 加载新技能
openclaw skill load --session session_abc123 --skill github:myorg/my-skill
# 更新已加载的技能
openclaw skill update --session session_abc123 --skill my-skill --version 2.0.0
# 卸载技能
openclaw skill unload --session session_abc123 --skill my-skill
# 查看已加载技能状态
openclaw skill list --session session_abc123
// skill-hotreload-config.yaml
hotReload:
strategy: "graceful" # graceful | immediate | scheduled
graceful:
waitForCompletion: true
timeout: 30s
notifyAgent: true
immediate:
forceStop: false
preserveState: true
scheduled:
window: "02:00-04:00" # 凌晨2-4点执行
timezone: "Asia/Shanghai"
validation:
preLoad: true # 加载前验证技能兼容性
postLoad: true # 加载后运行健康检查
rollback:
enabled: true
autoOnFailure: true
maxAttempts: 3
# 查看技能可用版本
openclaw skill versions --skill github:myorg/my-skill
# 锁定特定版本(避免自动更新)
openclaw skill pin --session session_abc123 --skill my-skill --version 1.5.3
# 取消版本锁定,允许跟随最新版
openclaw skill unpin --session session_abc123 --skill my-skill
# 批量更新所有未锁定技能
openclaw skill update-all --session session_abc123 --strategy graceful
| 场景 | 推荐策略 |
|---|---|
| 低风险技能更新(修复bug) | immediate 立即更新 |
| 功能性更新(新增特性) | graceful 等待当前任务完成 |
| 大规模批量更新 | scheduled 低峰期执行 |
| 核心技能更新 | 先在测试环境验证 + graceful |
const { OpenClawClient, HotReloadStrategy } = require('@openclaw/sdk');
async function hotReloadSkill(sessionId, skillId, version) {
const client = new OpenClawClient();
// 1. 检查当前技能状态
const current = await client.skills.get(sessionId, skillId);
console.log(`当前版本: ${current.version}`);
// 2. 验证新版本兼容性
const validation = await client.skills.validate(sessionId, {
skillId: skillId,
version: version
});
if (!validation.compatible) {
throw new Error(`版本不兼容: ${validation.reason}`);
}
// 3. 执行热更新
const update = await client.skills.update(sessionId, {
skillId: skillId,
version: version,
strategy: HotReloadStrategy.GRACEFUL,
options: {
waitForCompletion: true,
timeout: 30000,
preserveState: true
}
});
// 4. 等待更新完成
await update.waitForCompletion();
// 5. 验证更新结果
const updated = await client.skills.get(sessionId, skillId);
console.log(`更新后版本: ${updated.version}`);
console.log(`状态: ${updated.status}`);
// 6. 运行健康检查
const health = await client.skills.healthCheck(sessionId, skillId);
if (!health.healthy) {
console.error('健康检查失败,正在回滚...');
await client.skills.rollback(sessionId, {
skillId: skillId,
reason: '健康检查失败'
});
}
return health.healthy;
}
async function batchHotReload(sessionId, skills) {
const client = new OpenClawClient();
const results = [];
for (const skill of skills) {
try {
const result = await hotReloadSkill(sessionId, skill.id, skill.version);
results.push({
skill: skill.id,
success: result,
version: skill.version
});
} catch (error) {
results.push({
skill: skill.id,
success: false,
error: error.message
});
}
// 短暂等待,避免过载
await new Promise(resolve => setTimeout(resolve, 1000));
}
// 生成报告
const report = {
timestamp: new Date().toISOString(),
total: skills.length,
succeeded: results.filter(r => r.success).length,
failed: results.filter(r => !r.success).length,
details: results
};
console.log('批量更新完成:', report);
return report;
}
📅 更新时间:2026-05-11 | 📖 更多OpenClaw教程请访问 工具教程索引