需将openclaw技能适配至aionclaw平台,包括:1. 按manifest.json.schema规范修改id、version、entrypoint;2. 入口函数必须为def execute(context: dict) -> dict;3. 清理requirements.txt中系统级依赖;4. 显式声明permissions并使用context['workspace']替代硬编码路径。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要将OpenClaw社区中已有的Skill(如飞书数据拉取、PPT生成、邮件发送等)适配到AionClaw平台运行,因为两者虽同属本地优先Agent框架,但技能注册机制、执行上下文和API契约不兼容。
确认AionClaw的Skill规范
打开AionClaw官方文档根目录下的skills/manifest.json.schema,比对字段要求:必须包含id(全小写+下划线)、version(语义化版本)、entrypoint(Python函数路径,格式为module.submodule:function_name),且entrypoint指向的函数签名必须严格为def execute(context: dict) -> dict:。OpenClaw旧Skill若用kwargs或**params接收参数,将直接导致加载失败。
检查skills/requirements.txt——AionClaw仅允许声明纯Python依赖,禁止含系统级构建指令(如cmake、apt-get),而部分OpenClaw Skill的requirements中存在libasound-dev类条目,需手动剥离。
重写Skill入口函数
方法一:保留原逻辑,仅重构签名
将原OpenClaw Skill中类似def run(task: str, **options):的函数,改为:
【必须返回dict类型,且键名需与AionClaw的output_schema匹配】例如,若manifest.json声明"output_schema": {"status": "string", "file_path": "string"},则函数末尾必须是return {"status": "success", "file_path": "/tmp/report.pptx"},不能返回None或True。
方法二:注入context隔离层
在原Skill模块顶部插入适配器:
from aionclaw.runtime.context import get_runtime_context
def execute(context: dict) -> dict:
# 从context提取OpenClaw习惯的参数
task = context.get('task') or context.get('action')
options = context.get('options', {})
# 调用原始run()函数
result = run(task, **options)
return {"status": "success", "raw_result": result}
重构权限与资源声明
第一步:删除OpenClaw特有的.claw-permissions文件
第二步:在skills/manifest.json中显式声明所需能力:
若原Skill需访问网络,添加"permissions": ["network:outbound"];若需读写用户主目录,添加"permissions": ["fs:home:read", "fs:home:write"]。AionClaw默认禁用所有权限,未声明即拒绝,【缺少权限声明会导致skill静默失败,无日志输出】。
第三步:将原Skill中硬编码的路径(如/opt/claw/data)替换为context['workspace']——这是AionClaw注入的沙箱工作区路径,每次执行都唯一隔离。











