openclaw ai高级skills需通过五种路径实现:一、skill.md声明式建模;二、python有状态工作流(agent.py+memory);三、ts/js异步事件驱动(index.ts);四、clawhub cli多技能yaml编排;五、沙盒化shell执行(受限路径与参数校验)。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望让 OpenClaw AI 执行涉及多步骤判断、条件分支、外部服务串联或状态保持的复杂任务,则需开发高级 Skills。这类技能不再满足于单次指令响应,而是构建具备上下文感知、错误恢复与流程编排能力的工作流。以下是实现该目标的多种可行路径:
一、基于 SKILL.md 的声明式工作流建模
OpenClaw 支持在 SKILL.md 中通过自然语言精确描述多阶段执行逻辑,AI 引擎可据此自动拆解并调度内置能力完成流程。该方式无需编写代码,依赖高质量的结构化提示工程。
1、在技能根目录创建 SKILL.md 文件,以“本技能用于…”开头明确用途;
2、使用“当…时,执行…”、“若…则…否则…”、“先…再…最后…”等句式定义条件与顺序;
3、为每个关键步骤提供至少一个具体输入输出示例,例如:“示例输入:用户说‘帮我把上周飞书会议纪要整理成待办清单并同步到钉钉’;预期输出:生成含3项任务的 Markdown 列表,并调用 dingtalk-create-task 接口”;
4、在权限声明区明确标注所需子技能名称(如 dingtalk-create-task、feishu-get-doc-content),确保其已启用;
5、保存后运行 openclaw skills check
二、Python 驱动的有状态工作流(agent.py + memory)
当流程需跨轮次维持变量、记录中间结果或根据实时响应动态调整路径时,必须引入 Python 代码层控制。agent.py 可访问 OpenClaw 内置 memory 接口,实现会话级状态管理。
1、在技能目录下新建 agent.py,继承 BaseSkill 类并重写 execute() 方法;
2、在 execute() 中调用 self.memory.get("key") 读取历史状态,用 self.memory.set("key", value) 持久化当前数据;
3、使用 self.invoke_skill("sub-skill-name", input_data) 同步调用其他已启用技能,获取结构化返回;
4、对返回结果做 if/elif 分支判断,决定下一步调用哪个子技能或返回最终响应;
5、在 SKILL.md 的 implementation 字段中明确标注:此技能由 agent.py 控制执行流程,依赖 memory 模块维持会话状态。
三、TS/JS 编写的异步事件驱动工作流(index.ts)
适用于需处理长周期外部回调(如等待 webhook、轮询 API 状态、定时触发)的场景。TypeScript 提供更严格的类型约束与 Promise 链式控制能力,适合构建鲁棒性要求高的生产级工作流。
1、在技能目录下创建 index.ts,导入 @openclaw/core 和 node-fetch 等必要依赖;
2、定义 async execute(context: SkillContext): Promise
监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明
3、使用 await fetch() 调用第三方 API,并用 try/catch 捕获网络异常,返回带 error 字段的 SkillResult;
4、对 HTTP 响应码做 switch 判断,例如 202 Accepted 时启动轮询循环,429 时调用 self.sleep(60000) 实现退避;
5、在 SKILL.md 的 implementation 字段中注明:此技能使用 TypeScript 实现异步事件驱动逻辑,支持超时控制与重试策略。
四、多技能协同编排(Skills Composition via ClawHub CLI)
不直接编码新技能,而是通过 ClawHub CLI 将多个已验证技能按 YAML 流程图组合,形成高阶抽象。该方式适合快速验证流程可行性,后续再固化为单一技能包。
1、创建 workflow.yaml 文件,使用 steps: 字段定义节点,每个节点包含 skill: 名称与 input: 参数映射;
2、用 when: 表达式配置条件跳转,例如 when: "{{ $.last_result.status == 'success' }}";
3、运行 npx clawhub@latest run --workflow workflow.yaml 执行流程并观察日志;
4、将验证稳定的 workflow.yaml 与对应 SKILL.md 一起打包,作为新技能发布;
5、在 SKILL.md 的 description 中强调:本技能本质为预编排工作流,所有子技能均已通过安全扫描与权限最小化认证。
五、带本地沙盒执行的文件系统工作流(shell + subprocess)
当工作流需操作本地文件、运行 shell 命令或调用未封装为 Skill 的 CLI 工具(如 ffmpeg、pandoc、git)时,必须启用 shell 权限并在 agent.py 中严格限定执行路径与参数范围。
1、在 SKILL.md 的 permissions 区域显式声明:requires: [shell],allowed_paths: ["/tmp/openclaw-workflow/", "/home/user/docs/"];
2、在 agent.py 中使用 subprocess.run() 并设置 cwd 参数指向 allowed_paths 内路径;
3、对用户输入的文件名做白名单校验,仅允许字母、数字、下划线、短横线,拒绝 ".." 与 "/";
4、捕获 stderr 输出并注入到 SkillResult.error 字段,避免敏感信息泄露;
5、执行完毕后调用 os.remove() 清理 /tmp 下临时文件,防止磁盘占满。









