SKILL-adapter:让SKILL不止只能装入Claude CodeCodexOpenClaw 之类的 coding agent

2026-04-11 12:031阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

SKILL

本项目是本人在搭建ai应用过程中,遇到SKILL难以复用的问题而搭建的项目。该文章的攥写可能会存在一些错误的描述,并且在实际场景中还有需要更多的优化。因此,在尝试介绍推广该项目的同时,也希望各位大佬指点一下,如果有兴趣的话,也欢迎各位大佬一起加入到此项目的构建!

仓库链接:GitHub - Yirzzzz/SKILL-adapter: Low-intrusion adapter for integrating SKILL-based routing and prompt augmentation into existing LLM and agent applications. · GitHub

随着 AI Coding 和智能体开发越来越普及,越来越多开发者开始把大模型接入真实应用中。但在这个过程中,一个很常见的问题也逐渐暴露出来:同类 prompt 在不同场景中反复编写、重复维护,导致能力难以复用,系统也越来越臃肿,以 open_deep_research( GitHub - langchain-ai/open_deep_research · GitHub ) 为例,系统会通过不同 prompt 设计来定义研究、压缩、报告生成等不同角色与阶段能力。

image1141×412 41.2 KB

为了解决这种 prompt 冗余和能力分散的问题,Anthropic 在 2025 年 10 月公开发了 Introducing Agent Skills,把 skill 明确描述成一类可复用能力单元,并围绕 SKILL.md、目录结构、动态加载来推广这套机制,把原本散落在代码和 prompt 里的能力,整理成一个可描述、可检索、可复用、可注入的能力单元,从而让智能体系统从“堆 prompt”走向“按需调用能力”。但当你了解更多细节之后,skill其实就是prompt工程的新发展。

例如当前很火的pua, 该项目已经达到了10k

image1307×311 35.8 KB

事实上他的实现就是一个好的prompting工程 (有兴趣的同学也可以去做一些开源的skill去丰富自己的简历)

image1330×492 11.8 KB

可复用的skill也迅速加快了人们对他的使用.除此之外,还可以在不同的社区上找到不同SKILL

  • Skills.sh https://skills.sh
  • SkillsMP https://skillsmp.com/zh

image1133×757 55.1 KB

SKILL-adapter

这些 skill 很容易装进 Claude Code / Codex / OpenClaw 之类的 coding agent,但对很多自建 LLM 应用、业务 Agent、对话系统来说,并没有一个低侵入接入层。

为了解决这个问题,我开源了SKILL-adapter的轻量级适配层:不要求重写整套 Agent 框架,也不要求迁移现有后端,只需要在原有模型调用前多接一层 adapter layer,就能获得 Skill Routing、Prompt Augmentation 和平滑 fallback. 例如在一个对话场景中,如果我们希望有pua的skill注入,我们还需要去手动修改prompt,一旦有一个新的skill,就得重复、反复的修改,这不仅是一个繁杂的工作,而且对于无需使用的skill还会导致上下文爆炸。

仓库链接:https://github.com/Yirzzzz/SKILL-adapter,希望各位大佬帮忙小弟点点star

在没有skill-adapter的情况下,我们需要在prompt直接加入skill的prompt:

response = client.chat.completions.create( model=‘Qwen/Qwen3-8B’, # ModelScope Model-Id, required messages=[ { ‘role’: ‘user’, ‘content’: ‘<pua.skill> + query’ }], stream=True, extra_body=extra_body )

当我们有了SKILL-adapter之后呢,它通过用户 Query → Skill Routing → Skill 选择 → Prompt Augmentation → 现有 LLM 应用的流程,以低侵入的方式直接接入ai应用中

from skill_adapter import SkillRuntime runtime = SkillRuntime(skill_dirs=\[“./skills”\]) # 定义skills路径 prepared = runtime.prepare( query=“query”, payload={“messages”: \[{“role”: “user”, “content”: “query”}\]}, mode=“messages”, debug=True, ) ​ response = client.chat.completions.create( model=“Qwen/Qwen3-8B”, **prepared.payload, stream=True, extra_body=extra_body )

image1112×491 111 KB

在该项目中,skill的检索召回能力至关重要,目前项目支持四种模式的召回:

  1. bm25_sentence (default): BM25 + sentence-transformers hybrid. Fully implemented. Legacy baseline.
  2. bm25_bge_m3: BM25 + BGE-M3 dense hybrid. Fully implemented. Recommended baseline for phase-2 benchmark.
  3. bge_m3_rerank: BGE-M3 first-stage + reranker pipeline. Implemented (with dependency fallback).
  4. bm25_bge_m3_rerank: BM25 + BGE-M3 first-stage + reranker pipeline. Implemented (with dependency fallback).

用户可以根据自己实际的项目需求,配置召回的skill个数以及权重:

from skill_adapter import SkillConfig ​ config = SkillConfig( skill_dirs=\[“./skills”\], # skill 目录 top_k=5, bm25_top_k=8, semantic_top_k=8, max_active_skills=1, #激活skill个数 activation_threshold=0.6, bm25_weight=0.7, semantic_weight=0.3, embedding_model_name=“sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2”, enable_semantic_retrieval=True, enable_bm25_retrieval=True, debug=True, )

除此之外,为了方便对比不同的召回模式,还提供了web服务供用户观察不同query对于skill召回结果

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

业务agent一般跑在生产服务器,完整版的skill需要能执行script,这块得考虑下生产环境怎么用。


--【贰】--:

感谢支持


--【叁】--:

非cli类,支持skill的Gui应用怎么接入? 如 CherryStudio ,RikkaHub。


排版修改一下吧


--【肆】--:

model=‘Qwen/Qwen3-8B’, # ModelScope Model-Id, required messages=[ { ‘role’: ‘user’, ‘content’: ‘<pua.skill> + query’ } ], stream=True, extra_body=extra_body )

​ runtime = SkillRuntime(skill_dirs=[“./skills”]) # 定义skills路径 ​ prepared = runtime.prepare( query=“query”, payload={“messages”: [{“role”: “user”, “content”: “query”}]}, mode=“messages”, debug=True, ) ​ response = client.chat.completions.create( model=“Qwen/Qwen3-8B”, **prepared.payload, stream=True, extra_body=extra_body )

​ config = SkillConfig( skill_dirs=[“./skills”], # skill 目录 top_k=5, bm25_top_k=8, semantic_top_k=8, max_active_skills=1, #激活skill个数 activation_threshold=0.6, bm25_weight=0.7, semantic_weight=0.3, embedding_model_name=“sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2”, enable_semantic_retrieval=True, enable_bm25_retrieval=True, debug=True, )


--【伍】--:

前排支持


--【陆】--:

这是不是个半成品?好像没看到提供执行能力的安全沙箱功能说明,或者说只能提供简单的提示词注入。


--【柒】--:

感谢兄弟的建议!有时间我会继续推进


--【捌】--:

这个不可能,除非客户端自己实现或者提供hook能力


--【玖】--:

感谢大佬 !


--【拾】--:

学习了。感谢佬友分享


--【拾壹】--:

是的,没错


--【拾贰】--:

感谢大佬开源


--【拾叁】--:

我去!我去看看


--【拾肆】--: 三金:

openskill

佬友这个开源社区指GitHub??


--【拾伍】--:

佬,开源社区还有个 openskill,好像和你这个功能类似

问题描述:

SKILL

本项目是本人在搭建ai应用过程中,遇到SKILL难以复用的问题而搭建的项目。该文章的攥写可能会存在一些错误的描述,并且在实际场景中还有需要更多的优化。因此,在尝试介绍推广该项目的同时,也希望各位大佬指点一下,如果有兴趣的话,也欢迎各位大佬一起加入到此项目的构建!

仓库链接:GitHub - Yirzzzz/SKILL-adapter: Low-intrusion adapter for integrating SKILL-based routing and prompt augmentation into existing LLM and agent applications. · GitHub

随着 AI Coding 和智能体开发越来越普及,越来越多开发者开始把大模型接入真实应用中。但在这个过程中,一个很常见的问题也逐渐暴露出来:同类 prompt 在不同场景中反复编写、重复维护,导致能力难以复用,系统也越来越臃肿,以 open_deep_research( GitHub - langchain-ai/open_deep_research · GitHub ) 为例,系统会通过不同 prompt 设计来定义研究、压缩、报告生成等不同角色与阶段能力。

image1141×412 41.2 KB

为了解决这种 prompt 冗余和能力分散的问题,Anthropic 在 2025 年 10 月公开发了 Introducing Agent Skills,把 skill 明确描述成一类可复用能力单元,并围绕 SKILL.md、目录结构、动态加载来推广这套机制,把原本散落在代码和 prompt 里的能力,整理成一个可描述、可检索、可复用、可注入的能力单元,从而让智能体系统从“堆 prompt”走向“按需调用能力”。但当你了解更多细节之后,skill其实就是prompt工程的新发展。

例如当前很火的pua, 该项目已经达到了10k

image1307×311 35.8 KB

事实上他的实现就是一个好的prompting工程 (有兴趣的同学也可以去做一些开源的skill去丰富自己的简历)

image1330×492 11.8 KB

可复用的skill也迅速加快了人们对他的使用.除此之外,还可以在不同的社区上找到不同SKILL

  • Skills.sh https://skills.sh
  • SkillsMP https://skillsmp.com/zh

image1133×757 55.1 KB

SKILL-adapter

这些 skill 很容易装进 Claude Code / Codex / OpenClaw 之类的 coding agent,但对很多自建 LLM 应用、业务 Agent、对话系统来说,并没有一个低侵入接入层。

为了解决这个问题,我开源了SKILL-adapter的轻量级适配层:不要求重写整套 Agent 框架,也不要求迁移现有后端,只需要在原有模型调用前多接一层 adapter layer,就能获得 Skill Routing、Prompt Augmentation 和平滑 fallback. 例如在一个对话场景中,如果我们希望有pua的skill注入,我们还需要去手动修改prompt,一旦有一个新的skill,就得重复、反复的修改,这不仅是一个繁杂的工作,而且对于无需使用的skill还会导致上下文爆炸。

仓库链接:https://github.com/Yirzzzz/SKILL-adapter,希望各位大佬帮忙小弟点点star

在没有skill-adapter的情况下,我们需要在prompt直接加入skill的prompt:

response = client.chat.completions.create( model=‘Qwen/Qwen3-8B’, # ModelScope Model-Id, required messages=[ { ‘role’: ‘user’, ‘content’: ‘<pua.skill> + query’ }], stream=True, extra_body=extra_body )

当我们有了SKILL-adapter之后呢,它通过用户 Query → Skill Routing → Skill 选择 → Prompt Augmentation → 现有 LLM 应用的流程,以低侵入的方式直接接入ai应用中

from skill_adapter import SkillRuntime runtime = SkillRuntime(skill_dirs=\[“./skills”\]) # 定义skills路径 prepared = runtime.prepare( query=“query”, payload={“messages”: \[{“role”: “user”, “content”: “query”}\]}, mode=“messages”, debug=True, ) ​ response = client.chat.completions.create( model=“Qwen/Qwen3-8B”, **prepared.payload, stream=True, extra_body=extra_body )

image1112×491 111 KB

在该项目中,skill的检索召回能力至关重要,目前项目支持四种模式的召回:

  1. bm25_sentence (default): BM25 + sentence-transformers hybrid. Fully implemented. Legacy baseline.
  2. bm25_bge_m3: BM25 + BGE-M3 dense hybrid. Fully implemented. Recommended baseline for phase-2 benchmark.
  3. bge_m3_rerank: BGE-M3 first-stage + reranker pipeline. Implemented (with dependency fallback).
  4. bm25_bge_m3_rerank: BM25 + BGE-M3 first-stage + reranker pipeline. Implemented (with dependency fallback).

用户可以根据自己实际的项目需求,配置召回的skill个数以及权重:

from skill_adapter import SkillConfig ​ config = SkillConfig( skill_dirs=\[“./skills”\], # skill 目录 top_k=5, bm25_top_k=8, semantic_top_k=8, max_active_skills=1, #激活skill个数 activation_threshold=0.6, bm25_weight=0.7, semantic_weight=0.3, embedding_model_name=“sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2”, enable_semantic_retrieval=True, enable_bm25_retrieval=True, debug=True, )

除此之外,为了方便对比不同的召回模式,还提供了web服务供用户观察不同query对于skill召回结果

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

业务agent一般跑在生产服务器,完整版的skill需要能执行script,这块得考虑下生产环境怎么用。


--【贰】--:

感谢支持


--【叁】--:

非cli类,支持skill的Gui应用怎么接入? 如 CherryStudio ,RikkaHub。


排版修改一下吧


--【肆】--:

model=‘Qwen/Qwen3-8B’, # ModelScope Model-Id, required messages=[ { ‘role’: ‘user’, ‘content’: ‘<pua.skill> + query’ } ], stream=True, extra_body=extra_body )

​ runtime = SkillRuntime(skill_dirs=[“./skills”]) # 定义skills路径 ​ prepared = runtime.prepare( query=“query”, payload={“messages”: [{“role”: “user”, “content”: “query”}]}, mode=“messages”, debug=True, ) ​ response = client.chat.completions.create( model=“Qwen/Qwen3-8B”, **prepared.payload, stream=True, extra_body=extra_body )

​ config = SkillConfig( skill_dirs=[“./skills”], # skill 目录 top_k=5, bm25_top_k=8, semantic_top_k=8, max_active_skills=1, #激活skill个数 activation_threshold=0.6, bm25_weight=0.7, semantic_weight=0.3, embedding_model_name=“sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2”, enable_semantic_retrieval=True, enable_bm25_retrieval=True, debug=True, )


--【伍】--:

前排支持


--【陆】--:

这是不是个半成品?好像没看到提供执行能力的安全沙箱功能说明,或者说只能提供简单的提示词注入。


--【柒】--:

感谢兄弟的建议!有时间我会继续推进


--【捌】--:

这个不可能,除非客户端自己实现或者提供hook能力


--【玖】--:

感谢大佬 !


--【拾】--:

学习了。感谢佬友分享


--【拾壹】--:

是的,没错


--【拾贰】--:

感谢大佬开源


--【拾叁】--:

我去!我去看看


--【拾肆】--: 三金:

openskill

佬友这个开源社区指GitHub??


--【拾伍】--:

佬,开源社区还有个 openskill,好像和你这个功能类似