GitHub 上全是 Agent 项目,但你怎么知道哪个真的靠谱?我写了一个分析器

先看结果:GitHub - AnHuoZhe/project-analyzer: project-analyzer · GitHub | 读完这篇文章你就能理解:为什么大部分 Agent 项目的 README 看不出来问题,但一跑就崩。

我踩的坑

三个月前我开始系统性地看 GitHub 上的 Agent 项目。每天打开 trending,全是各种 Agent 框架、Agent 工具、Agent 工作流。看 README 一个比一个厉害------"下一代 Agent 编排""企业级多 Agent 协作""生产就绪的 AI 工作流"。

然后我真的去跑了几个。

第一个项目,跑了三天之后发现它在悄悄地丢用户偏好------不是 bug,是架构设计问题。它的记忆系统把用户偏好存在对话历史里,对话一长就被截断了。

第二个项目更离谱。工具调用看起来很正常,但有一次给了 Agent 一个写文件的权限,它直接把整个项目目录清了。不是幻觉,是工具描述写得太模糊------"删除不需要的文件"------Agent 判断所有文件都不需要。

这两个问题,都不是代码审查能看出来的。 代码写得挺规范,变量命名没问题,测试覆盖率也高。问题出在 Agent 架构设计上------上下文怎么管、记忆怎么存、工具权限怎么设。

我就想:有没有一套框架,能让我拿到一个 Agent 项目之后,不靠猜,系统性地判断它靠不靠谱?

找了一圈,没有。

市面上的方案为什么不够

代码审查工具(SonarQube、CodeRabbit)看的是代码质量------复杂度、安全漏洞、命名规范。但 Agent 的好坏不在代码行数。一个 500 行但上下文管理设计合理的 Agent,远比一个 5000 行但上下文天天爆炸的 Agent 靠谱。

论文和学术评估(SWE-Bench、GAIA)看的是 Agent 的任务完成能力。但那是打分,不是拆解------它告诉你这个 Agent 得了 67 分,不告诉你为什么丢的那 33 分是因为上下文工程有问题是记忆系统拉胯。

我需要的是架构体检------不只看"跑得怎么样",还要看"设计得怎么样"。

我做了什么

基于李博杰《深入理解 AI Agent》里梳理出来的工程实践(第 2/3/4/6/9/10 章),我搭了三套分析框架。拿到一个 GitHub 项目之后,先判断它是什么类型,再选对应的框架组合。

代码

复制代码
Agent 项目       → 六维度 + 架构裂隙 + 矛盾分析
有代码非 Agent   → 架构裂隙 + 矛盾分析
纯内容           → 矛盾分析

为什么要分三种?因为不是所有项目都适合用 Agent 框架去套。

我之前犯过一个错。看到什么项目都往六维度里塞,结果分析一个 CLI 工具的时候,硬给它套"记忆系统"和"工具调用"------人家根本没有 Agent 循环,套这些就是生搬硬套。后来我定了一个铁律:非 Agent 项目不做六维度分析。

下面展开三个框架。

六维度评估

这是 Agent 项目的核心分析。六个维度,每个下面还有子分类:

上下文工程(7 个子类):系统提示词怎么组织的?技能文件什么时候加载?上下文太长怎么办?有没有做 KV Cache 友好的设计?

这是我最看重的一个维度。李博杰的原话------"上下文质量决定 Agent 能力上限,中等模型加精良上下文,效果超过顶级模型加信息匮乏。"

我第一次意识到这个维度的重要性,是分析 forge(一个 Agent 代码审查工具)的时候。它有一个特别漂亮的设计:子 Agent 审查时,不继承主对话的上下文。每个子 Agent 从零开始,只拿到审查任务和代码,不被主对话里的讨论带偏。这就是上下文隔离------LLM 的统计本性决定了,上下文里出现的任何模式都会抬高后续输出的相关权重,不管它对不对。

记忆系统(5 个子类 + 三层评估):用户偏好存哪了?跨会话能记住吗?存的是纯文本还是结构化数据?

三层递进:基础回忆(记住用户说过什么)→ 多会话检索(跨时间跨主题查找)→ 主动服务(在用户开口之前就知道他需要什么)。大部分项目卡在第一层。

工具调用(五分类):感知工具(read_file)、执行工具(write_file)、协作工具(spawn_subagent)、事件触发(set_timer)、用户沟通(ask_clarification)。后两类大部分项目都缺失。

还有个容易被忽略的点:工具描述应该写"什么时候用"而不是"能做什么"。边界条件比能力描述更重要------大多数调用失败不是因为不知道能做什么,而是不知道不能做什么。

可靠性(5 个子类):崩了怎么降级?多 Agent 场景下一个出错会不会连锁崩?

多 Agent 的错误级联放大是我见过最隐蔽的坑。一个子 Agent 输出了一个小错误→被第二个 Agent 当正确信息引用→因为"被引用过"获得更高可信度→后面的 Agent 直接当事实用。

解法不是让每个 Agent 更聪明,是引入独立视角------第二个 Agent 不看第一个的思考过程,只看原始证据。或者更狠的:引入确定性外部验证(单元测试、编译器),这些不受幻觉影响,是天然的断链器。

成本控制(4 个子类):token 怎么省的?有没有用缓存?小任务切小模型吗?

Agent 成本的非线性增长是最容易被低估的。第 n 轮的输入 = 前 n-1 轮全部累计。不是简单乘 n,是累加。KV Cache 复用能降 30-60% 的输入成本------前提是静态前缀稳定。

评估(7 个子类):怎么知道自己改好了?有测试集吗?指标用对了吗?

一个关键区分:Pass@k 和 Pass^k 不能混用。Pass@k 是 k 次至少一次成功(测能力天花板),Pass^k 是 k 次全部成功(测稳定性)。很多人拿 Pass@k 当产品稳定性指标用,完全搞反了。

架构裂隙分析

不对代码做行级审查,从五个切口捅进去找设计层面的裂缝:数据流、失败模式、状态切换、分层检查、运维隐患。

这个框架不只用于 Agent 项目。一个 CLI 工具、一个桌面应用、甚至一个静态网站生成器,都能用裂隙分析找到设计问题。

矛盾分析

跳出项目本身,追问它为什么会出现。什么客观矛盾催生了它?为什么是现在而不是更早或更晚?

这是历史唯物主义视角------任何项目都是某个矛盾的解决方案。理解矛盾才能判断它的天花板在哪。

两个关键设计决策

为什么输出 Word 而不是 Markdown?

一开始我写的是 Markdown 报告。但六维度分析每篇都上万字,Markdown 的表格和层级在长文里阅读体验很差------尤其是交叉点分析,涉及六个维度的两两对比,纯文本根本看不清谁对应谁。

Word 能做原生表格、能分页、能设字体字号。排版规范很简单:正文楷体 12pt,标题黑体加粗,每章换页。最重要的------写文档前强制跑 validate_output.py 校验文件名和格式,避免手动检查漏掉。

代价是:没有网页版 dashboard,不能在浏览器里直接看。这点我写在 README 的局限性里了。

为什么批量分析用子 Agent 隔离上下文?

最早做批量分析的时候,主对话直接参与每个项目的分析。效果是:分析第 1 个项目质量很高,分析第 10 个的时候已经明显退化。不是模型不行,是上下文被撑爆了------每次回复都带着前面 9 个项目的完整内容,单次调用从 5 万 token 涨到 39 万。

改成了子 Agent 隔离模式:每批 3 个并行派发,每个子 Agent 只拿自己那个项目的信息,分析完生成 Word 文档然后退出。主对话只做派发和确认,不碰具体分析。

这和 forge 的上下文隔离是一个道理------"隔离优于压缩"。大体积的中间信息根本不进主上下文,用完即弃。

实战效果

分析过的项目里,印象最深的是 ag-kit。它是一个 Agent 技能系统,表面看和普通的 Agent 框架差不多。但六维度分析挖出来了两个东西:

  1. 它的上下文工程做了渐进式披露------技能文件不一次性全量加载,而是按需注入。这部分设计对标的是 Claude Code 的 SKILL.md 机制。
  2. 它的工具调用缺了事件触发和用户沟通两类------这意味着它只能做"Agent 主动干活"的场景,做不了"外部事件来了被动响应"的场景。

第二点是 README 上完全看不出来的。README 只会说"支持多种工具",不会说"缺了哪几种"。

这个东西的局限

我得诚实地说:

不是自动化工具。 需要聊天界面配合,不能当 CI 插件跑。分析一个项目大概要 5-10 分钟的人工交互(确认类型、选择框架、审阅输出)。

分析质量取决于源码深度。 只读 README 不读源码 = 浅分析。目前对 Agent 项目的分析会拉取 README、目录结构、关键源文件,但不是每个项目都深度拆。

六维度框架只对 Agent 项目准。 非 Agent 项目硬套会大量出现"不适用",浪费 token 还误导结论。

输出只有 Word 格式。 暂时没有网页 dashboard、没有 JSON API。

这个项目教会我的

写这个分析器的过程,其实是自己在消化李博杰那本书的过程。每分析一个项目,就对照书里的框架验证一遍------这个项目在上下文工程上做对了什么、在可靠性上漏了什么。

最大的感受:Agent 工程和传统软件工程有一个根本区别。 传统软件的质量判定是确定性的------测试过了就是过了。Agent 的质量判定是概率性的------同一个输入可能出不同结果,同一个设计在不同场景下表现完全不同。

这意味着 Agent 项目的评估不能只靠"跑测试"。必须看架构------看它在设计层面做了哪些取舍、这些取舍在什么场景下会翻车。

这也是为什么我坚持做矛盾分析。一个项目不是因为"代码写得好"才有生命力,是因为它解决了某个客观矛盾。找到那个矛盾,就知道它的天花板在哪。

如果你也在看 Agent 项目,欢迎用这个框架试试。拿到一个项目之后,先别看 star 数,先用六维度扫一遍------上下文怎么管的、记忆怎么存的、工具权限怎么设的。你会发现 80% 的 README 里的"生产就绪",连这三个基础问题都经不起追问。

仓库地址:GitHub - AnHuoZhe/project-analyzer: project-analyzer · GitHub

相关推荐
流量猎手3 小时前
GitHub 使用说明
大数据·elasticsearch·github
HelloGitHub9 小时前
《HelloGitHub》第 124 期
开源·github
徐小夕20 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
维基框架1 天前
GitHub重构漏洞赏金计划 向AI批量报告说不
人工智能·重构·github
咖啡星人k1 天前
【无标题】
前端·ai·github
逛逛GitHub1 天前
本周 TOP 17 排名的 GitHub 开源项目大盘点,第一个值得收藏。
github
DogDaoDao1 天前
OpenBrowser 深度解析:让 AI 真正「用上」浏览器的自主代理框架
人工智能·程序员·大模型·github·web·ai工具·openbrowser
晚来的棠棠1 天前
彻底解决 github 无法访问或者访问慢的问题_github打开太慢了
github
tokenKe1 天前
ego-lite:给 AI Agent 用的最快浏览器 | SSP Github Daily
人工智能·github