迁移openclaw任务至aionclaw需语义重写:1. 拆分command为step数组,禁用shell特性;2. 替换env为python_path/shared_libraries;3. 文件路径须相对且无../;4. 脚本中禁用os.system和subprocess shell调用,改用aion_http或aion_tool;5. 验证dry-run、字节级输出及重试策略一致性。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

将 OpenClaw 中定义的任务完整迁移到 AionClaw,需绕过二者底层运行时差异——OpenClaw 基于 Python subprocess 封装 CLI 工具链,而 AionClaw 使用 Rust 编写的异步沙箱引擎,不兼容直接复用 task.yaml 或 action script。迁移不是复制粘贴,而是按语义重写执行逻辑、适配新 runtime 的约束与能力边界。
确认 OpenClaw 任务结构与依赖
进入 OpenClaw 项目根目录,执行 cat tasks/my_task/task.yaml 查看任务定义。重点提取三项:【command】字段是否含 shell 管道或重定向(如 | grep、> out.log);【files】列表中是否有二进制文件或非 UTF-8 编码资源;env 下是否设置了 PYTHONPATH 或 LD_LIBRARY_PATH 这类运行时环境变量。
若 command 含管道或重定向,AionClaw 会直接报错退出,因它的 sandbox 不启动 shell 解释器;若 files 列表含 .so 或 .dll,需提前转为 AionClaw 支持的 WASI 模块或改用 host-exec 模式。
重写 task.yaml 为 AionClaw 兼容格式
在 AionClaw 工作区新建 tasks/my_task_v2/ 目录,创建 task.toml:
第一步:将 OpenClaw 的 command: "python3 step1.py && python3 step2.py" 拆成 AionClaw 的 [[step]] 数组,每个 step 必须是单一可执行命令,不能含 &&、; 或 |。
第二步:把原 env 中的 PYTHONPATH 替换为 python_path = ["./lib"] 字段,AionClaw 会自动注入到 Python 解释器启动参数中;LD_LIBRARY_PATH 类变量必须删除,改用 shared_libraries = ["libmycore.so"] 显式声明。
第三步:检查 files 列表——所有路径必须相对于 tasks/my_task_v2/ 根目录,且不能以 ../ 开头;若原 OpenClaw 引用了 ../../common/utils.py,必须先 cp 过来再声明。
替换脚本中的不兼容调用
方法一:Python 脚本内禁用 os.system() 和 subprocess.run(..., shell=True)
OpenClaw 允许脚本里写 os.system("curl -s http://api/health"),但 AionClaw 的 sandbox 默认禁止网络调用。必须改用 aion_http.get("http://api/health")(需提前在 dependencies 中声明 aion-http = "0.4")。
方法二:用 AionClaw 内置工具替代 CLI 依赖
原脚本中若有 subprocess.run(["jq", "-r", ".name"], input=data),不要保留 jq 二进制依赖。改用 serde_json::from_slice + 自定义解析逻辑,或声明 tools = ["jq"] 并改调用为 aion_tool::exec("jq", &["-r", ".name"]) —— 后者会在 sandbox 内加载预编译的 WASI 版 jq。
注意:AionClaw 的 tools 列表只接受白名单内的工具名(jq、yq、curl、git),不支持传入任意本地二进制。
验证迁移后行为一致性
① 在 AionClaw CLI 中执行:aionclaw run --task tasks/my_task_v2/task.toml --mode=dry-run,观察输出是否列出全部预期步骤且无 “unsupported shell feature” 报错。
② 删除 --mode=dry-run,真实运行:aionclaw run --task tasks/my_task_v2/task.toml。
③ 检查输出目录 output/ 下的文件内容是否与 OpenClaw 原始运行结果字节级一致——特别是浮点数序列化精度、JSON 键排序、时间戳格式(AionClaw 默认用 RFC 3339,OpenClaw 用 ISO 8601 默认格式)。
④ 若任务含失败重试逻辑,确认 AionClaw 的 retry_policy.max_attempts 已设为与 OpenClaw 的 retries 字段相同值,否则重试次数会少一次。










