当前位置: 首页 > news >正文

3. OpenClaw自定义skill通过环境变量传参

1. 目录结构

skill主要存放在三个地方:1)捆绑类skill,通过npm安装,一般在npm的modules目录下,看你是全局还是局部安装;2)本地skill,存放在OpenClaw主目录下的skills文件夹,目录为"~/.openclaw/skills";3)workspace skill,存放在"<workspace>/skill"目录下。

优先级是类别3最高,即workspace下的skill拥有最高优先级,其次是2,然后是1默认捆绑的skill。同名skill冲突时,OpenClaw按照这个优先级进行处理。看官方文档,说是还可以关联外部目录,通过"~/.openclaw/openclaw.json"的"skills.load.extraDirs"参数进行配置,这个优先级最低。

除了优先级,还有一点不同的是,"workspace"下的skill相当于私有的,仅对当前的agent的有效,而类别2,就是根目录下的skills是共享的,所有agent的都可以使用。

注意:“~/.openclaw” 对应的是linux的目录,"~"代表当前用户的根目录,对于windows平台,也是一致的,对应"C:\Users[用户名]"目录,后面不再解释。

1.1 skill文件布局
my-skill/ ├── SKILL.md# Required: instructions + metadata├── scripts/# Optional: executable code├── references/# Optional: documentation└── assets/# Optional: templates, resources

SKILL.md是必须存在的,其他都是可选的,如果说SKILL.md的内容过长,最好的办法就是分割成多个文件,放到“references”目录下,在SKILL.md文件中引用,这样做的好处是让模型在读取的时候,消耗的token少些,模型会按照需求读取引用的文件。

2. SKILL.md

这个文件是必须的,描述技能的功能和触发条件,需要采用yaml和markdown两种格式编写。
开始部分描述skill的主要功能,“—”开始,“—”结束,描述语言为yaml格式,有如下字段:

字段名必须存在描述
nameYes描述skill的名称,64个字符以内,小写字母(a-z)和(-)的混合体,字母开头
descriptionYes描述skill能做什么,什么时候触发,这个很关键
licenseNolicense描述,可以关联单独的文件
metadataNo元数据配置,比如需要哪些环境变量,需要提前装哪个程序
2.1 metadata配置
key描述
emoji设置macOS skills UI图标
homepage配置URL地址
os当前skill支持的os列表,例如(darwin,linux,win32),如果目标系统不在os列表中,skill会被禁用,数组格式
requires.bins提供一个程序列表,所有程序必须保证在PATH范围内能找到,数组格式
requires.anyBins提供一个程序列表,在PATH范围内至少存在一个,数组格式
requires.env需要提供的环境变量列表,如果不存在,skill就会被禁用,数组格式
primaryEnvenv变量名关联到skills.entries..apiKey
install安装器配置,支持brew、node、go等

3. 更新

3.1 更新SKILL.md

name修改的更规范些,按照官方标注,修改为小写字母和“-”的组合,增加metadata字段,导入环境变量信息,其他非必要字段我都删除了,如下:

---name:smart-plug-controldescription:Smart plug control skill for turning plug on/off. Triggers on phrases like "turn off plug","turn on plug","打开插座","关闭插座",or similar plug control commands.metadata:{"openclaw":{"requires":{"env":["SMART_PLUG_TOKEN","SMART_PLUG_IP"]},"primaryEnv":"SMART_PLUG_TOKEN"}}---

配置好以后,重启openclaw

openclaw gateway restart

切换到skill目录,发现已经能识别到环境变量没有配置,并且状态也被切换到“blocked”,这样我们就能把参数都放在环境变量中,避免泄露了。

”Save key“执行后,会将参数以明文的方式保存到”openclaw.json“文件中。如果不需要"Save
key"按钮,把"metadata"中"primaryEnv"去掉即可。

3.2 修改执行脚本

修改脚本,从环境变量获取这些参数,python代码进行一些微量修改:

defget_smart_plug_ip():returnos.environ.get("SMART_PLUG_IP")defget_smart_plug_token():returnos.environ.get("SMART_PLUG_TOKEN")# Device configurationPLUG_IP=get_smart_plug_ip()PLUG_TOKEN=get_smart_plug_token()
4. 执行测试
4.1 测试1

添加环境变量”SMART_PLUG_IP“和”SMART_PLUG_TOKEN“。

配置环境变量后,再次重启openclaw,效果如下,skill正常了!


执行控制插座指令,开关都正常(参数都配置在环境变量中)。

4.2 测试2

删除环境变量”SMART_PLUG_TOKEN“,重启openclaw,skill变为”blocked“状态。

通过”save key“配置token,会关联到”SMART_PLUG_TOKEN“,这是由SKILL.md中的”primaryEnv“实现的。比如这里我们配置为”123“,配置后,skill会变为”eligible“有效状态。


但是要提醒的是,这样是以明文配置在"~/openclaw.json"文件中。

TODO:官方文档说是可以用加密方式配置,暂时还不知道怎么配置,后续研究。

http://www.jsqmd.com/news/470482/

相关文章:

  • js基础和数据类型
  • 使用裁剪插件开发的 头像处理组件 响应式
  • 网安人的周末,其实是拉开差距的黄金期
  • 瑞祥商联卡回收渠道全解析:选择最佳方法安全又便捷 - 团团收购物卡回收
  • 一键把“纯色区划地图”数字化为 GIS 面要素:Map Digitizer Pro
  • 2026年大专商务英语毕业起薪规划与提升路径
  • 2026年中小企业主必看:北京代理记账公司选型指南与核心价值适配解析 - 十大品牌推荐
  • Flutter 三方库 malison 的鸿蒙化适配指南 - 强大的终端仿真与文本处理框架
  • 目前我还有一家同行业头部公司的offer,全年总包是XX万,贵司如果能把薪资调整到XX万,我可以立刻回绝其他offer,优先入职贵司
  • 什么是CRM?CRM系统和ERP有什么区别 - 纷享销客智能型CRM
  • OpenClaw 模型配置与切换经验分享
  • Idea中JDK版本引起的问题
  • 2026年比较好的上海办公室装修厂家推荐:上海写字楼装修制造厂家哪家靠谱 - 行业平台推荐
  • nacos连接DM达梦数据库
  • 电脑实时监控软件有什么?珍选8款电脑实时监控APP,2026新排行
  • 黄瓜遗传转化
  • 大模型开发全攻略:从零到一,打造你的智能应用!大模型项目实战教程(非常详细)
  • 人员姿态人员动作人员跌倒检测数据集VOC+YOLO格式7998张5类别
  • 安装 GitLab Runner
  • 中科蓝汛-对耳之间同步标志位状态-bt897
  • 代码写离婚协议:用递归函数分割房产——软件测试从业者的专业视角
  • 解决neo4j找不到neo4j.conf时修改neo4j.conf中内容方法
  • 【环境搭建】(八)Ubuntu22.04安装cuda_12.8.0+cudnn_8.9.6
  • C++<x>new和delete
  • LLM开发:Dify与LangChain入门讲解
  • sqli-labs注入全流程!2026最新(less8-13)
  • 如何解决0x80004005错误代码:全面剖析Windows系统更新问题与解决方案
  • 122. 买卖股票的最佳时机 II
  • 2026深度解答:云南大学本科专业与特色专业全解析
  • Flutter 三方库 automap 的鸿蒙化适配指南 - 让模型转换回归“自动导航”,打造鸿蒙应用专家级的对象映射中台