OpenClaw怎么知道要去调用哪个skill?
有人问我,说OpenClaw和之前的AI工具,例如deepseek,豆包,有什么差异?
其中很重要的一点,就是OpenClaw可以调用工具去执行任务。比如,她会自动调用exec,browser,skill去完成对应的工作。
那么问题来了,OpenClaw是怎么调用工具的?她怎么知道,要调用exec,browser,还是skill呢?
首先,OpenClaw得知道自己有哪些工具,比如,上面说的:exec,browser,skill... 并且得知道哪个工具是干嘛。
其次,在需要使用工具时,OpenClaw会根据工具的描述,判断哪个工具适合当前任务。
比如说要系统调用,就去找exec。
比如说要访问网页,就去找browser。
比如说要寻找skill,就去使用find-skills去找。
选好工具后,OpenClaw会根据任务需求,构造出合适的参数,执行工具并返回结果。工具执行完后,结果返回给OpenClaw,她再把结果组织成语言告诉我们。
那么问题来了,像exec,browser这种系统自带的工具,OpenClaw很容易知道它们的用途和参数,那第三方的skill,例如find-skills,OpenClaw怎么知道它是干嘛的,要传什么参数,什么时候来调用呢?仅仅凭借skill工具的名字find-skills吗?
并不是通过名字,skill是有标准,有规范的。
一个skill必须包含:
描述:告诉OpenClaw这个工具能干什么;
参数:告诉OpenClaw怎么传入参数;
执行逻辑:具体的实现代码。
如图所示,find-skills在开头告诉了OpenClaw,自己是干嘛的,什么时候可以调用它完成任务。
这样,我们就不需要每次明确告诉OpenClaw:调用find-skills去查找技能。OpenClaw她能够自己理解,并选择正确的工具去调用。
这对我们的启示是什么呢?
启示一:我们自己写skill的过程中,描述是最重要的:描述写得好,OpenClaw才能准确判断什么时候该用这个工具;描述写得模糊,OpenClaw就会选错工具,或者干脆不知道该用哪个。
启示二:不要以为skill装的越多越好。OpenClaw会把这些skill的描述加载到上下文里,这会非常耗token。我们只需要安装自己需要的skill即可。
简单总结:
1. 工具调用让OpenClaw能做实事,不只是聊天;
2. 调用过程分三步:判断、选工具、构造参数执行返回;
3. skill描述决定了OpenClaw会不会用它;
4. 写好skill,描述是关键;
5. 只安装自己需要的skill。
夜雨聆风