跨 harness 对比:Skill / 插件体系

这一维度指的是:harness 用什么机制把「一包可复用的能力」(指令 + 脚本 + 资源,或一段可加载的行为)装进 agent,以及它怎么发现、分发、隔离、调用这些包。它和「工具体系」正交——工具是 LLM 一次 function-call 就能调的单个可调用体,skill/插件是比工具更大的、按需渐进加载进上下文的单元。

设计谱系

61 个 harness 在这个维度上大致分成六个流派,彼此有交叉:

  1. Anthropic Agent Skills / SKILL.md 谱系(事实标准)。一个目录 = SKILL.md(YAML frontmatter 至少 name+description)+ 可选 scripts//references//assets/,核心机制是渐进式披露(progressive disclosure):启动时只把 name+description 注入系统提示,模型判断相关才加载完整正文,辅助文件再按需读。这是 Claude Code 首创、后被抽象成开放标准 agentskills.io 的一套约定,如今是绝大多数编码 harness 的共同底座。至少 30 个 harness 采用它。

  2. Plugin 超集打包层。在 skill 之上再套一层可分发单元:一个 plugin 目录(plugin.json 清单)把 skills + slash commands + subagents + hooks(hooks/hooks.json)+ MCP servers(.mcp.json)打包在一起,经 marketplace 分发。目录布局同样源自 Claude Code,被多家显式照搬。

  3. MCP-as-plugin 派。没有独立的 skill 文件抽象,扩展点就是 MCP(作为工具来源)+ 代码级 tool 注册。多见于通用 agent 框架和部分闭源 IDE 产品。

  4. 记忆即技能 / 程序性记忆派。skill 不是磁盘上的静态文件,而是记忆系统的一部分,能被 agent 自己蒸馏、编辑、跨会话演化。

  5. 类型化 / 能力对象派。skill/capability 不止是 markdown,还携带 typed 工具、model settings、生命周期 hook,用编程对象而非纯文本描述能力。

  6. GUI / computer-use 动作空间派。「插件」贡献的是浏览器/桌面操作的动作空间或云端托管技能,服务于 computer-use。

一条贯穿全局的暗线:跨厂商互操作。agentskills.io 成了公约数后,越来越多 harness 直接扫读别家目录(.claude/skills.codex/skills.cursor/skills…),skill 一次编写多处可用。

对比表

Harnessskill 抽象渐进披露plugin 超集 / 分发跨生态互操作该维度独特点
Claude CodeSKILL.md(原创)✅ 3 级✅ marketplace + 官方/三方区分是标准源头inline vs forked 执行;SkillTool 权限白名单 fail-closed;MCP prompt 也算 skill
CursorSKILL.md(称”开放标准”)✅ 人工审核 marketplace + 团队安装模式.claude/.codex19 个内置 skill;SCIM 受众范围
Codex CLISKILL.md(agentskills.io)✅ ≤2% 上下文预算✅ 市场源hook 设 CLAUDE_PLUGIN_ROOT 与 CC 互操作REPO/USER/ADMIN/SYSTEM 四作用域不合并;skill 声明 MCP 依赖触发安装
Gemini CLISKILL.md(agentskills.io)✅ activate_skill + 同意弹窗扩展捆绑.agents/skillsgemini skills install 从 git 装
Qwen CodeSKILL.md(近乎照搬 CC)扩展/bundled 分层frontmatter 极丰富(paths glob 门控、priority、逐 skill hooks);skill 名 Unicode 限制防注入
gooseSKILL.md(agentskills.io)✅ git 装 + 24h 自动更新兼容 Gemini CLI 扩展格式 + Open Plugins插件支持 Gemini/OpenPlugins 两种格式;hooks 生命周期规范
opencodeSKILL.md(兼容 CC)✅ npm/本地插件 + 远程 pull.claude/.agentsHooks 接口极全(20+ 钩子含 compaction/provider 注入);原子替换缓存
Zed.agents/skills SKILL.mdExtension 系统正交.agentsXML 信封转义防注入;容量常量(100KB/50KB/并发 16)
Warp (Oz)SKILL.md(parse_skill.rs)bundled十个 provider 原生发现(Claude/Codex/Cursor/Gemini/Copilot/Droid/Github/OpenCode)skills-as-agents(skill 可直接作云 agent + cron);UI 按 provider 品牌建模
Sourcegraph AmpSKILL.md✅ TS 插件(PluginAPI)读 CC skill 目录skill 打包 mcp.json 懒加载 MCP;把命令/toolbox/skill 三路收拢为 Plugins+Skills+MCP
Factory Droid.factory/skills SKILL.mddroid plugin marketplace.agent/skills调用控制矩阵(user-invocable × disable-model-invocation);旧 command 并入 skill
JetBrains JunieSKILL.md(agentskills.io)✅ Extensions marketplace.cursor/.claude/.codex兼容 Claude-plugin marketplace.json原生 + Claude-plugin 双 manifest
KiroSKILL.md(agentskills.io)Powers(POWER.md + MCP,策展市场)GitHub URL 导入三套机制官方对比表(Skills/Powers/Steering)+ Custom agents
Replit AgentSKILL.md(name/description/instructions)✅ description 即触发合作伙伴 Skills directory官方给出显式失败模式分类(description 过宽/重叠)
Devin.agents/skills(agentskills.io)Playbooks(组织级)区分扫 8 个遗留路径后端索引(clone 前可用)+ 磁盘实时扫描双源;自撰 skill PR 建议
AugmentSKILL.md(agentskills.io)✅ 显示预估 tokenauggie plugin marketplace.claude/.agents每 skill 自动注册为 slash;Skills/Rules/Commands 三分
MiMo CodeSKILL.md✅ 一方插件 + 远程 pull.claude/.codex/.opencode内置 skill 衍生自 Karpathy/Jesse Vincent 外部项目
Kimi CodeSKILL.md(type: prompt/inline/flow)✅ github-resolver 插件.agents/skills内置 import-from-cc-codex 迁移 skill;4 层 scope
QoderSKILL.md(≤64/1024 字符)✅ 两阶段✅ marketplace 4 来源镜像 anthropics/skills、vercel-labsskill 底层复用 Command;plugin 剥离子agent 的 hooks/mcp/permission 防提权;Cloud skill zip 上传
OpenHandsAgentSkills 规范 + 触发器照搬 CC 插件目录布局OpenHands extensions 仓库Skill 带 KeywordTrigger/TaskTrigger;install/enable/disable 轻量市场
ClineSKILL.md(对标 CC)✅ 插件跑子进程沙箱(JSON-RPC)组织远程下发 skill;进程级隔离
Roo CodeSKILL.md(类 CC)Marketplace(未验证)符号链接 skillskills-{mode}/ 按 mode 分目录;文件监视热重载
ContinueSKILL.mdContinue Hub/import-skill <url> 让 agent 自己抓 GitHub 装
Kilo CodeSKILL.md(agentskills.io)@kilocode/plugin.claude/.agentsopencode 血统(同款 mcp/plugin 结构);skills.urls 远程拉
CrewAISKILL.md(对标 Agent Skills)✅ 3 级 DisclosureLevelskill 渲染进系统提示<skills> XML 提升 prompt-cache
deepagentsSkillsMiddleware(agentskills.io)从磁盘加载子代理(第二套)多 source 分层覆盖严格规范校验;错误文本以 untrusted <skill_load_warnings> 呈现防投毒
HermesSKILL.md = 程序性记忆插件(3 来源 + pip entry points)agentskills.io + Skills Hub记忆/上下文引擎「单选」插件槽;Curator 后台维护
QwenPawSKILL.md(skill pool → workspace)✅ 6 类扩展(Middleware/HTTP/Frontend…)Skill Market 4 provider/make-skill 从对话转 skill;移植 anthropics/skills
AgentScopeSKILL.md(Anthropic 同款)✅ SkillViewer 工具插件层 = MCPskill 归属 tool group 随组激活;是 QwenPaw 底座
AutoGPTSkillComponent(引 Anthropic 规范)✅ 3 级 + max_loaded_skills遗留 plugins/(未探索)Reflexion prompt-strategy 相邻
Agent ZeroSKILL.md(Anthropic 开放标准)✅ 语义召回 top-6✅ 36 个内置 plugin(plugin.yaml)build-skill/a0-create-plugin meta-skill 让 agent 自扩展框架;行为规则自调整
CAMELSkillToolkit SKILL.md(Anthropic 风格)~90 toolkit + MCP.agents/skillsWorkflow Memory + Self-Improving CoT(STaR)
DeerFlowSKILL.md(完整 skill 系统)✅ legacy/deferred 两模式MCP + extensions_config 热改skill 安全扫描(LLM moderation + 静态);sandbox 只读;skill evolution
OpenAI Agents SDKSKILL.md(仅 sandbox track✅ 显式普通 Agent 无插件Codex auto-discovery root .agentsLazySkillSource 懒物化进 sandbox
Google ADKSKILL.md(agentskills.io,实验性)✅ L1/L2/L3✅ Plugins(15 横切 hook)frontmatter 带 ADK 扩展字段(adk_inject_state);GEPA prompt 优化
Pydantic AIon-demand Capability(对标 Agent Skills)✅ defer_loadingCapabilities 组合(中间件语义)可从 md+YAML 加载typed 工具 + hooks,比 markdown skill 更强;loaded 状态存 message history 跨 run 恢复
AgnoSKILL.md(Anthropic 同款)120+ toolkit 生态path_safety 越界防护 + validator 硬校验
Lettaskill = memFS 记忆块<available_skills>plugins/ 轻量skill 随 agent 走、与记忆一起 git 版本化;client-side skills
Open InterpreterSKILL.md(Codex 底座)✅ metadata-first✅ plugin + connectors.agents/skills内置 qa-testing computer-use skill(agent-browser + cua)
browser-use双 skill(文档 skill vs 运行时 hosted skill)Tools/Registry + MCP 双角色运行时从云 API 拉 hosted skill 动态注册为 action,缺 cookie 提示模型
UI-TARS DesktopAgentPlugin(environmentSection + getTools)AgentComposer 聚合code/mcp/gui-agent 各是一个 plugin;扩展靠 MCP + AgentPlugin
smolagents无独立 skill;工具即扩展HF Hub push/from_hubLangChain/Gradio 包装agent 整体可序列化成 HF Space 包
MetaGPT工具注册表即 skill(@register_tool运行时路径注册工具/技能统一,无分层
Semantic KernelKernelPlugin(4 种填充)OpenAPI/MCP 导入双向 MCP(可反向暴露为 server)prompt 模板本身就是一个”技能”
AutoGen无 skill;MCP 即插件McpWorkbench 包装整个 serverToolOverride 重命名/重描述 server 工具
Trae无一等 skill;MCP 声明式tools_registry 代码级allow_mcp_servers 白名单
Comate无 skill;MCP 是插件MCP 市场 + 全局 MCPCustom Agents(配置驱动类技能);mcp.json ≤5000 行硬限
CodeGeeX无 skill 文件;MCP 扩展MCP templates“插件功能”是系统提示预设
AutoClawSKILL.md(50+ 预置 + 自蒸馏)市场”即将上线”(未确认)Skill 进化:10+ 工具调用任务自动蒸馏成 skill
Amazon Qagent-config JSON = 技能包MCP servers版本化 agent config 即扩展单元,无市场
LangGraph无 / 不适用写节点/子图接进图组合发生在代码层
GPT-Researcher内部 skills = 代码模块Retriever/Scraper/MCP/LLM 插件面作为工具暴露给别的 agent插件是搜索引擎/抓取器级
SWE-agentBundle(config+bin+lib+install.sh)YAML 静态声明state_command 抽结构化状态;hidden_tools 隐藏工具
GPT-Pilot未实现(模板/knowledge_base 相邻)扩展 = 改 Python + prompt
Aider未实现(固定 /-命令表)ai-comment 注释触发是固定功能
Plandex未实现(无 skill/tool registry/MCP)构建期 hook(计费/鉴权)唯一缝是 server/hooks
Anthropic 编排博客源材料未涉及(MCP 为最近类比)

(未列入的 harness 在该维度未提及或不适用。)

分组讨论

A. SKILL.md + 渐进披露:谁是源头,谁在跟

这是全场最大的同心圆。Claude Code 是原创和事实标准——SKILL.md(name/description frontmatter)+ 三级渐进披露(启动只加载 name+description、相关才载正文、辅助文件再按需读)、skill 可打包可执行脚本把确定性操作从 token 生成里卸载、inline vs forked 两种执行模式、SkillTool 的安全属性白名单(fail-closed),这套东西被后来者反复引用。Anthropic 随后把它抽象成开放标准 agentskills.io

明确声称”实现 agentskills.io / Anthropic 开放标准”的有一大批:gooseCodex CLIGemini CLIKiroJunieDevinAugmentdeepagentsCrewAICAMELAgent ZeroGoogle ADKKilo CodeAgnoAgentScope。其中 Qwen Code 的实现”与 Claude Code 几乎一致”(连逐 skill hooks、allowedTools 自动授权都照抄),只是 frontmatter 更豪华(paths glob 门控条件激活、prioritywhen_to_use)。

值得单独点出的规范细节创新:

  • 防注入是这一派的共同焦虑:Zed 把 skill 正文包进 <skill_content> XML 信封并转义、deepagents 把解析失败的错误文本当 untrusted 的 <skill_load_warnings> 明确告诉模型不要当指令、Qwen Code 限制 skill 名的 Unicode 字符集防止通过名字做 prompt injection。
  • 调用控制Factory Droid 给出最清晰的矩阵——user-invocable(默认 true)× disable-model-invocation(默认 false)四象限,把”有副作用只让用户点”和”背景知识只让模型读”分开;Kimi Codetype: prompt/inline/flow 也是同类思路。
  • 上下文预算Codex CLI 把 skill 索引预算限死在上下文窗口的 ≤2% 或 8000 字符;Zed 有 100KB/50KB 硬上限;Augment 直接把每个 skill 的预估 token 数显示给用户——skill 成本在调用前可见。

B. Plugin 超集打包层:CC 目录布局的扩散

比 skill 大一圈的分发单元——把 skills + commands + subagents + hooks + MCP servers 打包成一个 plugin.json,经 marketplace 装。这套目录布局也是 Claude Code 立的规矩,扩散痕迹最直接的两处:OpenHands 文档明说其插件结构”照搬 Claude Code 的插件目录布局”(.claude-plugin/plugin.json 含 commands/agents/skills/hooks/.mcp.json);Codex CLI 的插件 hook 除了设 PLUGIN_ROOT 还同时设 CLAUDE_PLUGIN_ROOT/CLAUDE_PLUGIN_DATA,是与 CC 插件 hook 生态的显式互操作。Qoder 的插件目录(commands/agents/skills/hooks/output-styles/bin/.mcp.json)几乎逐字对应,还加了个安全设计——插件自带子 agent 定义里的 hooks/mcpServers/permissionMode 会被强制剥离,防插件借子 agent 悄悄提权。CursorJunie(甚至兼容 .claude-plugin/marketplace.json)、Factory DroidCopilotKimi Code 都有各自的 marketplace + plugin 层。

Sourcegraph Amp 是这一派里治理最清醒的:它把历史上三条独立扩展路径(自定义命令、toolbox、部分 skill 能力)主动收拢成 Plugins + Skills + MCP 三条官方轴线,还公开致谢其 plugin API “受 pi 的扩展 API 启发(Mario Zechner 创建)“——是少见的外部在先设计致谢。它的另一个巧思:skill 可打包 mcp.json,只在该 skill 被调用时才懒加载暴露 MCP 工具,官方明确说这优于常驻 MCP server(降上下文膨胀)。

C. 跨生态互操作:从”兼容读”到”原生发现十家”

agentskills.io 成公约数后,harness 开始直接扫别家目录。轻量的一档是兼容读 .claude/skillsopencodeMiMo Code(读 .claude/.codex/.opencode)、AugmentKilo CodeContinueCursor 都能无转换消费别家 SKILL.md。Devin 每仓扫 8 个遗留路径(.devin/.github/.claude/.cursor/.codex/.cognition/.windsurf/.agents)。Kimi Code 更进一步内置 import-from-cc-codex 迁移 skill。

最激进的是 Warp OzSkillProvider 枚举有十个变体(Warp/Agents/Claude/Codex/Cursor/Gemini/Copilot/Droid/Github/OpenCode),各映射到自己的目录约定,还按 provider 在 UI 层建模品牌图标(Claude 橙、OpenAI logo)。也就是说一个项目里既有的 Claude Code / Cursor / Gemini / Copilot / Factory Droid skill,Oz 都能原生发现并调用,项目方不用为 Warp 做任何事。Warp 还更进一步把 skill 和 agent 的边界打通——skills-as-agents:任何 skill 都能 oz agent run-cloud --skill <slug> 直接作为独立云 agent 启动并挂 cron。

D. 记忆即技能 / 程序性记忆:新增 harness 的差异化

这是几个新增 harness 最有辨识度的地方,它们把 skill 从”磁盘静态文件”重新定义为”可被 agent 自己编辑演化的记忆”:

  • Letta 把 skill 直接做成记忆块——compile_available_skills 扫描 label 以 skills/ 开头的 memFS block,渲染成 <available_skills> 目录树;skill 随 agent 走、与记忆仓库一起 git 版本化。配合它的分层自编辑记忆(这是 Letta 记忆维度的核心):sleeptime/“dreaming” 后台子 agent 用 rethink_memory/memory_replace/memory_apply_patch 等行号感知的 patch 工具改写记忆块,还能开 git worktree 并发整理记忆——skill 作为记忆的一部分自然被这套自编辑机制覆盖。这与所有”skill=磁盘文件”的 harness 是根本不同的本体论。
  • Hermes 把 skill 明确定义为”程序性记忆”(区别于 MEMORY.md 的陈述性记忆),记录如何做某类任务;skill_manage 工具有 create/edit/patch/delete,后台 Curator 编排器周期性 review/整合/归档 agent 自己创建的 skill(强不变式:只碰 agent 创建的、从不删只归档、pin 的跳过)。
  • AutoClaw 的”Skill 进化”把一次 10+ 工具调用的复杂任务自动蒸馏成命名 skill 文件,用户说”按老流程”即可召回。

自动从对话/轨迹生成 skill 是更广的趋势,还见于 QwenPaw/make-skillCodex CLI 的 Record & Replay(录屏演示起草 skill)、MiMo Code 的 distill(每 30 天挖重复工具序列固化成 SKILL.md)、DeerFlow 的 skill evolution、Devin 的自撰 skill PR 建议。

E. 类型化 / 能力对象派:不止 markdown

几个框架把”能力包”做成编程对象而非纯文本,能力更强:

  • Pydantic AI 的 Capabilities 是这一派的代表。一个 on-demand capability 显式对标 Anthropic Agent Skills(文档原话”same idea generalised”)但”更强”——一个 Anthropic skill 是 markdown,而它额外带 typed 工具 + model settings + 生命周期 hook,也能从 markdown+YAML 加载。最精巧的一点:capability 的 loaded 状态存在 message history 的 load_capability call/return 对里(不在 agent 对象上),因此跨 run、跨 provider 可恢复——这是把渐进披露做成可持久化状态机。
  • Google ADK 的 Skills 分 L1/L2/L3,frontmatter 里塞了 ADK 扩展字段(adk_inject_stateadk_additional_tools),plugin 层则是 15 个横切 hook(before/after model/tool/agent…);它还有真正的 eval 驱动 prompt 优化(GEPA)。
  • Agno 是 skill(Anthropic 同款渐进披露 + path_safety + validator 硬校验)+ 120+ toolkit 的双层。
  • Semantic Kernel 的 KernelPlugin 里”技能”字面上可以就是一个 prompt 模板(KernelFunctionFromPrompt),且支持双向 MCP(Kernel 能反向 as_mcp_server() 把自己暴露给别的客户端)。

F. GUI / computer-use 动作空间派

面向浏览器/桌面操作的 harness,“插件”贡献的是动作空间:

  • browser-use 有两套别混淆的 skill 概念——顶层 skills/ 是给编码 agent(如 CC)用 browser-use 的 Anthropic 式文档 skill;运行时 SkillService 则从 Browser Use 云 API 拉 hosted skill,run 开始时把每个 skill 动态注册成一个 agent action(slug 作 action 名、skill.parameters_pydantic 作 param model),带 browser cookies 执行,缺 cookie 时把”需要哪些 cookie”注入 prompt 提示模型。
  • UI-TARS DesktopAgentPlugin 抽象——每个 plugin 贡献 environmentSection(prompt 片段)+ getTools() + 生命周期钩子,由 AgentComposer 聚合;code-agent / mcp-agent / gui-agent 各是一个 plugin,GUI 操作能力就通过 gui-agent plugin 注入。
  • Open Interpreter(Codex 底座)把老版的 os mode 重构成一个 qa-testing computer-use skill(用 vercel-labs agent-browser 驱浏览器、trycua/cua 驱原生 GUI,按需经审批安装)——computer-use 从内建模式降格成一个可选 skill。

G. MCP-as-plugin 与”无 skill”派

通用 agent 框架大多不做独立 skill 抽象,扩展点就是 MCP + 代码级 tool 注册:AutoGen(McpWorkbench 把整个 server 包成 workbench,ToolOverride 重命名工具)、LangGraph(组合在代码层,写节点接进图)、smolagents(工具即扩展,agent 可序列化成 HF Space)、MetaGPT@register_tool 工具注册表即技能系统)。闭源 IDE 产品也多走这条:TraeComate(Custom Agents 是配置驱动的类技能)、CodeGeeXAmazon Q(版本化 agent-config JSON 即技能包)。

彻底未实现的少数:Aider(固定 /-命令表)、GPT-Pilot(扩展 = 改 Python)、Plandex(无 skill/registry/MCP,唯一缝是计费用的构建期 hook)。特别的是 SWE-agentBundle 机制——虽不叫 skill,但每个 bundle 是自包含目录(config.yaml + bin/ + lib/ + install.sh),可声明 state_command 每步抽结构化状态、hidden_tools 隐藏工具,是真正的插件架构,只是静态声明无运行时发现。

一个横向发现:meta-skill / skill-creator 几乎成了标配——Claude Code(skillify)、Codex CLIZed(create-skill)、deepagentsCAMELAgent Zero(build-skill)、Amp(building-skills)、Cursor 都内置一个”教你写 skill”的元技能,让 agent 能自扩展。

H. QwenPaw / AgentScope 的底座关系

补一条实体关系:QwenPaw 的运行时建在 AgentScope 之上——QwenPaw 的 Middleware 插件明说是”包装 AgentScope 的 on_acting/on_reasoning 钩子”,而 AgentScope 提供了 skill(SkillViewer 工具 + skill 归 tool group 随组激活)和长期记忆中间件(其中 ReMe 后端就是 QwenPaw 的默认长期记忆)。QwenPaw 在这个底座上加了完整的 skill market(4 provider:QwenPaw/ClawHub/ModelScope/Aliyun 并行搜索)、6 类插件扩展(Provider/Middleware/Hook/Command/HTTP API/Frontend)、以及从对话转 skill 的 /make-skill,还移植了 anthropics/skills 的 docx/pdf/pptx/xlsx。

最值得借鉴

1. 渐进式披露 + agentskills.io 作为跨厂商公约数。 这是整个维度最成功的设计,理由有二:(a) 渐进披露解决了 skill 库越大上下文越爆的根本矛盾——name+description 常驻、正文按需、辅助文件再按需,Claude Code 官方的说法是”打包进 skill 的上下文量实际上不受限”,因为大部分内容永不加载;(b) 一套开放 SKILL.md 约定让 skill 一次编写、被 Warp 那样原生发现十家、被十几个 harness 兼容读,形成了真正的生态外部性。任何新 harness 今天要做 skill,抄这套约定几乎没有理由不抄——它已经是这个领域的 HTTP。

2. Letta 的”记忆即技能 + 分层自编辑”。 如果说前者是当下的标准答案,Letta 指的是下一步。把 skill 塞进可 git 版本化的记忆块、再让 sleeptime 后台 agent 用 patch 式工具自我整理/去重/演化,意味着 skill 库不再是人手维护的静态资产,而能随 agent 用得越多自己长大、自己纠错(memory_apply_patch 参考了 computer-use edit tool 的行号感知设计)。它把「skill 分发」和「学习型记忆」两个原本分离的维度统一进了同一套自编辑基质——这比把 skill 当磁盘文件的主流做法更接近”agent 自我改进”的终态,是这一维度最值得押注的方向。