news 2026/9/11 3:42:47

agents24 多 Harness 能力矩阵实战:一套 Markdown 插件源如何原生适配 Claude Code、Codex、Cursor、OpenCode 与 Antigravity

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
agents24 多 Harness 能力矩阵实战:一套 Markdown 插件源如何原生适配 Claude Code、Codex、Cursor、OpenCode 与 Antigravity

agents24 多 Harness 能力矩阵实战:一套 Markdown 插件源如何原生适配 Claude Code、Codex、Cursor、OpenCode 与 Antigravity

【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents

本文围绕 agents24 开源仓库的跨 Harness 能力矩阵(docs/harnesses.md)展开,深入讲解这套 agentic plugin marketplace 如何以plugins/下的 Claude Code Markdown 为唯一事实源,通过 tools/adapters/ 下的适配器为五种 Harness 生成各自原生的制品,并阐明各 Harness 的能力差异、优雅降级规则、安装路径与再生成流程。读完本文,你将掌握:每个 Harness 支持哪些组件与能力、同一份源内容在不同 Harness 中会被如何改写、哪些产物提交进仓库而哪些需要本地生成,以及gh skill/npx skills这类只装技能的轻量安装方式。

设计前提:一个事实源,五套原生制品

claude-agents(本文简称 agents24)是一个多 Harness 插件市场。它的核心设计原则是:

  • 事实源(source of truth)位于仓库根目录的 plugins/,全部以 Claude Code 的 Markdown 形式编写(agents 为.md、skills 为SKILL.md、commands 为.md);
  • 各 Harness 的制品由 tools/adapters/ 下的适配器生成,且目标是"每个 Harness 拿到符合自身惯例的原生产物,而不是最低公分母的翻译";
  • 能力矩阵的单一数据源是 tools/adapters/capabilities.py:该文件里的Capabilitydataclass 与CAPABILITIES字典同时被适配器(用于优雅降级)、文档生成器(用于生成本文所对应的docs/harnesses.md)以及 plugin-eval(用于harness_portability评分维度)消费。文档头部的注释也明确写道:本文镜像了capabilities.py中的矩阵,改动应编辑源码后通过make docs重新生成。

从源码结构看,每个 Harness 对应一个继承自HarnessAdapter基类(tools/adapters/base.py)的适配器,基类要求实现emit_plugin()(按插件逐个产出制品),并可覆写emit_global()(产出跨插件的市场注册表、上下文文件等)。

支持的 Harness 与产物路径

以下是文档给出的完整 Harness 支持清单:

Harness状态生成路径
Claude Code事实源plugins/.claude-plugin/marketplace.json
OpenAI Codex CLI受支持已提交:.agents/plugins/marketplace.jsonplugins/*/.codex-plugin/plugin.json;gitignored:.codex/skills/.codex/agents/
Cursor(2.5+)受支持已提交:.cursor-plugin/.cursor/rules/(精选规则)——指向源plugins/
OpenCodesst/opencode受支持gitignored:.opencode/agents/.opencode/commands/.opencode/skills/opencode.json
Google Antigravity CLIagy受支持gitignored:.antigravity/plugins/<name>/{skills/,agents/,commands/}
Agent Skills 安装器gh skill2.90+、npx skills受支持,仅技能不生成任何东西;两者直接读取 GitHub 上的plugins/*/skills/

值得注意的分工是:Codex 与 Cursor 走"已提交的瘦注册表"路线(注册表条目指向源plugins/,安装时直接读源技能树),而OpenCode、Antigravity(以及 Copilot)走"克隆后本地生成"路线(变换后的树体积大,故 gitignored)。这背后的取舍在文档中被称为 "native install is lean":只提交小型 JSON 注册表指向源目录,大体积的变换树留待本地用make generate重新生成。

能力矩阵:六大维度逐一对照

文档给出了完整的跨 Harness 能力对照表,这是判断"某能力在此 Harness 上是否可用、以何种形式可用"的核心依据:

能力Claude CodeCodexCursorOpenCodeAntigravity
Skills(原生 SKILL.md)✅ 经.claude/✅ 经.opencode/skills/✅(原生,每个插件自包含)
Subagents(原生 Markdown)TOML 格式✅ 经.claude/✅(frontmatter 不同)✅(agents/<name>.md+invoke_subagent/define_subagent
Slash commands转换为 skillscommands/<p>/<cmd>.toml(agy 报告为"转换为 skills")
插件市场✅ (2.5+)✅(agy plugin install <name>@marketplace/agy plugin link
并行 subagents
每 Agent 工具白名单✅(tools:sandbox_modereadonly:✅(permission:块)✅(tools:,agy 原生名)
TodoWrite工具
Task/Agent派生工具散文点名✅(task✅(invoke_subagent/define_subagent
MCP servers
生命周期 hooks✅(TS 插件)
上下文文件CLAUDE.mdAGENTS.md(32 KiB 上限)AGENTS.mdAGENTS.md/~/.claude/CLAUDE.mdAGENTS.md(原生读取)
上下文文件建议上限150 行 / 500 tokens150 行 / 500 tokens150 行 / 500 tokens150 行 / 500 tokens150 行 / 500 tokens
Skill 正文硬上限8 KB
工具名大小写CamelCase(Read动作动词(无工具词汇表)小写小写(严格)小写(agy 原生名)
裸模型别名✅(fable/opus/sonnet/haiku映射到 GPT-5.x 家族inherit完整 provider/model-id映射到层级别名(pro/flash/inherit

源码层面的对应关系

  • 能力标志的数据模型:每个Capability实例都带有skills_nativeagents_nativecommands_nativeplugin_marketplaceparallel_agentstool_allowlist_per_agenttodowritetask_spawnmcp_servershookscontext_file_namecontext_file_max_linesskill_body_max_bytestool_name_casebare_model_aliases等字段(见 tools/adapters/capabilities.py)。例如_CODEX_SKILL_CAP = 8 * 1024_CONTEXT_LINES_CAP = 150直接对应矩阵中 Codex 的 8 KB 技能上限与 150 行上下文建议上限。
  • 模型别名映射:矩阵底部"裸模型别名"一行的具体映射实现在MODEL_ALIASES(tools/adapters/capabilities.py):例如源里的model: opus在 Codex 下解析为gpt-5.5、在 Cursor 下改写为inherit、在 OpenCode 下改写为anthropic/claude-opus-4-8、在 Antigravity 下改写为层级别名proresolve_model()还会在遇到未知别名时通过EmitResult.warnings提示用户其显式模型选择被覆盖。
  • 工具名映射TOOL_NAME_MAPS(tools/adapters/capabilities.py)定义了 CamelCase 工具名到各 Harness 原生形式的改写表。Antigravity 的映射(Readview_fileEditreplace_file_contentWritewrite_fileBashrun_commandGrepgrep_searchAgent/Taskinvoke_subagent)在代码注释中特别注明是"对照已安装的 agy 1.1.14 二进制自带的文档逐一确认"过的,未被确认的Glob/WebFetch/WebSearch/TodoWrite宁可留空原样透传,也不猜测映射。

Claude Code 原生特性:其余 Harness 缺失或降级的能力

Claude Code 是事实源 Harness,它通过CLAUDE.md(指向AGENTS.md的符号链接)读取规范上下文文件。文档明确列出它支持而其他 Harness 会降级或缺失的特性:

  • 每 Agent 工具白名单tools:frontmatter 被原样执行(Cursor/Codex 更粗糙;OpenCode 适配器将其翻译为permission:块)。
  • Task/Agent派生工具:可扇出并行 subagent(Codex 需要在散文里点名某个 agent 来委托)。
  • TodoWrite:原生进度追踪(Codex/Cursor/Antigravity 均无)。
  • Slash-command 市场:完整的/plugin install/plugin marketplace工作流。

Claude-Code-only 的路径有两个:

  • .claude-plugin/marketplace.json—— 插件注册表(事实源)
  • plugins/<name>/.claude-plugin/plugin.json—— 每插件清单

与之对应,supported_harnesses()(tools/adapters/capabilities.py)明确把claude-code排除在"生成目标"之外:它只是源,不是适配目标。

优雅降级:同一份源内容如何被逐 Harness 改写

适配器会机械地处理不兼容项,插件作者不需要记住各 Harness 的规则就能写出可移植内容。文档给出的降级对照表如下:

源模式CodexCursorOpenCodeAntigravity
tools: Read, Grep(agent 白名单)丢弃;sandbox_mode = "read-only"启发式丢弃(Cursor 不执行)转换为permission:deny 块改写为 agy 原生工具名
color: blue(agent)丢弃丢弃丢弃丢弃
model: opus(agent)映射到gpt-5.5改写为inherit改写为anthropic/claude-opus-4-8映射到pro
model: fable(agent)映射到gpt-5.5改写为inherit改写为anthropic/claude-fable-5映射到pro
正文中的TodoWrite无等价物——原样保留无等价物——原样保留原样可用无等价物
Skill 正文 > 8 KB拆入references/details.md透传透传透传
名为worker的 agent加命名空间为<plugin>__worker透传透传透传(无<plugin>__命名空间——插件目录本身已隔离)
Slash command(commands/<x>.md转换为 skill透传改写为.opencode/commands/commands/<plugin>/<x>.toml,正文始终内联(绝不@{path}注入)

源码印证:降级规则的实现细节

  • Codex 的sandbox_mode启发式(tools/adapters/codex.py):源 frontmatter 完全没有tools:字段 → 视为默认全工具 →workspace-write;有tools:且全部是只读工具(Read/Glob/Grep/WebFetch/WebSearch)→read-only;其余 →workspace-write
  • Codex 的 8 KB 拆分(tools/adapters/codex.py):_split_body_if_oversized先按##小节边界累计内容(且会跳过代码块内的假标题),仍超限则在 UTF-8 码点边界硬切(优先选换行符),并给头部追加一行指针注释指向references/details.md。有效上限SKILL_BODY_CAP = 7400字节,为 frontmatter 与指针注释预留了约 700 字节余量。如果源技能已有references/details.md,溢出内容会写入references/_overflow.md以免互相覆盖。
  • OpenCode 的permission:(tools/adapters/opencode.py):严格区分三种语义——无tools:键(默认不限制)→ 不输出 permission 块;显式tools: [](锁定)→ 输出全 deny 块(但skilltask基础能力始终 allow,否则会悄悄剥夺受限 agent 的子代理委托与技能调用);有白名单 → 允许列出的工具、拒绝其余,并把 MCP 工具排除在块外(走 MCP 配置)。函数注释里的对照表正是矩阵中"OpenCode 转换为permission:deny 块"的展开。
  • Antigravity 的命令内联(tools/adapters/antigravity.py):_inline_command_prompt把 Claude 的$ARGUMENTS占位符翻译为 agy 的{{args}},且只有当源正文完全没有$ARGUMENTS时才追加尾部{{args}}块,避免参数被绑定两次。之所以始终内联,是因为实测发现agy plugin validate结构上接受@{path}注入语法但从不求值,无法确认其运行时能否解析。

输出路径:已提交与 gitignored 的划分

文档给出了完整的提交/忽略清单:

已提交(committed):

.claude-plugin/marketplace.json # SOURCE OF TRUTH plugins/ # SOURCE OF TRUTH AGENTS.md # canonical context file .agents/plugins/marketplace.json # Codex marketplace registry (source.path: ./plugins/<name>) plugins/*/.codex-plugin/plugin.json # per-plugin Codex manifest (skills: ./skills/) .cursor-plugin/, .cursor/rules/ # Cursor marketplace + curated rules (point at source)

Gitignored(用make generate重新生成):

.codex/skills/, .codex/agents/ # transformed Codex trees (for ~/.codex/skills symlink recipe) .opencode/agents/, .opencode/commands/, .opencode/skills/, opencode.json .antigravity/plugins/<name>/ # self-contained agy plugins (skills/, agents/, commands/) .copilot/agents/, .copilot/skills/, .copilot/commands/

几点源码级补充:

  • Codex 的每插件清单plugins/<name>/.codex-plugin/plugin.jsonskills: "./skills/"表示"直接从源技能目录读取 SKILL.md",因此无需提交变换后的技能树(tools/adapters/codex.py);codex-marketplace安装器的 zod schema 要求description非空,适配器在源插件缺省时回退为插件名(tools/adapters/codex.py)。
  • Cursor 适配器只提交.cursor-plugin/plugin.json(仅清单,不列组件,Cursor 会从.claude/自动发现)与根级.cursor-plugin/marketplace.json(镜像.claude-plugin/结构,但按 Cursor 要求带owner字段、条目用source而非path),另把手选的.cursor/rules/*.mdc从 tools/adapters/cursor_rules/ 拷入(tools/adapters/cursor.py)。MDC frontmatter 只允许description/globs/alwaysApply三个键,校验器会拒绝其他键。
  • AGENTS.md由适配器校验而非生成:Codex 适配器的emit_global会检查仓库根的AGENTS.md是否超过 32 KiB 硬上限与 150 行目录上限(tools/adapters/codex.py),因为它是 Codex/Cursor/OpenCode/Antigravity 共用的跨 Harness 上下文文件,Claude Code 则通过CLAUDE.md符号链接读取同一份文件。

原生安装:Codex、Cursor、Antigravity、OpenCode 各走各的路

文档给出的原生安装方式按"是否需要克隆 + 生成"分为两类:

  • Codexnpx codex-marketplace add wshobson/agents(当仓库是当前目录时还会被自动发现为项目级市场),然后逐个安装插件。Codex 直接从plugins/<name>/skills/SKILL.md;超过 8 KB 上限的技能会在加载时被 Codex 截断。gitignored 的.codex/skills/副本保留给~/.codex/skills符号链接方案使用。
  • Cursor:添加市场,然后/plugin install <name>。条目指向源./plugins/<name>;Cursor 直接从源读取SKILL.md.mdagent。
  • Antigravity:没有"从 URL 一步安装"的途径(这是瘦化权衡的代价)。需要先克隆仓库,再make generate HARNESS=antigravity,然后按插件执行agy plugin install .antigravity/plugins/<name>,或一次性执行make install-antigravity把所有生成的插件符号链接进~/.gemini/antigravity-cli/plugins/(agy 的配置目录)。
  • OpenCode:同样没有一步式 URL 安装。克隆仓库后执行make install-opencode(先跑 generate,再把.opencode/符号链接到~/.config/opencode/)。

Skills-only 安装器:gh skillnpx skills

gh skill(GitHub CLI 2.90+)与npx skills(vercel-labs 的 skills)可以直接从 GitHub 把 Agent Skills 装进任何受支持的 agent:两者无需克隆、无需市场、无需 generate 步骤,自动发现本仓库中每一个plugins/<plugin>/skills/<skill>/目录。它们只携带技能:不带 agents、commands 或 hooks。

文档给出的完整命令:

# gh skill:列表显示为 [plugins] <plugin>/<skill>,按裸技能名或精确路径选择 gh skill install wshobson/agents # 交互式浏览 gh skill install wshobson/agents python-testing-patterns gh skill install wshobson/agents plugins/python-development/skills/python-testing-patterns # 精确路径跳过目录树遍历 gh skill install wshobson/agents --all --agent claude-code --scope user gh skill install wshobson/agents python-testing-patterns --pin <sha> # npx skills:按裸技能名列表与选择 npx skills add wshobson/agents --list npx skills add wshobson/agents --skill python-testing-patterns -a claude-code npx skills add wshobson/agents --all -g

需要注意的陷阱(文档原文的 Gotchas):

  • 两者都按裸技能名安装<agent>/skills/<skill>/gh skill列表中的<plugin>/前缀仅供展示;python-development/python-testing-patterns不是合法选择器,合法的是python-testing-patterns或精确的plugins/...路径。技能目录名在全部插件间唯一,make smoke-test保证这一点——重名会在安装时冲突。
  • gh skill在有 GitHub Release 时从最新 release 安装,仓库无 release 时退回main。本仓库不发布 release,所以安装始终跟随main;一旦创建 release,安装会被冻结在该 tag 直到下一个 release。
  • 本地检出场景:执行make generate-all后,npx skills add ./agents也会遍历 gitignored 的.codex/.opencode/.copilot/树并列出它们的副本。要么改从 GitHub 源安装,要么用gh skill install . --from-local(会跳过隐藏目录)。
  • Spec 门禁gh skill publish --dry-run会按 agentskills.io 规范校验每个 SKILL.md(名称模式、名称与目录名一致、必需 frontmatter)。make smoke-test会运行它,并用真实二进制走通两个 CLI 的发现流程。

再生成与验证:make 目标一览

已提交的注册表指向源,变换后的树按需再生成。贡献者提交源改动前必须运行make generate-all——CI 会在已提交注册表发生漂移时失败。

make generate HARNESS=codex make generate HARNESS=cursor make generate HARNESS=opencode make generate HARNESS=antigravity # 或者一次性全部生成(提交源改动前运行): make generate-all # 可选的全局安装: make install-opencode make uninstall-opencode make install-antigravity make uninstall-antigravity

从 Makefile 可以看到完整的工具链编排(Makefile):

  • HARNESSES := codex copilot cursor opencode antigravitygenerate-all循环遍历它们;
  • 支持单插件生成:make generate HARNESS=codex PLUGIN=python-development
  • make validate(结构校验)、make garden(doc-gardener 漂移/死链/上限检测)、make smoke-test(真实 CLI 冒烟测试,PATH 上没有的 CLI 自动跳过,CI 会把 OpenCode/Antigravity/Codex 的跳过转为硬性要求);
  • 所有 Python 工具都通过uv运行(uv run --project plugins/plugin-eval python ...),插件级 venv 通过 extra-paths 配置使tools/adapters/可导入。

全局安装与卸载

OpenCode、Copilot、Antigravity 支持把生成产物全局安装到用户级发现路径:

make install-opencode # symlink .opencode/ → ~/.config/opencode/ make uninstall-opencode make install-copilot # symlink .copilot/ → ~/.copilot/ make uninstall-copilot make install-antigravity # symlink each .antigravity/plugins/<p>/ → ~/.gemini/antigravity-cli/plugins/<p>/ make uninstall-antigravity # 强制替换冲突符号链接: make install-copilot FORCE=1 make install-antigravity FORCE=1

Copilot 在仓库级从.copilot/agents/.copilot/skills/发现 agent 与技能,在用户级从~/.copilot/agents/~/.copilot/skills/发现。适配器输出到.copilot/;如需用户级发现,使用make install-copilot

外部集成:Pensyve 与 HOL Guard

Pensyve(外部记忆集成)

Claude Code 市场把 Pensyve 作为外部git-subdir插件收录。对于生成式 Harness,请使用 Pensyve 上游的 Harness 原生集成:

Harness上游集成
Claude Codehttps://github.com/major7apps/pensyve.git,路径integrations/claude-code
Codex CLIintegrations/codex-plugin
Cursorintegrations/cursor
OpenCodeintegrations/opencode-plugin
Copilot.copilot/(仓库级)或~/.copilot/(经make install-copilot全局安装)

HOL Guard(外部安全集成)

Claude Code 市场把 HOL Guard 作为来自hashgraph-online/hol-guard-plugin仓库distributions/wshobson-agents路径的外部git-subdir插件收录。该审查负载暴露可移植的hol-guardplugin-scanner技能,且默认保持本地决策;Guard Cloud 既非必需也不被推广。该市场条目仅作为 Claude Code 的发现面,不会把 HOL Guard 加入生成的 Codex、Cursor、OpenCode、Antigravity 或 Copilot 注册表。

审查负载被固定(pinned)在 commit43b2dda59e9f07057c52e69fd7426188faae1488,并安装精确的本地 CLI 版本hol-guard==2.2.119plugin-scanner==2.2.119,安装前需要用户批准。更新审查负载时,需要同时推进市场清单里的sha以及市场/外部清单的版本号。当用户明确请求防护时,本地 HOL Guard 运行时可以修改受支持 Harness 的 hook/设置配置;本仓库中生成的 Harness 输出不会打包或改写外部 HOL Guard 负载。

关键要点回顾

  1. 单一事实源、多套原生制品是整套架构的核心:作者只维护plugins/下的 Claude Code Markdown,五种 Harness 的原生形态全部由 tools/adapters/ 中的适配器机械生成。
  2. 能力矩阵不是营销话术而是可执行代码:tools/adapters/capabilities.py 的CAPABILITIESTOOL_NAME_MAPSMODEL_ALIASES三个数据结构同时驱动降级改写、文档生成与 plugin-eval 的可移植性评分。
  3. "瘦提交 + 本地生成":Codex/Cursor 走已提交的 JSON 注册表直接指向源目录;OpenCode/Antigravity/Copilot 的变换树 gitignored,克隆后make generate即可再生。
  4. 权限语义被小心保留:OpenCode 的permission:块严格区分"未设置tools:"与"显式空列表";Antigravity 与 Codex 的工具白名单降级各有启发式,避免静默泄漏权限。
  5. 只装技能的轻量通道gh skill installnpx skills add无需克隆即可把任意技能装进任意 agent,但要留意裸名安装、release 行为与本地检出等陷阱。

延伸阅读

  • docs/authoring.md —— 面向插件作者的可移植内容风格指南
  • docs/architecture.md —— 整体设计原则(粒度化、可组合性、上下文效率)
  • docs/plugin-eval.md ——harness_portability评分维度所在的评估框架
  • docs/usage.md —— 各 Harness 的完整安装、命令与工作流

【免费下载链接】agentsMulti-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity项目地址: https://gitcode.com/GitHub_Trending/agents24/agents

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 3:40:56

RAG增强单轮对话的Step2.0实践:目标、边界与工程落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 3:39:23

VSCode中Claude Code插件配置与中转API故障排查实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/11 3:32:30

零成本实现Clawdbot与飞书、Telegram双平台集成

1. 项目概述&#xff1a;零成本玩转Clawdbot与双平台集成Clawdbot作为一款新兴的自动化工具&#xff0c;其"满血版"通常需要付费订阅才能解锁全部功能。但通过合理的配置和开源方案组合&#xff0c;我们完全可以实现零成本使用全部核心功能。这次我将分享如何在不支付…

作者头像 李华
网站建设 2026/9/11 3:28:49

FSIM图像质量评价:从相位一致性到Python实现

简介&#xff1a;这套FSIM&#xff08;特征相似性&#xff09;计算代码为图像质量评估和图片相似性对比提供了轻量级参考实现。与PSNR、SSIM等传统指标相比&#xff0c;FSIM通过相位一致性与梯度幅值刻画结构特征&#xff0c;能更细腻地反映视觉差异&#xff0c;适合图像处理、…

作者头像 李华
网站建设 2026/9/11 3:26:19

ArduPilot RTK 高精度定位实战:GPS 导航、传感器融合与故障排查

ArduPilot RTK 高精度定位实战&#xff1a;GPS 导航、传感器融合与故障排查 【免费下载链接】ardupilot ArduPlane, ArduCopter, ArduRover, ArduSub source 项目地址: https://gitcode.com/GitHub_Trending/ar/ardupilot 做农田测绘、精准喷药的朋友大概都有过这种崩溃…

作者头像 李华