AI Frontier Reference — 领域地图与原理综述
30 秒导读: 这是一货架**「造 AI agent 用的实现库」——agent 框架、运行时、RAG/上下文栈、记忆系统、评测/可观测工具、写代码的 agent、浏览器 agent,以及有影响力的研究代码库。它们看着五花八门,但全在解同一个根本问题**:一个原始大模型只会「一次性、无状态地吐一段文字」,而一个有用的产品需要它反复行动、用上真实世界的信息和工具、并且可靠。这货架就是补上「原始模型 → 可靠 agent」之间那一整段工程缺口的零件库。读完本页你能说清:这些库共同在干什么、由此分出哪几条主要分支、每条分支里代表库的区别,再顺着某条分支下钻到具体库。
1. 这是什么货架 + 共性(主干)
1.1 先认清这货架装的是什么
这是 ai-frontier-reference:你拿来构建 agent 的框架/运行时/研究实现。它有两个姊妹货架,边界要分清:
| 货架 | 装什么 | 一句话 |
|---|---|---|
| ai-frontier-reference(本货架) | 框架 / 运行时 / 研究实现 | 你用它搭 agent |
| ai-protocol-reference | 规范 / 标准 / 协议 | agent 之间怎么对话的契约(MCP、A2A、Agent Skills 等) |
| ai-agent-reference | 可直接用的 agent 产品 | 现成的 agent 应用 |
本页只讲第一行。
1.2 抽丝剥茧:这些库共同在解决什么(主干)
把 43 个库表面的差异全剥掉,问一句:它们到底共同在跟什么较劲?
答案是同一件事——一个原始 LLM 的能力形状,和一个有用产品需要的能力形状,中间差了一大截,这货架就是来填这截的。
原始大模型(GPT、Claude、Gemini 这些)本质上是个**「给一段文字、预测下一段文字」的函数**。它有三个先天硬伤:
- 它只跑一次就停。 给一句话答一句话,不会自己「想一步、做一步、看看结果、再决定下一步」。
- 它只知道训练时见过的、和你这次塞给它的那点文字。 你公司的文档、此刻的网页、昨天的对话,它一概不知;上下文窗口一满就忘。
- 它什么也碰不到、也不保证对。 不能跑代码、不能点网页;而且它会一本正经地编,你很难知道它这次到底行不行。
一个真正能用的 agent,需要的恰恰是这些硬伤的反面:会多步行动、能用上真实世界的信息和工具、而且可靠。
共性(主干),一句话: 这货架的全部库,都在把「一次性、无状态、什么都碰不到、不保证对的文字预测器」,改造成「会多步行动、扎根真实世界、可靠交付的 agent」——每个库各补其中一块缺口。
这就是树干。下面几条分支,正是这句共性按不同缺口自然分化出来的——不是按编目抽屉分的。
2. 分支地图(树干 → 主枝)
把「原始模型 → 可靠 agent」这段缺口拆开,会发现它天然分成六块,每块对应一条分支:让它动起来、给它知识、给它记忆、给它手、告诉它该做什么、确认它行不行。
主干:把「一次性文字预测器」改造成「会多步行动、扎根现实、可靠」的 agent
│
┌──────────────┬──────────────┬───────┴───────┬──── ──────────┬──────────────┐
▼ ▼ ▼ ▼ ▼ ▼
① 行动的循环 ② 扎根知识 ③ 跨时间记忆 ④ 伸进世界的手 ⑤ 告诉它该做什么 ⑥ 知道它行不行
agent-loop grounding-rag memory execution-env instruction eval-observability
「会多步」 「知道当下事实」 「记得过去」 「能动手做事」 「意图传得准」 「可度量、可信」
│ │ │ │ │ │
把一次调用 把外部文档/网页 跨会话记住并 给它安全沙箱去 提示工程 / 基准、追踪、
包成 think→act 检索进上下文, 更新关于你/世界 跑命令、改代码、 可复用 skill / RAG 评测、
→observe 循环, 基于真材料作答 的事实 操作浏览器 把提示当程序优化 agent RL 训练
并编排多 agent
下面逐条分支讲清:这条分支在补主干的哪块缺口、里头有哪些代表库 、它们怎么分。每条都链到自己的分支章(主体在那里)。
分支① 行动的循环(guide/agent-loop.md)
补的缺口:模型「只跑一次就停」。 这条分支把一次模型调用,包成一个**「想一步 → 调工具 → 看结果 → 再决定要不要继续」的循环,这是 agent 之所以是 agent 的最小内核;往上还要解决多个 agent 怎么协作编排**(顺序、层级、群聊、交接)。
这是最大的一条分支。内部按「循环长什么形状」分几派:极简循环(mini-swe-agent、nanobot 把循环压到几十~一百行,证明内核多小)、图状有状态编排(langgraph 把循环画成带检查点、可中断、可回放的图)、多 agent 团队(crewai 的角色/任务、autogen 的事件驱动群聊、agno 的高性能团队、hkuds-clawteam 的协作研究)、第一方 SDK 的标准形状(openai-agents-python/js 的 handoff+guardrail、google-adk、pydantic-ai 的类型安全、mastra/vercel-ai-sdk 的 TS 栈、goose 的本地优先运行时)。代表库:langgraph、openai-agents-python、crewai、mini-swe-agent。
分支② 扎根知识(guide/grounding-rag.md)
补的缺口:模型「只知道训练时和你这次塞的那点文字」。 这 条分支(RAG / 上下文工程)在模型回答前,先去外部资料里检索相关片段、拼进上下文,让答案扎根在真实材料而非模型记忆上。
内部按「检索什么、怎么组织」分派:通用 RAG 框架(langchain 的最广生态、llamaindex 的索引/查询引擎、haystack 的显式 DAG 流水线)、图增强 RAG(hkuds-lightrag 用实体/关系图做双层检索)、多模态 RAG(hkuds-rag-anything 吃 PDF/表格/公式、hkuds-videorag 吃长视频)、长文研究型(storm 把「写一篇维基」拆成多视角检索+提纲+成文)。代表库:langchain、llamaindex、hkuds-lightrag。
分支③ 跨时间的记忆(guide/memory.md)
补的缺口:模型「上下文一满就忘」。 RAG 解决「当下去查外部知识」,但 agent 还需要跨会话记住关于你和世界的事实、并随时间更新——这是另一回事:写什么、何时更新、怎么取回。
内部按「记忆放哪、谁来改」分派:自编辑记忆(letta/MemGPT 把上下文当 RAM、数据库当磁盘,让 agent 用工具自己改常驻记忆)、独立记忆服务(mem0 由 LLM 抽取/合并/检索用户记忆,可挂在循环里或做成服务)、时序知识图(graphiti 用双时间(事件时间 vs 写入时间)的实体图建记忆)。代表库:letta、mem0、graphiti。letta 已有完整子库 doc。
分支④ 伸进世界的手(guide/execution-environments.md)
补的缺口:模型「什么也碰不到」。 光会说不够,agent 要真的跑命令、改代码、点网页——这条分支提供安全可控的执行环境(代码沙箱 + 浏览器),让 agent 的「动作」落到真实系统上而不炸掉宿主。
内部按「在哪动手」分两大族:代码/终端环境(openhands 的事件流+Docker 沙箱、opencode/goose 的终端编码 agent、swe-agent 的 agent-计算机接口研究、swe-rex 把「在某处跑命令」抽象成可并行的会话运行时、mini-swe-agent 的纯 bash 极简)、浏览器环境(browser-use 把活 DOM 变成模型可操作的表示、stagehand 在 Playwright 上加 act/extract/observe 并能退化回确定性脚本)。代表库:openhands、swe-rex、browser-use。
分支⑤ 告诉它该做什么(guide/instruction-authority.md)
补的缺口:模型「你怎么说,它怎么做——但意图常常传不准」。 上面四条让 agent 能动、能查、能记、能做;这条管怎么把意图可靠地灌进模型,是其余一切的「源头质量」。
内部按「靠什么传意图」分三派:手写提示的规范(anthropic-prompt-engineering 教 role/data/instructions/examples/format 的结构与少样本/XML/CoT 技法)、可复用的能力包(anthropic-skills 的生产级 SKILL.md:把指令拆进 SKILL.md+引用+脚本)、把提示当程序自动优化(dspy 用类型化 signature/module + optimizer 对着指标调提示/权重,而非手搓 prompt 字符串)。代表库:anthropic-prompt-engineering、anthropic-skills、dspy。
分支⑥ 知道它行不行(guide/eval-observability.md)
补的缺口:模型「不保证对,你也看不见它在干嘛」。 前五条让 agent 能跑;这条让你度量它准不准、看见它每一步、甚至反过来训练它——把 agent 从「能跑」推到「可信、可改进」。
内部按「在什么时点看」分四派:基准与数据工厂(swe-bench 用真实 GitHub issue 评编码 agent、swe-smith 合成无限训练任务、openai-evals 的 YAML 评测注册表、openai-simple-evals 的极简参考实现)、RAG 专项评测(ragas 的忠实度/相关性指标 + 合成测试集)、生产可观测(langfuse 的 trace/prompt 管理、phoenix 基于 OTel 的 trace+评测)、用 RL 训练 agent(ragen 的 StarPO 把多轮交互当轨迹优化;hkuds-deepcode/deeptutor 这类研究 agent 也自带评测脚手架)。代表库:swe-bench、ragas、langfuse。
3. 学习路径(先读哪条分支 → 再下钻哪个库)
这六条分支不是平级随便读,有个由内核往外扩的推荐顺序:
- 先读分支①「行动的循环」 —— 它是 agent 的最小内核,其余五条都是给这个循环加能力。建议从
guide/agent-loop.md入门,再下钻最薄的 mini-swe-agent(一个文件看懂循环),想看「带状态/可中断的工业循环」就下钻 langgraph。 - 再挑你最缺的那块能力分支:
- 要让它「基于我的资料答」→ 分支②,下钻 langchain 或 llamaindex。
- 要让它「记住我」→ 分支③,letta 已有完整子库 doc,直接读
docs/letta/。 - 要让它「真的动手做事/改代码」→ 分支④,下钻 openhands(代码)或 browser-use(网页)。
- 横向两条贯穿全程的分支最后补:⑤ 告诉它该做什么(任何分支的提示质量都靠它,先读 anthropic-prompt-engineering)和 ⑥ 知道它行不行(任何 agent 上线前都要它,编码 agent 先看 swe-bench)。
一句话精华: 想清楚你在补哪块缺口(动 / 知 / 记 / 做 / 教 / 验),就知道该进哪条分支、下钻哪个库。