Agent 生态在最近一年里完成了一次不太显眼的重心转移:竞争不再发生在”哪个框架更强”,而发生在模型外面那一圈脚手架,以及把能力接进系统的方式上。
这个判断不是凭感觉。把四条赛道——Agent、大模型、Skill、MCP——的代表项目摆在一起看,量级最高的一批已经不再是传统意义上的”框架”,而是 harness、技能包与协议实现。而框架层本身,反而越来越像基础设施:能用、够稳、没什么可争的。
下面这张地图想解决的问题是:把不同层的东西分开看。很多选型上的纠结,本质是把不在一个层面的项目放在一起比较。
一、先把地图铺开
按”解决哪一层的问题”切开,混乱感会立刻消失:
这张图最实用的一点是:选型冲突大多发生在同层之内,而兼容性风险大多发生在跨层之间。在服务层换掉推理引擎,应用层通常无感;但在协议层换掉协议,能力层和应用层都得跟着改。
量级:谁在被真正使用
把四条赛道上 Star 数最高的几个仓库放到同一根轴上,量级差一目了然:
这张图最容易读错的地方
竖着看颜色分组会得出一个反直觉的结论:Skill 组整体最高,Agent 组整体偏低。但这不代表 Skill 比 Agent 更重要——两者的分母完全不同:Agent 框架是”给开发者用的库”,Skill 是”人人都能写、还能被复制传播的文件”,传播门槛低一个数量级。
真正该读出来的是另一件事:Star 最高的几个仓库里,有相当一部分创建时间不到一年。热度增速已经和项目年龄脱钩,所以”star 高”越来越不足以作为质量证据。
二、Agent:从框架之争到 harness 之争
这一层可以拆成四个互不重叠的方向:
框架:两条路线已经分道扬镳
| 项目 | Star | 语言 | 许可 | 最近推送 | 定位 |
|---|---|---|---|---|---|
| microsoft/autogen | 61,215 | Python | CC-BY-4.0 | 2026-04-15 | 多智能体对话框架,主仓推送已停滞数月 |
| crewAIInc/crewAI | 59,167 | Python | MIT | 2026-09-29 | 角色扮演式多智能体编排 |
| langchain-ai/langgraph | 42,455 | Python | MIT | 2026-09-29 | 把 Agent 显式建成状态图 |
| huggingface/smolagents | 29,582 | Python | Apache-2.0 | 2026-09-23 | 极小内核,主张”用代码思考” |
| openai/openai-agents-python | 29,758 | Python | MIT | 2026-09-29 | 轻量多智能体工作流 SDK |
| google/adk-python | 21,675 | Python | Apache-2.0 | 2026-09-29 | 代码优先、面向部署的 Agent 工具箱 |
| pydantic/pydantic-ai | 20,258 | Python | MIT | 2026-09-29 | 类型安全的 Agent 框架 |
| microsoft/agent-framework | 13,858 | Python | MIT | 2026-09-29 | 微软系 Agent 编排与部署框架 |
图编排与代码优先,是这个领域里真正意义上的两条路线。图编排(LangGraph)把流程画成节点和边,换来的是可中断、可恢复、可在任意节点插入人工确认;代码优先(Agents SDK、ADK、pydantic-ai)把 Agent 写成普通函数和类型,换来的是能直接用上已有的工程工具——类型检查、单测、依赖注入。
选择标准可以简化成一句话:你的流程里有没有”必须等某个人点确认”的环节。有,图更省事;没有,代码更省事。
选型时比 Star 更该看的一列
上面这张表里,绝大多数仓库的”最近推送”就是数据快照当天,只有 autogen 停在 2026 年 4 月。6.1 万 Star 不代表它还在演进——你继承的不是它的知名度,而是它的 issue 区。
顺带一提,autogen 的许可字段返回的是 CC-BY-4.0,这与”代码仓库常用 MIT”的直觉不符。这类字段由平台自动识别,未必准确,采用前请直接打开仓库读 LICENSE 文件。
编码 Agent:harness 才是胜负手
| 项目 | Star | 语言 | 许可 | 最近推送 |
|---|---|---|---|---|
| anthropics/claude-code | 148,543 | TypeScript | 未声明 | 2026-09-29 |
| openai/codex | 127,065 | Rust | Apache-2.0 | 2026-09-29 |
| google-gemini/gemini-cli | 107,182 | TypeScript | Apache-2.0 | 2026-09-29 |
| OpenHands/OpenHands | 89,475 | TypeScript | MIT | 2026-09-29 |
| cline/cline | 69,532 | TypeScript | Apache-2.0 | 2026-09-29 |
| aaif-goose/goose | 54,761 | Rust | Apache-2.0 | 2026-09-29 |
| QwenLM/qwen-code | 28,213 | TypeScript | Apache-2.0 | 2026-09-29 |
这一层的竞争焦点,已经从”模型多聪明”转移到了 harness 做得多好。所谓 harness,就是模型外面那圈脚手架——工具集怎么设计、危险命令怎么拦、上下文怎么裁剪、失败怎么重试。同样一个模型,挂在不同 harness 上,实际体验可以差出一个档位。
一个旁证是:同一个模型能挂到不同 harness 上之后,出现了专门的”多订阅、多客户端切换器”,例如 farion1231/cc-switch(138,507 Star,Rust,MIT),同时管理 Claude Code、Codex、OpenCode 等多个客户端。这类工具能存在,本身就说明 harness 已经变成可替换部件。
对使用者的实际含义是:先看它怎么处理危险操作和上下文预算,再看它支持哪些模型。
并行集群:瓶颈从”能力”变成了”等待”
| 项目 | Star | 语言 | 许可 | 最近推送 | 解决什么 |
|---|---|---|---|---|---|
| paperclipai/paperclip | 93,869 | TypeScript | MIT | 2026-09-29 | 把”工作中的 Agent”统一管起来 |
| stablyai/orca | 81,178 | TypeScript | MIT | 2026-09-29 | 并行 Agent 集群的开发环境 |
| HKUDS/CLI-Anything | 50,957 | Python | Apache-2.0 | 2026-09-22 | 把命令行软件包装成 Agent 原生 |
这个品类是最近才冒出来的,原因不难理解:单个 Agent 的瓶颈已经不是能力,而是人等待它的时间。一次重构要跑二十分钟,同时开五个 Agent 各负责一个模块,总时长就摊薄了。
但并行一开,新问题立刻出现:多个 Agent 同时改同一个仓库、同一个文件,甚至同一行。冲突治理才是这个品类的真正难点,而不是调度——调度是十分钟能写完的东西,冲突治理不是。
记忆:从”存起来”到”学会”
| 项目 | Star | 语言 | 许可 | 最近推送 | 定位 |
|---|---|---|---|---|---|
| mem0ai/mem0 | 66,289 | Python | Apache-2.0 | 2026-09-25 | 可插拔的记忆层 |
| MemPalace/mempalace | 59,350 | Python | MIT | 2026-09-29 | 以基准测试为主打的记忆系统 |
| vectorize-io/hindsight | 41,905 | Python | MIT | 2026-09-29 | 强调”会学习的记忆” |
| letta-ai/letta | 24,968 | Python | Apache-2.0 | 2026-09-10 | 有状态 Agent 平台 |
评价记忆方案,别只看它宣称的召回率。有三个问题更能区分优劣:记忆怎么被写进去(谁决定这条值得记)?冲突了怎么办(新记忆覆盖旧的还是并存)?怎么删(用户要求删除时能不能真的删干净)? 第三个问题在合规场景里是硬门槛,而绝大多数项目的文档里写得很含糊。
三、大模型:重心从模型移向推理层
| 项目 | Star | 语言 | 许可 | 最近推送 | 定位 |
|---|---|---|---|---|---|
| ollama/ollama | 181,904 | Go | MIT | 2026-09-29 | 一条命令跑本地模型 |
| huggingface/transformers | 166,800 | Python | Apache-2.0 | 2026-09-29 | 模型定义的事实标准 |
| ggml-org/llama.cpp | 129,847 | C++ | MIT | 2026-09-29 | 端侧推理引擎 |
| deepseek-ai/DeepSeek-V3 | 104,505 | Python | MIT | 2025-08-28 | 开放权重发布仓,已长期无推送 |
| vllm-project/vllm | 92,916 | Python | Apache-2.0 | 2026-09-29 | 高吞吐服务引擎 |
| unslothai/unsloth | 77,006 | Python | Apache-2.0 | 2026-09-29 | 低成本微调与本地运行 |
| sgl-project/sglang | 36,569 | Python | Apache-2.0 | 2026-09-29 | 面向结构化生成的服务框架 |
三点值得留意:
- 权重仓和代码仓要分开看。
DeepSeek-V3这类仓库的职责是发布权重和说明,推送停在 2025 年 8 月很正常,不代表模型停更。把它和 vLLM 这种”天天在推”的工程仓放在一起比活跃度,是典型的误判。 - 推理层的分化是按”谁来用”分的。 一个人本地试模型 → Ollama;要嵌进自己的应用 → llama.cpp;要服务几百个并发 → vLLM / SGLang。三者不是竞争关系。
- 小体积、零依赖的推理实现开始冒头。 例如 antirez/ds4(22,770 Star,C,MIT)与 JustVugg/colibri(38,248 Star,C,Apache-2.0),思路都是用极小的 C 引擎把大 MoE 模型跑在消费级硬件上。它们的意义不在性能,而在于让”能不能本地跑”这件事不再由框架决定。
四、Skill:把能力变成文件
四条赛道里,Skill 最年轻,也最容易被误解成”更长的提示词”。它其实是一种分发格式。
一个 Skill 长什么样
本质上,它就是一个带 YAML frontmatter 的 Markdown 文件,加一堆可选附属资源:
---
name: pdf-processing
description: 从 PDF 中提取文本与表格,并在需要填写表单时提供指导
---
# PDF Processing
## Instructions
1. 先用 pdftotext 提取纯文本
2. 表格类内容改用对应脚本处理
name 与 description 是必填,且有硬性约束:name 最多 64 字符,只能用小写字母、数字、连字符,不能含 XML 标签,也不能出现 anthropic、claude 这类保留字;description 最多 1024 字符,且必须同时说清”做什么”和”什么时候用”——模型就是靠它判断要不要加载这个 Skill。
渐进式披露:真正的设计精髓
Skill 的价值来自三层加载机制:
对应的成本结构是:
| 层级 | 内容 | 何时加载 | 上下文成本 |
|---|---|---|---|
| 第 1 层 | name + description | 启动时始终加载 | 每个 Skill 约 100 token |
| 第 2 层 | SKILL.md 正文 | Skill 被触发时 | 通常低于 5k token |
| 第 3 层 | 附属文件与脚本 | 被引用时才读 | 未访问时为 0 |
最值得抄走的一条设计在第 3 层。 脚本通过命令行执行,代码本身从不进入上下文,只有输出进入。这意味着可以把一整套复杂的确定性逻辑——表单填写、格式校验、批量转换——塞进 Skill,而模型只看到一句”校验通过”。这是”用代码保证可靠性、用自然语言保证灵活性”最具体的落法。
生态里的代表项目
| 项目 | Star | 语言 | 许可 | 最近推送 | 定位 |
|---|---|---|---|---|---|
| obra/superpowers | 292,670 | Shell | MIT | 2026-09-27 | 技能框架 + 一整套开发方法论 |
| affaan-m/ECC | 269,290 | JavaScript | MIT | 2026-09-28 | harness 性能优化系统(技能 / 记忆 / 安全) |
| anthropics/skills | 178,925 | Python | 未声明 | 2026-09-29 | 官方技能示范仓 |
| Graphify-Labs/graphify | 122,259 | Python | Apache-2.0 | 2026-09-29 | 把代码库与文档变成可查询知识图 |
| ComposioHQ/awesome-claude-skills | 75,818 | Python | 未声明 | 2026-09-18 | 技能清单与资源集合 |
| cloudflare/security-audit-skill | 22,959 | JavaScript | MIT | 2026-09-14 | 多阶段安全审计技能 |
| microsoft/SkillOpt | 17,831 | Python | MIT | 2026-09-05 | 用执行轨迹自动优化自然语言技能 |
| tech-leads-club/agent-skills | 7,009 | TypeScript | 自定义 | 2026-09-20 | 带校验流程的技能注册表 |
这堆项目里,哪一个信号最值得注意?
不是 Star 最高的那两个,而是排最后那个 注册表。当一类资产开始出现”注册表”,说明它已经从”个人技巧”变成了需要被分发和验证的供应链。Cloudflare 把安全审计做成 Skill、微软做 Skill 的自动优化、第三方做带校验的注册表——三件事同时发生,意味着竞争点已经从”写得好不好”转向”能不能被信任”。
安全:Skill 是代码,不是提示词
这一点必须单独拎出来,因为它最容易被忽略:
- Skill 可以捆绑并执行脚本。装一个来路不明的 Skill,等价于在生产环境跑一段来路不明的 Shell。
- 官方文档明确提醒:只用可信来源的 Skill,安装 Skill 应当像安装软件一样谨慎。
- 已经出现专门做”技能安全校验”的项目,但校验覆盖率与误报率都还没有公开的横向评测。
- Skill 的定义与执行数据不适用零数据保留条款,敏感场景要提前评估。
一句话:装 Skill 之前,先把它目录里的脚本读一遍。 这一步没有替代品。
五、MCP:协议已经定了,接下来比拼服务器
协议现状
MCP(Model Context Protocol)是连接 AI 应用与外部系统的开放标准。官方用了一个很好记的类比:它是 AI 应用的 USB-C 口。规范与文档仓库见 modelcontextprotocol/modelcontextprotocol(9,335 Star),文档当前修订版本标识为 2026-07-28。
它已经越过了”要不要支持”的阶段:Claude、ChatGPT、VS Code、Cursor 等客户端均已支持,一次开发、到处接入是它最实际的卖点。
一次典型的 MCP 调用链是这样的:
注意 tools/list 这一步:每个接入的 Server 都会往上下文里塞一份工具清单。这就是 MCP 用起来最真实的成本——装十个 Server,工具定义本身就吃掉一大块预算。工具多了之后,“工具检索”几乎是必然要补的一层(取舍逻辑见 Function Calling 与工具调用专题)。
服务器生态
| 项目 | Star | 语言 | 许可 | 最近推送 | 定位 |
|---|---|---|---|---|---|
| punkpeye/awesome-mcp-servers | 95,658 | Markdown | MIT | 2026-09-27 | 服务器清单,找 Server 的第一站 |
| modelcontextprotocol/servers | 90,661 | TypeScript | 未声明 | 2026-09-29 | 官方参考服务器集合 |
| upstash/context7 | 62,515 | TypeScript | MIT | 2026-09-29 | 给模型喂最新版本文档 |
| ChromeDevTools/chrome-devtools-mcp | 52,719 | TypeScript | Apache-2.0 | 2026-09-29 | 把 DevTools 能力交给编码 Agent |
| microsoft/playwright-mcp | 37,684 | TypeScript | Apache-2.0 | 2026-09-28 | 用无障碍树代替截图做浏览器操作 |
| github/github-mcp-server | 33,271 | Go | MIT | 2026-09-28 | GitHub 官方 MCP Server |
| modelcontextprotocol/python-sdk | 24,431 | Python | MIT | 2026-09-25 | 官方 Python SDK |
一个反直觉的经验:官方 Server 不一定更省上下文
github/github-mcp-server 这类官方 Server 覆盖面广、工具数量多,接进来之后工具定义占用的上下文也最多。如果任务只是”读某个仓库的 issue”,一个只有三五个工具的窄口径 Server,往往比全能 Server 更好用——不是能力问题,是预算问题。
判断标准可以简化成一句:Server 暴露的工具数,应当和你的任务面宽度成正比。
MCP 与 A2A:不是二选一
A2A(Agent2Agent)(25,963 Star,Apache-2.0)常被拿来和 MCP 对比,但两者是互补关系:
| MCP | A2A | |
|---|---|---|
| 连接对象 | Agent 到工具与数据源 | Agent 到 Agent |
| 核心抽象 | 工具、资源、提示 | Agent Card、任务、消息、产物 |
| 传输 | JSON-RPC 等 | JSON-RPC 2.0 / gRPC / HTTP |
| 治理 | 社区开放规范 | Linux 基金会项目,由 Google 贡献 |
| 典型场景 | 让 Agent 会查库、会调接口 | 让不同厂商的 Agent 互相协作 |
A2A 的关键设计是不透明:协作双方不需要暴露内部记忆、专有逻辑和工具实现,只交换任务与产物。这一条决定了它能不能被企业接受——跨公司的 Agent 协作,谁也不会把自己的内部实现交出去。
六、五条被反复验证的判断
把四条赛道放在一起看,有几个结论会被不同的项目反复印证:
- 上下文是预算,不是垃圾桶。 MCP 工具清单、Skill 元数据、记忆召回结果,都在抢同一块额度。已经出现专门”压缩工具输出与日志”的项目(如 headroomlabs-ai/headroom,74,054 Star,Apache-2.0),说明这件事已经痛到有人专门做产品。
- 能力接协议,协作接协议,两件事分开做。 工具走 MCP,Agent 之间走 A2A,互不替代。把两者混成一个协议的尝试,目前没有看到成功案例。
- 把能力封装成文件,是当前最优的分发形态。
SKILL.md、AGENTS.md、插件目录——形态不同,思路一致:能力可以被版本控制、被 diff、被 review。这比把逻辑藏在某个 SaaS 后台里强得多。 - 评测与可观测不再是可选项。 langfuse/langfuse(35,191 Star)与 promptfoo/promptfoo(25,552 Star,MIT)的持续活跃说明:没有回归集的 Agent 项目,改动只能靠感觉判断。
- 本地优先重新变得有说服力。 Ollama、llama.cpp 的活跃度,加上新的小体积 C 引擎,让”数据不出本机”从口号变成了可落地的选项。
七、按场景选型
| 你的场景 | 先看 | 再看 | 别急着上 |
|---|---|---|---|
| 想快速试本地模型 | Ollama | llama.cpp | vLLM(过重) |
| 要做线上推理服务 | vLLM / SGLang | 量化与批处理方案 | 端侧引擎 |
| 流程里有人工确认环节 | LangGraph | 厂商编排框架 | 纯链式框架 |
| 团队日常写代码 | 主流终端 Agent | 编辑器内 Agent | 自研 harness |
| 需要同时跑多个 Agent | 并行集群类工具 | 冲突治理方案 | 手工开多个终端 |
| 要给 Agent 接外部系统 | MCP Server | 自写 Server(官方 SDK) | 每个系统写一套私有适配 |
| 要沉淀团队最佳实践 | Skill(SKILL.md) | 技能注册表 | 塞进系统提示词 |
| 跨组织 Agent 协作 | A2A | 自建网关 | 直接互相调用内部接口 |
八、值得警惕的几件事
- Star 会骗人。 六位数 Star、创建不到一年的项目已经出现多个,增速远超历史规律。热度可以看,但决策要看 issue 区的响应速度、release 节奏,以及有没有人在生产里用它。
- 许可协议必须自己核对。 表里的”未声明""自定义”一律需要打开仓库读 LICENSE。AGPL-3.0 类(如 firecrawl/firecrawl,186,302 Star)在提供网络服务的场景下有额外义务,商用前请咨询法务。
- Skill 与 MCP Server 都是供应链。 两者都能执行代码、访问你的文件与凭证。装之前读脚本,是最低成本的风控。
- 协议版本在动。 MCP 规范以日期作为修订标识(当前
2026-07-28),A2A 处在 v1.0 前后。锁版本、读 changelog,不要假设向后兼容。 - 别把权重仓当工程仓看。 判断活跃度前先分清仓库类型,否则会得出完全相反的结论。
参考
- What is the Model Context Protocol (MCP)? — MCP 官方文档
- Agent Skills 概览 — SKILL.md 规范与渐进式披露
- A2A(Agent2Agent)协议 — Linux 基金会项目
- GitHub Trending 周榜 — 新项目发现渠道
文中各项目的 Star、许可与最近推送时间,均取自 GitHub 公开接口的同一日快照(2026 年 9 月 29 日),项目名可直接点开核对。