技能与插件
一句话总结把能力打包成可复用、可分发、可热插拔的单元(skill / plugin / extension),让 agent 的能力像装 App 一样扩展。介于裸工具和完整 agent 之间的封装粒度。
它解决什么问题
单个 工具太细,整个 agent 太重。技能/插件提供中等粒度的复用单元——一组相关工具 + prompt + 配置,可在项目/社区间共享。
设计维度 / 实现谱系
- 粒度:单工具 ↔ 技能包(工具+prompt+状态)↔ 子 agent
- 分发:内置 ↔ 本地目录约定 ↔ 注册表/市场
- 加载:静态导入 ↔ 运行时动态加载 ↔ 自生成技能(Aeon、Hive)
- 生命周期钩子:是否提供 hooks(ConnectOnion 的 12 个生命周期钩子)
- 隔离:插件沙箱与权限
关键要点
- skill 一词在不同框架含义差异大(从单文件到完整能力包)。
- 自生成/自修复技能是自治 agent 的前沿方向。
- 与 tool-use 和子 agent 边界模糊。
关联
各框架实现对比
下表汇总 30 个实现了「技能 / 插件」的框架(源码级阅读结论)。网站上以可展开 + 源码节选呈现。
| 框架 | 实现方式 |
|---|---|
| Aeon | 182+ 个 SKILL.md,分 6 大类;./add-skill |
| AG2 | 两条路:①AgentCapability 子类经 add_to_agent() 给 Agent 加能力(teachability/vision/generate_images/transform_messages);②interop/ 把 LangChain/CrewAI/PydanticAI 工具桥接为 AG2 Tool;mcp/ 作为 MCP client 接入外部工具 |
| Agent-LLM (AGiXT) | extension 即插件体系:97+ 内置(agixt/extensions/),可自定义并经 Extensions Hub 从外部 git 仓库/本地路径热加载(EXTENSIONS_HUB 环境变量,ExtensionsHub.py);extension 可带 SQLAlchemy 模型、FastAPI 路由、WebSocket、webhook、Desktop UI 包 |
| AgentDock | 通过 node 扩展实现:自定义能力=继承 BaseNode/BaseTool 的节点,经 NodeRegistry/ToolRegistry 注册(register-core-nodes.ts);agent 在 nodes:[] 中按名启用。无独立 “skill/plugin” 概念,统一收敛到 node 系统 |
| AgentField | @app.skill() = 确定性代码端点(与 reasoner 对称);MCP 集成(af add —mcp —url,控制平面 internal/mcp/);harness 4 providers(Claude Code/Codex/Gemini CLI/OpenCode) 作为可插拔”超能力”经 factory 装配 |
| Agentic Context Engine (ACE) | ”Skill”=Skillbook 条目(策略),非可执行插件;可插拔性体现在:Step 协议(requires/provides)、Runner 经 extra_steps 扩展、learning_tail() 复用、optional extras(browser-use/langchain/mcp/dedup)。另含 Claude Code .claude/skills/kayba-pipeline/ 七阶段分析技能 |
| AgentScope | Skills=带 YAML frontmatter 的 SKILL.md 目录,LocalSkillLoader 扫描加载,注入提示告知”skill 不是 tool,需用 SkillViewer 读取再照做”(兼容 Claude Code 技能形态);插件机制=middleware(钩子链)而非传统插件;工具组(ToolGroup)可动态激活 |
| Ailoy | 扩展点=自定义工具(new_function/new_custom LM/new_custom knowledge) 与 MCP;MCP 客户端原生支持 stdio/streamable-HTTP 子进程传输(src/tool/mcp/native.rs,wasm 走 wasm32.rs),MCPClient::get_tools() 把远端工具批量转 Tool(src/agent/base.rs:911 测试演示)。无独立”skill/plugin 注册中心” |
| Astron Agent | 插件工厂多态:LinkPluginFactory(讯飞开放平台工具)/McpPluginFactory(MCP server 列表→工具,远程 HTTP 调用)/WorkflowPluginFactory/SkillPluginFactory;Skill 兼容 Claude Code 风格:生成 read_skill_(读 SKILL.md + 相对路径资源)与 run_skill_(在 e2b 沙箱执行命令)两个工具 |
| Botpress | 两个层面:①平台层 packages/sdk 的 Plugin/Integration 体系(bp init 模板,integration.definition.ts+src/index.ts,readme.md:46);②LLMz 层 ObjectInstance 把相关工具+变量打包成命名空间(db.queryUsers())、hooks 注入自定义逻辑 |
| ConnectOnion | plugin=事件处理函数列表;12 钩子(events.py);Skills=带 YAML frontmatter 的 SKILL.md,三级自动发现(project→user→builtin),/command 触发并临时授予工具权限(turn 结束清除),兼容 Claude Code .claude/skills/ |
| Cordum | Integration Packs:30+ CAP-native worker 包(Slack/GitHub/AWS/K8s/Terraform…),每个是带策略门工作流的 worker;cordumctl pack install 安装 |
| CrewAI | skills/ 模块:发现并激活 Skill(discover_skills/activate_skill,YAML 元数据);crewai_tools 独立包提供数百个工具;MCP 客户端把外部 MCP server 工具接入 |
| Dust | Skills=可复用的能力包(指令+数据源+工具集),挂到 agent 上;运行时 getSkillServers 把 skill 暴露为 MCP server(如 skill_knowledge_file_system),并把”已装备 skills”渲染进用户消息 |
| hcom | 随仓库带 Claude Code skill hcom-agent-messaging(SKILL.md + references/scripts)与 plugin 清单(.claude-plugin/plugin.json);用户脚本投到 ~/.hcom/scripts/ 自动发现、可覆盖内置(README:366) |
| Hermes Agent | Skills=带 YAML frontmatter 的 SKILL.md,progressive disclosure(list 看元数据→view 加载全文→按需读 references),兼容 agentskills.io 开放标准;/ |
| Hive | Skills=带 YAML frontmatter 的 SKILL.md,三级发现(default/preset/community)+ trust gating + tool_gating(激活临时授权);SkillsManager 统一加载并渲染 prompt;内建 6 个 default skill(error-recovery、context-preservation 等)+ preset(browser/linkedin/terminal/x 等) |
| Lagent | 扩展点=Hook(4 钩子:before/after × agent/action) 与 actions(工具) 注册表;MCPClientAdapter 把外部 MCP server(stdio/sse/http) 暴露的工具接入为 BaseAction(待确认成熟度)。无独立”skill”概念 |
| LoongFlow | 复用 Claude Code 的 Skill 体系:ClaudeCodeAgent 默认放行 Skill/Task 工具并 setting_sources=[“project”],从仓库 .claude/skills/、.agents/skills/(如 skill-creator、code-analysis)加载技能;自定义工具经 create_sdk_mcp_server 包成 MCP server 注入;通用扩展点是 AgentBase 的 pre_/post_ 钩子 |
| Mastra | Skills=SKILL.md(gray-matter frontmatter)文件,经 workspace/skills/ 发现(local/versioned/composite source + glob),由 SkillsProcessor 注入(eager 或 on-demand 发现),并暴露为 skill 工具;兼容 Claude Code ~/.claude/skills/(workspace/filesystem/local-filesystem.ts:83)。插件式扩展主要靠 processors + tools + storage domains,而非继承 |
| nanobot | Skills=带 YAML frontmatter 的 SKILL.md,三级发现(workspace→builtin,workspace 覆盖同名),requires.bins/env 决定可用性,always=true 强制注入,渐进式加载(先摘要后 read_file);内置 skill 含 cron/long-goal/github/memory/skill-creator 等。工具插件经 entry_points(“nanobot.tools”) 扩展 |
| OpenClaw | Skills=带 YAML frontmatter 的 SKILL.md,递归发现、按 description 由模型自主选用、disable-model-invocation 可隐藏,兼容 Claude-Code 风格;Plugins/Extensions=extensions/ 包,经 manifest(openclaw 字段声明 extensions/skills/prompts/themes) 装卸;Hooks=生命周期钩子(bundled: session-memory、compaction-notifier、boot-md…) |
| Pilot Protocol | 两层含义:①daemon 插件=L11 能力插件经 runtime.ServiceRegistry 注册(trustedagents/handshake/dataexchange/eventstream/policy/webhook/skillinject),内核只依赖 L10 pkg/coreapi 接口;②agent skill=skillinject 插件自动给检测到的 AI 编码工具写入 SKILL.md(KindMarker/Helper/PluginFile/PluginAllowList),周期性 reconcile,教 agent 怎么用 Pilot |
| PraisonAI | Skills=带 YAML frontmatter 的 SKILL.md,三级发现(project→user→builtin),激活时按 allowed_tools 临时授权;兼容 Claude Code .claude/skills/(也认 .praisonai/skills/,向上递归祖先目录);另有 hooks / middleware / 插件式扩展 |
| Semantic Kernel | “Plugin” = 一组 KernelFunction 的命名集合(KernelPlugin/KernelPluginCollection)。KernelPluginFactory.CreateFromType |
| Strands Agents | 两层:Plugin(注册 hooks/装配 agent,plugins/) + typed hook 事件;AgentSkills vended plugin 把带 frontmatter 的 SKILL.md 注入 system prompt 并提供 skills 激活工具,按需加载;MCP=即插即用工具源 |
| SwarmClaw | Skills:YAML frontmatter 的 SKILL.md,三级发现(runtime-skill-resolver)+ prompt 预算(skill-prompt-budget)+ 资格过滤(skill-eligibility);conversation→skill 学习:从成功回合提炼 learned skill 走审查上线;Extensions(前身 plugins)= 带 hooks 的能力单元;ClawHub 分发(openclaw skills install swarmclaw) |
| Transformers Agents | 自定义 Tool / Hub 上分享工具 |
| Upsonic | Skills 系统:带 SKILL.md(YAML frontmatter) 的技能,内建 builtins(code-review/data-analysis/summarization),含 loader/validator/dependency/cache/metrics;prebuilt 自治 agent 也以 skills 形式打包 |
| VoltAgent | 扩展点为 hooks(onStart/onEnd/onToolStart…)、middleware(input/output 可重试)、guardrails、Toolkit、MCP/A2A 接入;Workspace 下有 SKILL(workspace/skills/,gray-matter 解析 SKILL.md frontmatter);外部能力主要靠 MCP server |
各框架实现对比 · 源码级
Aeon yaml 182+ 个 SKILL.md,分 6 大类;./add-skill <repo> 从任意 GitHub 仓库导入(带 skill-security-scan 安全扫描);./install-skill-pack 装社区技能包(skill-packs.json 注册表);./new-from-template 从 6 个模板脚手架;create-skill 技能自建技能
182+ 个 SKILL.md,分 6 大类;./add-skill <repo> 从任意 GitHub 仓库导入(带 skill-security-scan 安全扫描);./install-skill-pack 装社区技能包(skill-packs.json 注册表);./new-from-template 从 6 个模板脚手架;create-skill 技能自建技能
查看 Aeon 完整笔记 →AG2 python 两条路:①AgentCapability 子类经 add_to_agent() 给 Agent 加能力(teachability/vision/generate_images/transform_messages);②interop/ 把 LangChain/CrewAI/PydanticAI 工具桥接为 AG2 Tool;mcp/ 作为 MCP client 接入外部工具
两条路:①AgentCapability 子类经 add_to_agent() 给 Agent 加能力(teachability/vision/generate_images/transform_messages);②interop/ 把 LangChain/CrewAI/PydanticAI 工具桥接为 AG2 Tool;mcp/ 作为 MCP client 接入外部工具
查看 AG2 完整笔记 →Agent-LLM (AGiXT) python extension 即插件体系:97+ 内置(agixt/extensions/),可自定义并经 Extensions Hub 从外部 git 仓库/本地路径热加载(EXTENSIONS_HUB 环境变量,ExtensionsHub.py);extension 可带 SQLAlchemy 模型、FastAPI 路由、WebSocket、webhook、Desktop UI 包
extension 即插件体系:97+ 内置(agixt/extensions/),可自定义并经 Extensions Hub 从外部 git 仓库/本地路径热加载(EXTENSIONS_HUB 环境变量,ExtensionsHub.py);extension 可带 SQLAlchemy 模型、FastAPI 路由、WebSocket、webhook、Desktop UI 包
查看 Agent-LLM (AGiXT) 完整笔记 →AgentDock typescript 通过 node 扩展实现:自定义能力=继承 BaseNode/BaseTool 的节点,经 NodeRegistry/ToolRegistry 注册(register-core-nodes.ts);agent 在 nodes:[] 中按名启用。无独立 "skill/plugin" 概念,统一收敛到 node 系统
通过 node 扩展实现:自定义能力=继承 BaseNode/BaseTool 的节点,经 NodeRegistry/ToolRegistry 注册(register-core-nodes.ts);agent 在 nodes:[] 中按名启用。无独立 "skill/plugin" 概念,统一收敛到 node 系统
nodes/base-node.ts:55 * Base node class that all nodes must extend.
* Provides core functionality and type safety.
*/
export abstract class BaseNode<TConfig = unknown> {
/** Unique identifier for the node */
readonly id: string;
/** Unique type identifier for the node */
abstract readonly type: string;
/** Node configuration (immutable after construction) */
protected config: TConfig; AgentField go @app.skill() = 确定性代码端点(与 reasoner 对称);MCP 集成(af add --mcp --url,控制平面 internal/mcp/);harness 4 providers(Claude Code/Codex/Gemini CLI/OpenCode) 作为可插拔"超能力"经 factory 装配
@app.skill() = 确定性代码端点(与 reasoner 对称);MCP 集成(af add --mcp --url,控制平面 internal/mcp/);harness 4 providers(Claude Code/Codex/Gemini CLI/OpenCode) 作为可插拔"超能力"经 factory 装配
agent.py:2573
return decorator
def skill(
self,
tags: Optional[List[str]] = None,
path: Optional[str] = None,
name: Optional[str] = None,
*,
vc_enabled: Optional[bool] = None,
require_realtime_validation: bool = False,
):
""" Agentic Context Engine (ACE) python "Skill"=Skillbook 条目(策略),非可执行插件;可插拔性体现在:Step 协议(requires/provides)、Runner 经 extra_steps 扩展、learning_tail() 复用、optional extras(browser-use/langchain/mcp/dedup)。另含 Claude Code .claude/skills/kayba-pipeline/ 七阶段分析技能
"Skill"=Skillbook 条目(策略),非可执行插件;可插拔性体现在:Step 协议(requires/provides)、Runner 经 extra_steps 扩展、learning_tail() 复用、optional extras(browser-use/langchain/mcp/dedup)。另含 Claude Code .claude/skills/kayba-pipeline/ 七阶段分析技能
ace/steps/__init__.py:50ace/core/skillbook.py:302 return ReflectStep(reflector)
def learning_tail(
reflector: ReflectorLike,
skill_manager: SkillManagerLike,
skillbook: Skillbook,
*,
dedup_manager: DeduplicationManagerLike | None = None,
dedup_interval: int = 10,
checkpoint_dir: str | Path | None = None,
checkpoint_interval: int = 10,
) -> list[StepProtocol[ACEStepContext]]: AgentScope python Skills=带 YAML frontmatter 的 SKILL.md 目录,LocalSkillLoader 扫描加载,注入提示告知"skill 不是 tool,需用 SkillViewer 读取再照做"(兼容 Claude Code 技能形态);插件机制=middleware(钩子链)而非传统插件;工具组(ToolGroup)可动态激活
Skills=带 YAML frontmatter 的 SKILL.md 目录,LocalSkillLoader 扫描加载,注入提示告知"skill 不是 tool,需用 SkillViewer 读取再照做"(兼容 Claude Code 技能形态);插件机制=middleware(钩子链)而非传统插件;工具组(ToolGroup)可动态激活
skill/_base.py:23skill/_local_loader.py:14tool/_toolkit.py:51 """The last updated time of the skill."""
class SkillLoaderBase(ABC):
"""The base class for skill loader."""
@abstractmethod
async def list_skills(self) -> list[Skill]:
"""List all the skills that can be loaded by this loader."""
raise NotImplementedError Ailoy rust 扩展点=自定义工具(new_function/new_custom LM/new_custom knowledge) 与 MCP;MCP 客户端原生支持 stdio/streamable-HTTP 子进程传输(src/tool/mcp/native.rs,wasm 走 wasm32.rs),MCPClient::get_tools() 把远端工具批量转 Tool(src/agent/base.rs:911 测试演示)。无独立"skill/plugin 注册中心"
扩展点=自定义工具(new_function/new_custom LM/new_custom knowledge) 与 MCP;MCP 客户端原生支持 stdio/streamable-HTTP 子进程传输(src/tool/mcp/native.rs,wasm 走 wasm32.rs),MCPClient::get_tools() 把远端工具批量转 Tool(src/agent/base.rs:911 测试演示)。无独立"skill/plugin 注册中心"
src/tool/base.rs:59 }
}
pub fn new_mcp(tool: MCPTool) -> Self {
Self {
inner: ToolInner::MCP(tool),
}
}
pub fn new_knowledge(tool: KnowledgeTool) -> Self {
Self {
inner: ToolInner::Knowledge(tool),
} Astron Agent python 插件工厂多态:LinkPluginFactory(讯飞开放平台工具)/McpPluginFactory(MCP server 列表→工具,远程 HTTP 调用)/WorkflowPluginFactory/SkillPluginFactory;Skill 兼容 Claude Code 风格:生成 read_skill_(读 SKILL.md + 相对路径资源)与 run_skill_(在 e2b 沙箱执行命令)两个工具
插件工厂多态:LinkPluginFactory(讯飞开放平台工具)/McpPluginFactory(MCP server 列表→工具,远程 HTTP 调用)/WorkflowPluginFactory/SkillPluginFactory;Skill 兼容 Claude Code 风格:生成 read_skill_(读 SKILL.md + 相对路径资源)与 run_skill_(在 e2b 沙箱执行命令)两个工具
service/builder/base_builder.py:81service/plugin/mcp.py:90service/plugin/skill.py:26 limits=httpx.Limits(max_connections=100, max_keepalive_connections=20),
)
async def build_plugins(
self,
tool_ids: list,
mcp_server_ids: list,
mcp_server_urls: list,
workflow_ids: list,
skills: list | None = None,
) -> list[Union[LinkPlugin, McpPlugin, WorkflowPlugin, SkillPlugin]]:
with self.span.start("BuildPlugins") as sp: Botpress typescript 两个层面:①平台层 packages/sdk 的 Plugin/Integration 体系(bp init 模板,integration.definition.ts+src/index.ts,readme.md:46);②LLMz 层 ObjectInstance 把相关工具+变量打包成命名空间(db.queryUsers())、hooks 注入自定义逻辑
两个层面:①平台层 packages/sdk 的 Plugin/Integration 体系(bp init 模板,integration.definition.ts+src/index.ts,readme.md:46);②LLMz 层 ObjectInstance 把相关工具+变量打包成命名空间(db.queryUsers())、hooks 注入自定义逻辑
packages/llmz/src/objects.ts:48packages/llmz/README.md:233 export type JSON = {
name: string
description?: string
properties?: ObjectProperty[]
tools?: Tool.JSON[]
metadata?: Record<string, unknown>
}
}
/**
* ObjectInstance creates stateful, namespace-scoped objects for LLMz agents.
*
* Objects combine properties (stateful variables) and tools (functions) into a ConnectOnion python plugin=事件处理函数列表;12 钩子(events.py);Skills=带 YAML frontmatter 的 SKILL.md,三级自动发现(project→user→builtin),/command 触发并临时授予工具权限(turn 结束清除),兼容 Claude Code .claude/skills/
plugin=事件处理函数列表;12 钩子(events.py);Skills=带 YAML frontmatter 的 SKILL.md,三级自动发现(project→user→builtin),/command 触发并临时授予工具权限(turn 结束清除),兼容 Claude Code .claude/skills/
查看 ConnectOnion 完整笔记 →Cordum go Integration Packs:30+ CAP-native worker 包(Slack/GitHub/AWS/K8s/Terraform…),每个是带策略门工作流的 worker;cordumctl pack install 安装
Integration Packs:30+ CAP-native worker 包(Slack/GitHub/AWS/K8s/Terraform…),每个是带策略门工作流的 worker;cordumctl pack install 安装
README.md:504
SDKs: **Go** (stable) | [**Python**](https://github.com/cordum-io/cap) | [**Node**](https://github.com/cordum-io/cap)
## Integration Packs
Extend Cordum with [30+ integration packs](https://github.com/cordum-io/cordum-packs) for Slack, GitHub, AWS, Jira, Terraform, Datadog, PagerDuty, and more. Each pack is a CAP-native worker with policy-gated workflows.
| Pack | Category | Description |
|------|----------|-------------|
| Slack | Communication | Approval notifications and agent alerts |
| GitHub | DevOps | Govern agent actions on repositories |
| AWS | Cloud | Policy-gated cloud operations |
| Kubernetes | DevOps | Governed incident remediation | CrewAI python skills/ 模块:发现并激活 Skill(discover_skills/activate_skill,YAML 元数据);crewai_tools 独立包提供数百个工具;MCP 客户端把外部 MCP server 工具接入
skills/ 模块:发现并激活 Skill(discover_skills/activate_skill,YAML 元数据);crewai_tools 独立包提供数百个工具;MCP 客户端把外部 MCP server 工具接入
crewai/mcp/client.py:54_cache_ttl = 300 # 5 minutes
class MCPClient:
"""MCP client with session management.
This client manages connections to MCP servers and provides a high-level
interface for interacting with MCP tools, prompts, and resources.
Example:
```python
transport = StdioTransport(command="python", args=["server.py"])
client = MCPClient(transport) Dust typescript Skills=可复用的能力包(指令+数据源+工具集),挂到 agent 上;运行时 getSkillServers 把 skill 暴露为 MCP server(如 skill_knowledge_file_system),并把"已装备 skills"渲染进用户消息
Skills=可复用的能力包(指令+数据源+工具集),挂到 agent 上;运行时 getSkillServers 把 skill 暴露为 MCP server(如 skill_knowledge_file_system),并把"已装备 skills"渲染进用户消息
front/lib/api/assistant/skill_actions.ts:22const SKILL_KNOWLEDGE_DATA_WAREHOUSE_SERVER_NAME =
"skill_knowledge_data_warehouse";
export async function getSkillServers(
auth: Authenticator,
{
agentConfiguration,
skills,
}: {
agentConfiguration: LightAgentConfigurationType;
skills: (SkillResource & { extendedSkill?: SkillResource | null })[];
}
): Promise<MCPServerConfigurationType[]> { hcom rust 随仓库带 Claude Code skill hcom-agent-messaging(SKILL.md + references/scripts)与 plugin 清单(.claude-plugin/plugin.json);用户脚本投到 ~/.hcom/scripts/ 自动发现、可覆盖内置(README:366)
随仓库带 Claude Code skill hcom-agent-messaging(SKILL.md + references/scripts)与 plugin 清单(.claude-plugin/plugin.json);用户脚本投到 ~/.hcom/scripts/ 自动发现、可覆盖内置(README:366)
查看 hcom 完整笔记 →Hermes Agent python Skills=带 YAML frontmatter 的 SKILL.md,progressive disclosure(list 看元数据→view 加载全文→按需读 references),兼容 agentskills.io 开放标准;/<skill-name> 触发;agent 可自创/自改 skill 并由 curator 维护;插件体系覆盖 model-provider/gateway 平台/context-engine/MCP
Skills=带 YAML frontmatter 的 SKILL.md,progressive disclosure(list 看元数据→view 加载全文→按需读 references),兼容 agentskills.io 开放标准;/<skill-name> 触发;agent 可自创/自改 skill 并由 curator 维护;插件体系覆盖 model-provider/gateway 平台/context-engine/MCP
tools/skills_tool.py:1agent/curator.py:1#!/usr/bin/env python3
"""
Skills Tool Module
This module provides tools for listing and viewing skill documents.
Skills are organized as directories containing a SKILL.md file (the main instructions)
and optional supporting files like references, templates, and examples.
Inspired by Anthropic's Claude Skills system with progressive disclosure architecture:
- Metadata (name ≤64 chars, description ≤1024 chars) - shown in skills_list Hive python Skills=带 YAML frontmatter 的 SKILL.md,三级发现(default/preset/community)+ trust gating + tool_gating(激活临时授权);SkillsManager 统一加载并渲染 prompt;内建 6 个 default skill(error-recovery、context-preservation 等)+ preset(browser/linkedin/terminal/x 等)
Skills=带 YAML frontmatter 的 SKILL.md,三级发现(default/preset/community)+ trust gating + tool_gating(激活临时授权);SkillsManager 统一加载并渲染 prompt;内建 6 个 default skill(error-recovery、context-preservation 等)+ preset(browser/linkedin/terminal/x 等)
skills/manager.py:1"""Unified skill lifecycle manager.
``SkillsManager`` is the single facade that owns skill discovery, loading,
and prompt renderation. The runtime creates one at startup and downstream
layers read the cached prompt strings.
Typical usage — **config-driven** (runner passes configuration)::
config = SkillsManagerConfig(
skills_config=SkillsConfig.from_agent_vars(...), Lagent python 扩展点=Hook(4 钩子:before/after × agent/action) 与 actions(工具) 注册表;MCPClientAdapter 把外部 MCP server(stdio/sse/http) 暴露的工具接入为 BaseAction(待确认成熟度)。无独立"skill"概念
扩展点=Hook(4 钩子:before/after × agent/action) 与 actions(工具) 注册表;MCPClientAdapter 把外部 MCP server(stdio/sse/http) 暴露的工具接入为 BaseAction(待确认成熟度)。无独立"skill"概念
hooks/hook.py:7actions/mcp_client.py:14agents/agent.py:158from lagent.schema import AgentMessage
class Hook:
def before_agent(
self,
agent,
message: Tuple[AgentMessage],
session_id: int,
):
pass LoongFlow python 复用 Claude Code 的 Skill 体系:ClaudeCodeAgent 默认放行 Skill/Task 工具并 setting_sources=["project"],从仓库 .claude/skills/、.agents/skills/(如 skill-creator、code-analysis)加载技能;自定义工具经 create_sdk_mcp_server 包成 MCP server 注入;通用扩展点是 AgentBase 的 pre_/post_ 钩子
复用 Claude Code 的 Skill 体系:ClaudeCodeAgent 默认放行 Skill/Task 工具并 setting_sources=["project"],从仓库 .claude/skills/、.agents/skills/(如 skill-creator、code-analysis)加载技能;自定义工具经 create_sdk_mcp_server 包成 MCP server 注入;通用扩展点是 AgentBase 的 pre_/post_ 钩子
framework/claude_code/claude_code_agent.py:60agents/general_agent/executor.py:290 os.environ["CLAUDE_CODE_MAX_OUTPUT_TOKENS"] = str(max_output_tokens)
class ClaudeCodeAgent(AgentBase):
"""
Wraps the Claude Agent SDK as a generic Agent node in LoongFlow.
This agent provides Claude with full terminal/file system permissions.
Claude SDK internally handles Planning -> Execution (Coding/Bash) -> Solving.
Supports both built-in tools and custom user-defined tools.
Usage: Mastra typescript Skills=SKILL.md(gray-matter frontmatter)文件,经 workspace/skills/ 发现(local/versioned/composite source + glob),由 SkillsProcessor 注入(eager 或 on-demand 发现),并暴露为 skill 工具;兼容 Claude Code ~/.claude/skills/(workspace/filesystem/local-filesystem.ts:83)。插件式扩展主要靠 processors + tools + storage domains,而非继承
Skills=SKILL.md(gray-matter frontmatter)文件,经 workspace/skills/ 发现(local/versioned/composite source + glob),由 SkillsProcessor 注入(eager 或 on-demand 发现),并暴露为 skill 工具;兼容 Claude Code ~/.claude/skills/(workspace/filesystem/local-filesystem.ts:83)。插件式扩展主要靠 processors + tools + storage domains,而非继承
agent/agent.ts:828 }
/**
* Gets the skills processors to add to input processors when workspace has skills.
* @internal
*/
private async getSkillsProcessors(
configuredProcessors: InputProcessorOrWorkflow[],
requestContext?: RequestContext,
): Promise<InputProcessorOrWorkflow[]> {
// Check if workspace has skills configured
const workspace = await this.getWorkspace({ requestContext: requestContext || new RequestContext() });
if (!workspace?.skills) { nanobot python Skills=带 YAML frontmatter 的 SKILL.md,三级发现(workspace→builtin,workspace 覆盖同名),requires.bins/env 决定可用性,always=true 强制注入,渐进式加载(先摘要后 read_file);内置 skill 含 cron/long-goal/github/memory/skill-creator 等。工具插件经 entry_points("nanobot.tools") 扩展
Skills=带 YAML frontmatter 的 SKILL.md,三级发现(workspace→builtin,workspace 覆盖同名),requires.bins/env 决定可用性,always=true 强制注入,渐进式加载(先摘要后 read_file);内置 skill 含 cron/long-goal/github/memory/skill-creator 等。工具插件经 entry_points("nanobot.tools") 扩展
agent/skills.py:21agent/skills.py:203agent/tools/loader.py:62)
class SkillsLoader:
"""
Loader for agent skills.
Skills are markdown files (SKILL.md) that teach the agent how to use
specific tools or perform certain tasks.
"""
def __init__(self, workspace: Path, builtin_skills_dir: Path | None = None, disabled_skills: set[str] | None = None):
self.workspace = workspace OpenClaw typescript Skills=带 YAML frontmatter 的 SKILL.md,递归发现、按 description 由模型自主选用、disable-model-invocation 可隐藏,兼容 Claude-Code 风格;Plugins/Extensions=extensions/ 包,经 manifest(openclaw 字段声明 extensions/skills/prompts/themes) 装卸;Hooks=生命周期钩子(bundled: session-memory、compaction-notifier、boot-md…)
Skills=带 YAML frontmatter 的 SKILL.md,递归发现、按 description 由模型自主选用、disable-model-invocation 可隐藏,兼容 Claude-Code 风格;Plugins/Extensions=extensions/ 包,经 manifest(openclaw 字段声明 extensions/skills/prompts/themes) 装卸;Hooks=生命周期钩子(bundled: session-memory、compaction-notifier、boot-md…)
packages/agent-core/src/harness/skills.ts:57 * Traverses directories recursively, loads `SKILL.md` files, loads direct root `.md` files as skills, honors ignore files,
* and returns diagnostics for invalid skill files. Missing input directories are skipped.
*/
export async function loadSkills(
env: ExecutionEnv,
dirs: string | string[],
): Promise<{ skills: Skill[]; diagnostics: SkillDiagnostic[] }> {
const skills: Skill[] = [];
const diagnostics: SkillDiagnostic[] = [];
for (const dir of Array.isArray(dirs) ? dirs : [dirs]) {
const rootInfoResult = await env.fileInfo(dir);
if (!rootInfoResult.ok) {
if (rootInfoResult.error.code !== "not_found") { Pilot Protocol go 两层含义:①daemon 插件=L11 能力插件经 runtime.ServiceRegistry 注册(trustedagents/handshake/dataexchange/eventstream/policy/webhook/skillinject),内核只依赖 L10 pkg/coreapi 接口;②agent skill=skillinject 插件自动给检测到的 AI 编码工具写入 SKILL.md(KindMarker/Helper/PluginFile/PluginAllowList),周期性 reconcile,教 agent 怎么用 Pilot
两层含义:①daemon 插件=L11 能力插件经 runtime.ServiceRegistry 注册(trustedagents/handshake/dataexchange/eventstream/policy/webhook/skillinject),内核只依赖 L10 pkg/coreapi 接口;②agent skill=skillinject 插件自动给检测到的 AI 编码工具写入 SKILL.md(KindMarker/Helper/PluginFile/PluginAllowList),周期性 reconcile,教 agent 怎么用 Pilot
cmd/daemon/main.go:200cmd/pilotctl/skills.go:17layers.yaml:71 // resolve it once via d.DaemonAPI() and thread the shared value
// everywhere — keeps the type assertion in one place.
dapi := d.DaemonAPI()
rt := runtime.New(dapi)
ta := trustedagents.NewService()
if err := rt.Register(ta); err != nil {
log.Fatalf("register trustedagents: %v", err)
}
d.RegisterTrustChecker(ta)
if err := rt.Register(skillinject.NewService(skillinject.Config{})); err != nil {
log.Fatalf("register skillinject: %v", err) PraisonAI python Skills=带 YAML frontmatter 的 SKILL.md,三级发现(project→user→builtin),激活时按 allowed_tools 临时授权;兼容 Claude Code .claude/skills/(也认 .praisonai/skills/,向上递归祖先目录);另有 hooks / middleware / 插件式扩展
Skills=带 YAML frontmatter 的 SKILL.md,三级发现(project→user→builtin),激活时按 allowed_tools 临时授权;兼容 Claude Code .claude/skills/(也认 .praisonai/skills/,向上递归祖先目录);另有 hooks / middleware / 插件式扩展
skills/manager.py:64skills/discovery.py:36 """Get names of all loaded skills."""
return list(self._skills.keys())
def discover(
self,
skill_dirs: Optional[List[str]] = None,
include_defaults: bool = True,
) -> int:
"""Discover skills from directories.
Args:
skill_dirs: List of directory paths to scan
include_defaults: Whether to include default skill directories Semantic Kernel csharp “Plugin” = 一组 KernelFunction 的命名集合(KernelPlugin/KernelPluginCollection)。KernelPluginFactory.CreateFromType<T>()/AddFromObject 把类方法变插件;另支持从 prompt 目录、OpenAPI、gRPC、Prompty、Markdown、Yaml 加载
“Plugin” = 一组 KernelFunction 的命名集合(KernelPlugin/KernelPluginCollection)。KernelPluginFactory.CreateFromType<T>()/AddFromObject 把类方法变插件;另支持从 prompt 目录、OpenAPI、gRPC、Prompty、Markdown、Yaml 加载
dotnet/src/SemanticKernel.Core/KernelExtensions.cs:511 /// </remarks>
[RequiresUnreferencedCode("Uses reflection to handle various aspects of the function creation and invocation, making it incompatible with AOT scenarios.")]
[RequiresDynamicCode("Uses reflection to handle various aspects of the function creation and invocation, making it incompatible with AOT scenarios.")]
public static KernelPlugin AddFromType<T>(this ICollection<KernelPlugin> plugins, string? pluginName = null, IServiceProvider? serviceProvider = null)
{
Verify.NotNull(plugins);
KernelPlugin plugin = KernelPluginFactory.CreateFromType<T>(pluginName, serviceProvider);
plugins.Add(plugin);
return plugin;
}
/// <summary>Creates a plugin that wraps a new instance of the specified type <typeparamref name="T"/> and adds it into the plugin collection.</summary> Strands Agents python 两层:Plugin(注册 hooks/装配 agent,plugins/) + typed hook 事件;AgentSkills vended plugin 把带 frontmatter 的 SKILL.md 注入 system prompt 并提供 skills 激活工具,按需加载;MCP=即插即用工具源
两层:Plugin(注册 hooks/装配 agent,plugins/) + typed hook 事件;AgentSkills vended plugin 把带 frontmatter 的 SKILL.md 注入 system prompt 并提供 skills 激活工具,按需加载;MCP=即插即用工具源
vended_plugins/skills/agent_skills.py:45tools/mcp/mcp_client.py:104 return [sources]
class AgentSkills(Plugin):
"""Plugin that integrates Agent Skills into a Strands agent.
The AgentSkills plugin extends the Plugin base class and provides:
1. A ``skills`` tool that allows the agent to activate skills on demand
2. System prompt injection of available skill metadata before each invocation
3. Session persistence of active skill state via ``agent.state``
Skills can be provided as filesystem paths (to individual skill directories or SwarmClaw typescript Skills:YAML frontmatter 的 SKILL.md,三级发现(runtime-skill-resolver)+ prompt 预算(skill-prompt-budget)+ 资格过滤(skill-eligibility);conversation→skill 学习:从成功回合提炼 learned skill 走审查上线;Extensions(前身 plugins)= 带 hooks 的能力单元;ClawHub 分发(openclaw skills install swarmclaw)
Skills:YAML frontmatter 的 SKILL.md,三级发现(runtime-skill-resolver)+ prompt 预算(skill-prompt-budget)+ 资格过滤(skill-eligibility);conversation→skill 学习:从成功回合提炼 learned skill 走审查上线;Extensions(前身 plugins)= 带 hooks 的能力单元;ClawHub 分发(openclaw skills install swarmclaw)
skills/learned-skills.ts:1import crypto from 'node:crypto'
import { HumanMessage } from '@langchain/core/messages'
import { genId } from '@/lib/id'
import type {
LearnedSkill,
LearnedSkillLifecycle,
LearnedSkillRiskLevel,
MessageToolEvent, Transformers Agents python 自定义 Tool / Hub 上分享工具
自定义 Tool / Hub 上分享工具
查看 Transformers Agents 完整笔记 →Upsonic python Skills 系统:带 SKILL.md(YAML frontmatter) 的技能,内建 builtins(code-review/data-analysis/summarization),含 loader/validator/dependency/cache/metrics;prebuilt 自治 agent 也以 skills 形式打包
Skills 系统:带 SKILL.md(YAML frontmatter) 的技能,内建 builtins(code-review/data-analysis/summarization),含 loader/validator/dependency/cache/metrics;prebuilt 自治 agent 也以 skills 形式打包
查看 Upsonic 完整笔记 →VoltAgent typescript 扩展点为 hooks(onStart/onEnd/onToolStart…)、middleware(input/output 可重试)、guardrails、Toolkit、MCP/A2A 接入;Workspace 下有 SKILL(workspace/skills/,gray-matter 解析 SKILL.md frontmatter);外部能力主要靠 MCP server
扩展点为 hooks(onStart/onEnd/onToolStart…)、middleware(input/output 可重试)、guardrails、Toolkit、MCP/A2A 接入;Workspace 下有 SKILL(workspace/skills/,gray-matter 解析 SKILL.md frontmatter);外部能力主要靠 MCP server
查看 VoltAgent 完整笔记 →