不懂就问,cc是怎么把skill给到大模型的

2026-04-11 08:221阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

比如提问一个问题,cc是把所有的skill生成摘要,都给大模型的,还是说先在本地进行向量检索,挑选出符合的skill,再给到大模型的,还有openclaw也支持skill,是怎么做的呢

网友解答:
--【壹】--:

我直接抓取了会话,你可以查看一下/让AI给你分析一下~

skill-调用.zip (30.3 KB)


--【贰】--:

system prompt里面注入每个skill的name+description(这样用的token不是很多)。LLM自己判断需不需要加载某个skill,需要加载的话就把这个skill的详细文档注入到上下文中。


--【叁】--:

image1358×1058 116 KB
其实就是把skill名字+描述放到第一个user message里面了 没什么神奇的地方


--【肆】--:

内置了一个工具叫做skill,这个工具的描述中会展示启用的所有skill的名称和描述。

当模型觉得需要调用某一个skill时候,会调用这个skill工具,工具会固定回复文本xxx skill已经加载,然后再以role=user身份发送skill的详细指导

用户视角只会看到命令行闪过加载了xxx skill


--【伍】--:

所有skill的名称以及描述都会发送,元信息应该还包含其他的?例如是否fork模式之类的


--【陆】--:

智能体没有检索这样的功能,智能体只是作为用户与模型沟通的桥梁,可能Gemini说的先进行检索是智能体先把你的输入加上skill目录加上其他提示词发给模型,模型分辨需不需要用到其中的skill,然后发请求给智能体进行加载


--【柒】--:

类似于先把所有的skill名+功能描述放入上下文中
由LLM来判断处理这个任务是否需要调用skill,如果需要cc再把对应skill.md的内容给到LLM

好像不涉及本地的向量检索,纯通过这种类似于菜单的形式让LLM点菜


--【捌】--:

确实容易爆,skills一多就占很多,模型会受到影响,所以skills不能装太多。以前的mcp是把全文放进上下文里,那个时候如果装了很多mcp,模型直接跟你爆了(bushi),skill的出现就是体现“按需加载”的思想


--【玖】--:

去看一下cc的源码不就懂了吗 会把关于skill的提示词写到提示词里面


--【拾】--:

确实是这样,但实际应用中应该不会真的安装这么多skill吧(


--【拾壹】--:

文本变化,不会重新注入,前几个版本测试过,只有目录name发生变化时,才会重新注入,完整注入所有的skill info


--【拾贰】--:

对claude code来说是直接加载的,但是也可以做到按需加载或者分配subagents之类的


--【拾叁】--:

也就是所有skill的名称以及元信息都会发给模型?


--【拾肆】--:

我问gemini,说会进行检索,得到相关的skill才会给大模型,就是不知道他为什么这么说,说的对不对


--【拾伍】--:

那这样来看, skill还是适当安装, 装多了还是会挤占context空间


--【拾陆】--:

也就是说,1000个skill,就会把1000个skill名+描述放到上下文,1万个就放1万这样的?那如果skill特别多,岂不是会爆token


--【拾柒】--: Amashiro:

第一个messages的某个消息块

是在名叫Skill的function tool的描述里

image1246×892 23.7 KB


--【拾捌】--:

cc的做法是在第一个messages的某个消息块里面注入类似文本串

The following skills are available for use with the Skill tool: - {skill.name_1}: {skill.description_1} - {skill.name_2}: {skill.description_2}

这样cc就全局知道有哪些skill了,并可以通过skill工具去实现渐进式披露。

然后热更新的规则是,监听skills目录,一旦目录新增或减少,则进行新目录扫描,获取最新的skill name和description,并在下一个轮次注入

通过相同的文本拼接规则,加载到上下文中,这样就可以在不破坏提示词缓存的情况下实现热更新


--【拾玖】--:

佬的说法我的确是认可的

所以我对现在又火起来的爱马仕agent表示强烈的怀疑

问题描述:

比如提问一个问题,cc是把所有的skill生成摘要,都给大模型的,还是说先在本地进行向量检索,挑选出符合的skill,再给到大模型的,还有openclaw也支持skill,是怎么做的呢

网友解答:
--【壹】--:

我直接抓取了会话,你可以查看一下/让AI给你分析一下~

skill-调用.zip (30.3 KB)


--【贰】--:

system prompt里面注入每个skill的name+description(这样用的token不是很多)。LLM自己判断需不需要加载某个skill,需要加载的话就把这个skill的详细文档注入到上下文中。


--【叁】--:

image1358×1058 116 KB
其实就是把skill名字+描述放到第一个user message里面了 没什么神奇的地方


--【肆】--:

内置了一个工具叫做skill,这个工具的描述中会展示启用的所有skill的名称和描述。

当模型觉得需要调用某一个skill时候,会调用这个skill工具,工具会固定回复文本xxx skill已经加载,然后再以role=user身份发送skill的详细指导

用户视角只会看到命令行闪过加载了xxx skill


--【伍】--:

所有skill的名称以及描述都会发送,元信息应该还包含其他的?例如是否fork模式之类的


--【陆】--:

智能体没有检索这样的功能,智能体只是作为用户与模型沟通的桥梁,可能Gemini说的先进行检索是智能体先把你的输入加上skill目录加上其他提示词发给模型,模型分辨需不需要用到其中的skill,然后发请求给智能体进行加载


--【柒】--:

类似于先把所有的skill名+功能描述放入上下文中
由LLM来判断处理这个任务是否需要调用skill,如果需要cc再把对应skill.md的内容给到LLM

好像不涉及本地的向量检索,纯通过这种类似于菜单的形式让LLM点菜


--【捌】--:

确实容易爆,skills一多就占很多,模型会受到影响,所以skills不能装太多。以前的mcp是把全文放进上下文里,那个时候如果装了很多mcp,模型直接跟你爆了(bushi),skill的出现就是体现“按需加载”的思想


--【玖】--:

去看一下cc的源码不就懂了吗 会把关于skill的提示词写到提示词里面


--【拾】--:

确实是这样,但实际应用中应该不会真的安装这么多skill吧(


--【拾壹】--:

文本变化,不会重新注入,前几个版本测试过,只有目录name发生变化时,才会重新注入,完整注入所有的skill info


--【拾贰】--:

对claude code来说是直接加载的,但是也可以做到按需加载或者分配subagents之类的


--【拾叁】--:

也就是所有skill的名称以及元信息都会发给模型?


--【拾肆】--:

我问gemini,说会进行检索,得到相关的skill才会给大模型,就是不知道他为什么这么说,说的对不对


--【拾伍】--:

那这样来看, skill还是适当安装, 装多了还是会挤占context空间


--【拾陆】--:

也就是说,1000个skill,就会把1000个skill名+描述放到上下文,1万个就放1万这样的?那如果skill特别多,岂不是会爆token


--【拾柒】--: Amashiro:

第一个messages的某个消息块

是在名叫Skill的function tool的描述里

image1246×892 23.7 KB


--【拾捌】--:

cc的做法是在第一个messages的某个消息块里面注入类似文本串

The following skills are available for use with the Skill tool: - {skill.name_1}: {skill.description_1} - {skill.name_2}: {skill.description_2}

这样cc就全局知道有哪些skill了,并可以通过skill工具去实现渐进式披露。

然后热更新的规则是,监听skills目录,一旦目录新增或减少,则进行新目录扫描,获取最新的skill name和description,并在下一个轮次注入

通过相同的文本拼接规则,加载到上下文中,这样就可以在不破坏提示词缓存的情况下实现热更新


--【拾玖】--:

佬的说法我的确是认可的

所以我对现在又火起来的爱马仕agent表示强烈的怀疑