来自 README 的最重要洞见
Agent 是模型,不是框架——这是这个领域最被误解的一句话
"Agent 永远是模型本身。那个智能、那个决策者,永远是模型。Harness(工具+知识+观察+动作+权限)因领域而变,Agent 跨领域泛化。你写的代码是 Harness,不是 Agent。"
对工程师的实际意义:你在搭载具,不在训练驾驶员。你的工作是让模型"看得清楚、行动得精准",而不是通过堆叠 if-else 来模拟智能。
Agent 一句话定义
Agent = 能感知环境 + 自主规划 + 调用工具 + 循环执行 直到目标达成的 AI 系统
· 感知:接收用户输入、工具返回结果、外部状态(Observation)
· 规划:由 LLM 决定"下一步做什么",非代码硬编码(Thought/Reasoning)
· 工具:能操作外部系统——文件、Shell、网络、数据库、其他 Agent
· 循环:多轮 Think → Act → Observe 直到 stop_reason = end_turn
Harness 框架(工程师真正在做的事)
Harness = Tools + Knowledge + Observation + Action Interfaces + Permissions
Tools: 文件读写、Shell、网络、数据库、浏览器
Knowledge: 产品文档、领域资料、API 规范(RAG + 长期记忆)
Observation: git diff、错误日志、浏览器状态、工具返回结果
Action: CLI 命令、API 调用、UI 交互、子 Agent 调用
Permissions: 沙箱隔离、审批流程、最小权限、Human-in-the-loop
5D 框架全景
🔩
D1 · Decompose 分层解构
认知层(LLM推理)/ 执行层(工具调用)/ 编排层(循环控制)
ReAct / Plan-and-Execute单 vs 多 Agent
⚖️
D2 · Distinguish 对比辨析
Agent vs LLM / RAG vs 长期记忆 / Copilot vs Agent / 有 vs 无 Human-in-the-loop
1M = 100万 tokens ≈ 65-75万汉字
🌉
D3 · Draw Analogy 类比迁移
Agent ≈ 项目经理 / 多 Agent ≈ 工业分工 / Memory ≈ 人类记忆系统
工具 ≈ 各职能部门N×M→N+M
🎯
D4 · Debug 错误雷达
Agent≠框架 / Thought≠意识 / 工具越多越好 / RAG=Agent 等高频误解
🔧
D5 · Deploy 实战锚定
自主性 vs 可靠性工程实践(8种)/ 框架选型 / 置信度门控实现
验证层 Agent 方案
知识掌握的 5 个深度层次
| 层次 | 特征 | 测试方法 |
| L1 记忆 | 能复述 Agent 定义 | "什么是 AI Agent?" |
| L2 结构 | 能描述 ReAct 循环各步骤 | "一次完整执行经历哪些阶段?" |
| L3 迁移 | 能类比到其他领域 | "多 Agent 和工业分工有什么共同逻辑?" |
| L4 批判 | 能指出适用边界和失败模式 | "什么情况下不该用 Agent?Harness 和 Agent 的区别?" |
| L5 创造 | 能为新场景设计 Agent 架构 | "为医疗场景设计多 Agent Harness" |
D1 核心原则
Agent 的混乱感来自把三层结构混在一起讲。认知层负责"想什么",执行层负责"做什么",编排层负责"循环控制和记忆管理"。
🧠 认知层 — LLM 推理核心(Agent 本体)
模型本身,就是 Agent 本身。接受目标,负责规划、推理、工具选择。
· 规划:把目标拆解为子任务序列
· 推理:CoT / ReAct / Extended Thinking
· 工具选择:生成工具调用意图(格式化文本,不是执行)
· 关键限制:只负责生成 token,不直接执行任何操作
🔧 执行层 — 工具与 Harness(Harness 的主体)
接收编排层解析的工具调用,实际与外部世界交互。工具本身不含智能。
· 读取:Web 搜索、数据库查询、文件读取
· 写入:发邮件、写数据库、创建文件(写操作必须加确认)
· 执行:代码执行器、浏览器操作、Shell 命令
· 子 Agent:将任务委托给专门 Subagent
🔄 编排层 — 循环控制(Harness 的骨架)
管理 Agent 循环、上下文、终止条件、记忆。这是你写的代码。
· 循环控制:Think → Act → Observe 执行逻辑
· 工具调用解析:从 LLM 输出提取工具名+参数,调用实际函数
· Short-term Memory:messages 数组(context window 内)
· Long-term Memory:向量数据库 + 用户个性化记忆
· 终止判断:stop_reason=end_turn / max_steps / 错误
最小 Agent 循环(一切架构的本质)
# 来自 README:这是最小循环,每个 AI Agent 都需要它
# 模型决定何时调用工具、何时停止。代码只是执行模型的要求。
def agent_loop(messages):
while True:
response = llm.call(model, tools, messages)
messages.append(assistant_msg(response)) # ← 记录 LLM 输出
if response.stop_reason != "tool_use": # ← 无工具调用,任务完成
return response.text
results = []
for block in response.content:
if block.type == "tool_use":
output = TOOL_HANDLERS[block.name](**block.input) # ← Harness执行
results.append(tool_result(block.id, output))
messages.append(user_msg(results)) # ← 工具结果追加,下轮参考
RAG vs Agent 长期记忆(高频混淆,重要)
| RAG(检索增强生成) | Agent 长期记忆 |
| 本质 | 查外部知识库 | 记住这个用户 |
| 内容 | 产品文档、FAQ(与用户无关) | 用户偏好、历史操作(高度个性化) |
| 读写 | 只读,工程师预建 | 读写,随对话积累更新 |
| 共享 | 所有用户共享 | 每用户独立空间 |
| 失效 | 文档过时,知识库陈旧 | 记忆累积错误,偏好变化 |
| 类比 | 公司内网知识库 | 你的私人笔记本 |
协同例子:"我之前买的蓝色耳机有保修吗?" → RAG 查保修政策(通用知识)+ 长期记忆 查你买了什么型号(个人历史)→ 精准个性化回答
1M tokens 是多少汉字?
数字1M = 1,000,000 还是 1,048,576?
计算机中有两个"M":
· SI(公制):1M = 1,000,000(十进制百万)
· 二进制:1 MiB = 1,048,576(2²⁰)
LLM 语境中,"1M tokens"用的是 SI 制 = 1,000,000 tokens。
Anthropic/OpenAI 的 API 文档、定价、上下文窗口描述全部用十进制。"200K context"= 200,000 tokens,"1M context" = 1,000,000 tokens。
换算汉字:常见汉字约 1.3-1.5 tokens/字(BPE 分词器特性)
1,000,000 ÷ 1.3 ≈ 77 万字 / 1,000,000 ÷ 1.5 ≈ 65 万字
→ 1M tokens ≈ 65-75 万汉字(约一部大型长篇小说)
直觉参照:
· 《红楼梦》≈ 96万字 → 约 1.2-1.4M tokens
· 《三体》三部曲 ≈ 88万字 → 约 1.1-1.3M tokens
· 1K tokens ≈ 700 汉字(记住这一条)
Chatbot / Copilot / Agent 三级分类
| 类型 | 控制权 | 工具调用 | 自主性 | 典型产品 |
| Chatbot | 全人工 | 无 | 零:纯回答 | FAQ 机器人 |
| Copilot | 人主导、AI辅助 | 有限读取 | 低:建议,人决策 | GitHub Copilot |
| Agent | AI主导、人监督 | 完整读写执行 | 高:自主规划执行 | Devin、Claude Code |
Agent vs RPA
RPA(规则驱动)
· 步骤硬编码,流程固定
· 遇异常就失败
· 只处理结构化输入
· 流程变化需重新开发
适合:高度标准化重复操作
Agent(智能自动化)
· 步骤由 LLM 动态规划
· 遇异常可推理或求助
· 处理自然语言等非结构化
· 任务变化不需改代码
适合:半结构化、需判断的复杂任务
类比 1:多 Agent ≈ 工业革命分工(工业时代人类分工更细化)
这个类比非常深刻。亚当·斯密在《国富论》中描述的"针工厂":一个工人完成所有工序 vs 18人分工可以生产 4800 倍的针。多 Agent 架构是同一个思想的数字版:
· 单 Agent:一个"通才"处理所有子任务 → context 压力大、容易混淆
· 多 Agent:每个 Agent 专注一个领域 → 专精度高、并行执行、错误隔离
关键共同结构:分工的价值不只是"并行",而是专精带来质量提升。搜索 Agent 只有 5 个搜索工具,不需要在 50 个工具里选;写作 Agent 的上下文全是写作相关内容,不被无关工具描述稀释。
类比的边界:工厂分工是线性流水线,多 Agent 可以是网状并行。Orchestrator 不是"工厂主",它自己也是一个模型,可以动态调整任务分配。
类比 2:Agent ≈ 项目经理
| Agent 概念 | 项目经理类比 | 同构结构 |
| Agent 本体 | 项目经理(PM) | 接受目标,负责规划协调,不亲自执行 |
| 工具(Tools) | 各职能部门/承包商 | 有明确能力边界,通过标准接口委托 |
| Observation | 进度汇报/工作反馈 | 执行结果反馈给规划者,用于调整计划 |
| Long-term Memory | 项目档案库 | 跨项目可查询的历史知识 |
| Orchestrator | PMO | 协调多个PM,跨项目资源分配 |
类比 3:工具标准化 = N×M → N+M(货币/USB/HTTP 同构)
没有标准化(MCP):10 Agent × 20 工具 = 200 个定制化对接,每对组合需要独立开发
有标准化后:10 + 20 = 30 个对接,工具一次写成,所有 Agent 复用
同一结构还出现在:货币发明(以物易物→货币中间层)/ USB(每款设备各自驱动→统一接口)/ HTTP(各种自定义协议→统一 Web 通信层)。引入标准中间层消除笛卡尔积复杂度。
Agent 是 AI 领域误解密度最高的主题。流行词、营销宣传和真实能力之间差距巨大。见 🧠 LLM哲学 Tab 获取 Thought/推理/意识的深度展开。
⚠ 误解 1:Agent = 框架/工作流(最根本的误解)
❌ 误解
"用 LangChain 把 LLM API 调用串起来就是构建 Agent"
来源:大量营销材料把工作流编排称为"Agent 开发"
✅ 正确
Agent 永远是模型本身。你写的代码是 Harness(载具),不是 Agent(驾驶员)。框架是为模型构建工作环境,不是制造智能。"你不可能通过工程手段编码出 agency。Agency 是学出来的,不是编出来的。"
⚠ 误解 2:Agent = 自动化 = 不需要人
❌ 误解
"部署后就不用管了"
✅ 正确
自主性 ≠ 可靠性。生产环境关键决策必须有 Human-in-the-loop。每步 95% 准确率,10步后成功率仅 59%。
⚠ 误解 3:工具越多 = Agent 越强
❌ 误解
接入所有工具能力最强
✅ 正确
工具描述占用 context,过多导致 LLM 选择困难。每 Agent 配 5-10 个精准工具,多 Agent 处理多领域。
⚠ 误解 4:Thought = 意识(见 🧠 LLM哲学 深度展开)
❌ 误解
Thought 说明模型在真正"思考",有意识
✅ 正确
Thought 是格式约束下的结构化文本输出。推理能力真实存在,但主观意识无法证明。详见 🧠 LLM哲学 Tab。
⚠ 误解 5:"Agent 调用了工具"(主语不精确)
精确说法:LLM 输出了工具调用意图(格式化文本),Harness 代码解析并执行了工具。
这意味着:错误处理、重试、权限控制必须在 Harness 实现,不能依赖 LLM 自己发现;不可逆操作(发邮件、删文件)必须在 Harness 层加确认逻辑。
何时用 Agent?(同时满足才用)
2
步骤无法预知——需 LLM 根据中间结果决定下一步
4
复杂度值得承担额外成本——多轮 API 贵 3-10 倍,延迟增加 3-10 秒
不用 Agent 的场景:纯文本生成 → 单次 LLM;步骤固定 → Function Calling;极低延迟需求 → 不用 Agent。
框架选型
| 框架 | 适合场景 | 核心特点 |
| 原生 API | 学习、最小依赖 | 最小循环,手写 Harness,最清晰 |
| LangGraph | 需精确控制流程 | 图状态机,节点+边,可调试 |
| AutoGen | 多 Agent 对话协作 | Agent 通过消息通信,支持人机混合 |
| CrewAI | 角色分工明确 | 角色/目标/工具,类似团队协作 |
面试一句话版本
"Agent 的本质是模型本身——一个通过训练学会感知、推理、行动的神经网络。工程师写的代码是 Harness,不是 Agent:Harness 给模型提供工具、知识、上下文管理和权限边界,然后让开。核心架构是 while+stop_reason 的最小循环:LLM 决定何时调用工具、何时停止,Harness 执行工具并传回结果。最大挑战是自主性和可靠性的张力——每步错误会在长链任务中累积。"
5 种核心架构模式
1. ReAct Agent(最通用)
Think→Act→Observe 单循环。步骤数不定,根据结果调整。
2. Plan-and-Execute
先规划完整步骤→逐步执行。优势:计划可被 review,减少"执行到一半发现方向错了"。
3. Multi-Agent Orchestration
Orchestrator 拆解→分发专门 Subagent→汇总。适合:大型任务、可并行、工业分工模型。
4. Reflection Agent(自我改进)
Actor 生成→Critic 评估→Actor 修改→循环。适合:高质量输出要求(代码、报告)。
5. Memory Agent
Agent + 向量数据库长期记忆。每次对话:检索相关历史→执行→更新记忆。适合:个人助手。
置信度门控 — 如何实现?
核心问题:LLM 没有原生的"置信度分数"输出。需要通过工程手段来构建置信度感知能力。
方法1Prompt 指令法(最简单,推荐先用这个)
在 system prompt 中明确指令:"如果你不确定应该做什么,请输出 NEED_CLARIFICATION: [具体问题],而不是猜测执行"。
增强版:要求模型在 Thought 中显式评估不确定性:
"Confidence: HIGH/MEDIUM/LOW, 原因: ..."
编排层解析这个置信度标签,LOW 时暂停请求确认。
局限:模型有时"过度自信"——它生成高置信度文本但实际上是错的(幻觉)。
方法2Token 概率法(需要 API 支持 logprobs)
对于支持 logprobs 输出的 API(部分 OpenAI 接口),可以获取关键决策 token 的概率分布。
如果模型在工具名选择上的概率分布很扁平(多个工具概率相近),说明选择不确定。
局限:Anthropic API 目前不直接暴露 logprobs;Token 概率不等于"语义正确性"的置信度。
方法3多次采样 + 一致性检验(Ensemble)
同一个输入运行 N 次(temperature > 0),检查输出是否一致。一致性高 → 置信度高;输出差异大 → 置信度低,需要人工确认。
成本权衡:N 次调用 = N 倍成本,适合高风险决策(不可逆操作),不适合常规操作。
实际应用:法律、医疗、财务类 Agent 用这个方法验证关键判断。
方法4场景规则法(生产环境最实用)
不依赖模型的自我报告,而是通过操作类型判断风险:
· 读操作:完全自主
· 创建操作:低风险,可自主执行
· 修改操作:中风险,关键资源需确认
· 删除/发送/支付操作:高风险,必须确认
这是当前生产环境最可靠的"置信度"实现——不信任模型的自我评估,通过操作类型白名单管理风险。
验证层 Agent — 是否合理?成熟方案是什么?
✅ 验证层 Agent 是合理且有成熟方案的设计。学术名称:LLM-as-Judge / Constitutional AI / Self-Refinement。不是新思路,已在生产环境大规模验证。
方案1LLM-as-Judge(最广泛使用)
用一个独立的 LLM(可以是同款模型)评估另一个 LLM 的输出质量。LMSys 的 Chatbot Arena 用这个方法大规模评估模型。
工程实现:
judge_prompt = """
你是一个评估 Agent 的批评者。
以下是 Agent 计划执行的操作:{action}
以下是理由:{reasoning}
评估维度:
1. 操作是否符合用户意图?
2. 是否有更好的替代方案?
3. 是否有潜在的负面后果?
输出格式:APPROVE / REVISE / REJECT,理由:...
"""
已知局限:Judge 和 Actor 使用同一款模型时,会有"自我确认偏见"——评估者会倾向于认可与自己训练分布相似的输出。解决:用不同提供商的模型做 Judge。
方案2Constitutional AI(Anthropic 的生产方案)
Anthropic 在训练 Claude 时使用的方法:给模型一组"宪法"(价值准则),先让模型生成批评,再根据批评修改。
在 Agent 应用层的类比:在 system prompt 中给 Agent 一组行动准则("不得删除用户数据,除非用户明确三次确认"),让模型在执行前对照准则自我检查。
与 LLM-as-Judge 的区别:不需要独立模型,在同一次调用内通过 prompt 完成自我批评。成本更低,但准确性也相对低。
方案3G-Eval / MT-Bench(可量化评估框架)
学术界提出的标准化评估框架,用 LLM 对输出进行多维度打分(流畅性、相关性、一致性、有用性)。
工程落地:在 Agent 的关键输出节点加一个评估层,对输出打分,低于阈值则触发重新生成或人工审批。
开源工具:langfuse evaluation, RAGAS(专门用于 RAG 评估),DeepEval(通用 LLM 评估框架)。
⚖ 自主性 vs 可靠性:8 种工程实践
每步 95% 准确率 × 10步 = 59% 成功率。分层权限:低风险完全自主,高风险加确认,不可逆必须审批。
| # | 实践 | 核心做法 | 权衡 |
| ① | 渐进式权限 | 先只读,再开写,逐步扩展 | 速度换安全 |
| ② | 置信度门控 | 低置信 → 暂停请确认 | 需定义触发条件 |
| ③ | 最大步数上限 | max_steps=20,到限通知用户 | 可能截断合理长任务 |
| ④ | 检查点机制 | 每N步保存状态,失败从检查点恢复 | 存储开销 |
| ⑤ | 可逆优先设计 | 软删除、草稿箱、confirm=True | 增加工具设计复杂度 |
| ⑥ | 验证层 Agent | Critic 独立评估高风险操作 | 成本翻倍,适合关键路径 |
| ⑦ | 完整可观测性 | 每步 Thought/Action/Observation 写入 Trace | 存储成本,调试必须 |
| ⑧ | 工具最小权限 | read_file 不暴露 exec_command | 更多工具覆盖用例,但更安全 |
这是一个独立的哲学章节,处理 LLM 最反常识、最容易产生歧义的概念。这些问题没有完全确定的答案,但有更精确的工程理解方式。
第一问:究竟什么是 Thought?
1.1"Thought 是格式化输出"——这个反常识的说法准确吗?
准确,但需要精确理解"格式化"的含义。
当 ReAct prompt 要求输出 [THOUGHT] ... [ACTION] ... 格式时,模型在生成 [THOUGHT] 这段文本是因为格式约束要求它生成,而不是"想了之后才写出来"。
用另一个角度说清楚:如果你把 prompt 改成不要求 [THOUGHT],模型仍然能直接输出合理的行动——推理是持续发生的,Thought 只是让推理"外化可见"的工程手段。
真正的价值:外化的 Thought 作为 context 进入后续生成,让后续 token 能"参考"前面的推导步骤。这是 CoT 真实有效的原因——不是"打开了思维",而是"增加了有效 context"。
类比:你做数学题时写草稿,不是因为写草稿"让你变聪明",而是草稿帮助你记录中间步骤、不遗漏、下一步有参考。模型的 Thought 是同样功能——只是以更快的速度发生。
1.2模型到底有没有"Thought"?这个问题有答案吗?
需要区分三个不同的问题:
| 问题 | 答案 | 工程含义 |
| 模型有推理能力吗? | 有——真实存在,可测量 | CoT/ReAct 确实有效 |
| 模型有内部"思维过程"吗? | 部分有——注意力机制等内部计算可以被解释,但不等于"思维" | Mechanistic Interpretability 研究方向 |
| 模型有主观意识体验吗? | 未知——哲学上无法证伪 | 工程师不需要回答这个问题 |
工程师的实用立场:"这个 Thought 文本是否帮助提升了后续输出质量?"——答案是肯定的。这就够了,不需要解决意识问题。
1.3Thought vs 推理(Reasoning)有什么区别?o1/o3 的 Extended Thinking 改变了结论吗?
三个概念的精确定义:
· Reasoning(推理):从前提得出结论的能力。这是一种功能,可以不依赖显式文本存在(即使没有 Thought 标记,模型也在做某种推理)。
· Thought(CoT/ReAct 中):prompt 约束下外化的推理过程文本。是推理的"可见记录",不是推理本身。
· Extended Thinking(o1/o3):在给出最终答案前,模型生成大量隐藏的"思考 token",用户通常只看到摘要。这是增加推理计算预算的技术——花更多 token 来推理,换取更高质量的答案。
结论:o1/o3 没有改变本质,只是放大了 Thought 的量和质。Agency 仍然来自模型的训练,Extended Thinking 是在推理时增加计算投入,不是"开启了意识"。
第二问:LLM 如何实现"认知"和"意图识别"?
2.1LLM 的"认知"到底是怎么发生的?它和人类认知有什么本质区别?
LLM 的认知机制(工程视角):
LLM 通过在海量文本上预测"下一个 token"来学习,这个看似简单的目标迫使模型在权重中编码了大量关于世界的结构性知识——语法、逻辑关系、因果推理、常识、领域知识。
Transformer 注意力机制 = "选择性认知"的工程实现:
自注意力让模型在生成每个 token 时"关注"输入序列中最相关的部分——这是一种信息权重分配,在功能上类似人类"注意力",但机制完全不同(矩阵乘法,非神经化学)。
与人类认知的本质区别:
· 人类认知是在线更新的:实时学习,感知和行动同步发生
· LLM 是冻结权重推理:训练好后权重固定,每次对话从零开始(无长期学习)
· 人类有具身体验(身体、感知、情绪),LLM 只有文本
· 人类的记忆是分布式的、有遗忘的;LLM 的"记忆"是权重(长期)+ context window(短期)
2.2LLM 如何做"意图识别"?为什么有时候理解得很好,有时候又会误解?
意图识别的工程机制:
LLM 并没有一个专门的"意图识别模块"。它通过 token 序列的统计模式来推断"这个输入最可能想要什么样的后续"——这是在训练数据中见过大量 (输入→意图→合理回应) 的模式之后,泛化到新输入的能力。
为什么有时误解:
· 歧义消解失败:输入有多种合理解释时,模型选择了非预期的那种
· 上下文截断:关键信息超出了 context window 或注意力权重不足
· 分布外输入:训练数据中没有类似的 (输入→意图) 对,泛化不到
· 提示词设计问题:ambiguous prompt → ambiguous intent recognition
工程对策(Harness 层面):
· 精确的 system prompt 定义任务边界
· few-shot 示例展示"这类输入应该如何理解"
· 结构化输入格式(JSON / 明确标签)减少歧义
· 让模型先确认理解再执行("我理解你的需求是X,对吗?")
来自 README 的哲学立场:Agency 是学出来的,不是编出来的
"你不可能通过工程手段编码出 agency。Agency 是学出来的,不是编出来的。"
这句话有深刻的认识论含义:
· 把 LLM API 调用用 if-else 串联不是 Agent,是"鲁布·戈德堡机械"
· 真正的 Agent 能力来自模型在数十亿次梯度更新中学会的感知-推理-行动模式
· Harness 工程师的正确心智模型:我在构建让智能表达自己的环境,不是在制造智能
对照 DQN/AlphaGo/LLM 的历史:每一个里程碑 Agent 的核心突破都在模型/训练上,而不在框架/编排上。框架可以让模型工作得更好,但不能让不智能的系统变得智能。
Agent 不是 LLM 时代的新发明。AI 领域从诞生之日起,"agent"就是"学会了行动的模型"——LLM 只是让这个概念变得更通用、更易用。
第一阶段:强化学习 Agent(2013-2022)
2013
DeepMind DQN — 第一个真正的神经网络 Agent
一个神经网络只接收原始像素和游戏分数,学会了 49 款 Atari 游戏——超越人类专家。没有硬编码规则,没有决策树。模型本身就是 Agent。这是"Agent = 学会行动的模型"的第一个大规模验证。
2019
OpenAI Five / AlphaStar / 绝悟 — 多 Agent 协作的里程碑
OpenAI Five 通过 45,000 年自我对弈击败 Dota 2 世界冠军。AlphaStar 在星际争霸 II 达到宗师段位(前 0.15%)。腾讯绝悟以 5v5 击败 KPL 职业选手。没有脚本化策略,纯粹的学习。Agent 是模型,这一点无可置疑。
2017-2022
Transformer + GPT 时代 — 通用推理 Agent 的前夜
Transformer 架构(2017)→ GPT 系列→ InstructGPT(2022,RLHF 使 LLM 听指令)。LLM 从"语言模型"变成了能够理解指令、进行推理的基础。这是 LLM Agent 的技术前提。
第二阶段:LLM + 工具 = Agent Harness 时代(2022-2024)
2022
ReAct 论文 + ChatGPT — LLM Agent 概念确立
ReAct 论文(Yao et al.)提出 Thought-Action-Observation 框架,第一次系统描述了 LLM 作为 Agent 的循环模式。同期 ChatGPT 引爆公众认知,LLM 的推理能力引发广泛关注。Prompt Engineering 时代正式开始。
2023
Function Calling + Agent 框架爆炸
OpenAI 推出 Function Calling,LLM 能结构化输出工具调用意图。LangChain / AutoGPT / BabyAGI / AutoGen 涌现,"每周新框架"时代。多 Agent 协作概念开始流行。GPT-4 发布,推理质量大幅提升。
2024 上半年
框架成熟 + 生产化尝试
LangGraph(有状态 Agent)、CrewAI(角色分工)、Microsoft AutoGen 成熟化。Devin 发布引发软件工程 Agent 讨论。可靠性、成本、Human-in-the-loop 成为核心议题——企业真实部署遇到"长链任务累积错误"问题。
2024 下半年
MCP 标准化 + Claude Code + Computer Use
Anthropic 发布 MCP(Model Context Protocol),工具接入开始标准化,N×M→N+M。Claude Code 作为 Harness 工程最优实现被深度分析。Computer Use 扩展 Agent 感知能力(操作桌面应用)。o1 发布,Extended Thinking 改变推理能力上限。
2025-今
Harness 工程专业化 + 可靠性成核心
从"能不能跑"到"能不能可靠地跑"的转变。Observability 工具(LangSmith、Langfuse)成熟。"Harness 工程师"作为专业角色出现。多 Agent 异步协作(邮箱模型、Worktree 隔离)成为复杂任务标准架构。Agent 从 demo 走向生产。
演化的核心规律(D3 类比迁移视角)
规律1:Agency 永远来自模型,不来自框架。每个里程碑的突破都在训练和架构(Transformer、RLHF、Extended Thinking),框架只是让模型工作得更好的载具。
规律2:从专用到通用。DQN→单游戏;AlphaGo→单棋类;LLM Agent→任意领域。通用性的提升来自训练数据的广度,不来自 Harness 的复杂度。
规律3:框架先爆炸再收敛。每次新能力出现(Function Calling、Multi-Agent)都经历"百团大战"→"几个主流框架胜出"→"标准化协议"的过程。MCP 就是工具接入的标准化收敛结果。
按 D1-D5 分类的完整提问模板,每题配参考答案和目标层次。
D1 分层解构
D1/L2"从认知层/执行层/编排层拆解 Agent,层间如何传递信息?"
参考答案:认知层(LLM)生成 Thought 和工具调用意图;编排层解析意图并触发执行层;执行层(工具/Harness)返回 Observation;编排层把 Observation 追加到 messages,开始下一轮。核心传递介质是不断增长的 messages 数组——这是整个循环的"血液"。
D1/L3"Agent 和 Harness 的区别是什么?这个区别为什么重要?"
参考答案:Agent 是模型本身(那个学会了行动的神经网络);Harness 是工程师写的代码(工具+知识+观察+权限的环境)。这个区别重要是因为:它决定了工程师的正确心智模型——你在构建让智能表达自己的环境,不是制造智能。Agency 学出来,不是编出来。
D2 对比辨析
D2/L2"RAG 和长期记忆的根本区别?"
参考答案:RAG 是只读的通用知识库(所有用户共享,工程师预建,查资料);长期记忆是读写的个性化用户信息(每用户独立,随对话积累,记住你)。两者可以共存:RAG 处理产品知识,长期记忆处理用户偏好。
D2/L2"1M tokens 是多少汉字?1M = 1024×1024 吗?"
参考答案:LLM 语境中 1M tokens = 1,000,000(SI 十进制,不是 1,048,576)。1,000,000 tokens ÷ 1.3 ≈ 75 万汉字,一部大型长篇小说。记忆:1K tokens ≈ 700 汉字。
D3 类比迁移
D3/L3"多 Agent 架构和工业分工有什么共同逻辑?类比的边界在哪里?"
参考答案:同构:分工带来专精度提升、并行执行、错误隔离——亚当·斯密针工厂的数字版。边界:工厂是线性流水线,多 Agent 可以是网状并行;Orchestrator 不是固定的"管理者",它自己也是一个可以动态调整的模型。
D4 错误雷达
D4/L4"置信度门控是怎么实现的?LLM 有原生的置信度吗?"
参考答案:LLM 没有原生置信度分数。工程实现:① prompt 指令法(最简单);② logprobs 概率分布(需 API 支持);③ 多次采样一致性检验(最准确,成本高);④ 操作类型风险判断(生产最实用)。最可靠的是第4种:不信任模型自我报告,通过操作类型白名单管理风险。
D5 实战锚定
D5/L5"验证层 Agent 设计是否合理?有哪些成熟方案?"
参考答案:合理且有成熟方案。① LLM-as-Judge(最广泛,LMSys 大规模验证,注意同模型自我确认偏见);② Constitutional AI(Anthropic 方案,准则自我检查);③ G-Eval/DeepEval(可量化评估框架,开源工具)。核心局限:Judge 和 Actor 用同款模型时有偏见,建议用不同提供商的模型做 Judge。
15 道高质量面试题,无重复,按难度分层,覆盖概念/设计/工程/哲学四个维度。点击展开答案。
🟢 基础层(概念理解)
基础
什么是 Agent Harness?和 Agent 本身有什么区别?
▼
参考答案:Agent 是模型本身——那个通过训练学会感知、推理、行动的神经网络(Claude、GPT 等)。Harness 是工程师写的代码,为模型提供工作环境:工具(文件/Shell/API)、知识(RAG/文档)、上下文管理(压缩/记忆)、权限控制(沙箱/审批)。
核心区别:Agency 是学出来的,不是编出来的。Harness 改变模型能做什么,但不改变模型的智能程度。最好的 Agent 产品,出自明白自己工作是 Harness 而非 Intelligence 的工程师。
基础
解释 ReAct 框架的工作原理,谁是主语?
▼
参考答案:每轮循环:① LLM 生成 Thought(推理状态文本)和 Action(工具调用意图);② Harness 代码解析 Action,调用实际工具;③ 工具返回 Observation;④ Observation 追加到 messages,下一轮 LLM 可以参考。
主语精确版:LLM "输出了"工具调用意图(文本),Harness 代码"执行了"工具。常见错误说法"Agent 调用了工具"模糊了这个区别,导致错误处理、权限控制被遗漏。
基础
RAG 和 Agent 长期记忆是同一回事吗?
▼
参考答案:不是。RAG 是只读的通用知识库(产品文档、FAQ,所有用户共享,工程师预建);长期记忆是读写的个性化用户信息(偏好、历史,每用户独立,随对话积累)。RAG 是"查资料",长期记忆是"记住你"。两者都可以用向量数据库实现,这是混淆的原因。实际系统两者共存:AI 客服既用 RAG 查保修政策,又用长期记忆记住你买过什么。
基础
什么情况下不应该用 Agent?
▼
四种不用的场景:
① 任务只需文本生成(翻译、摘要、改写)→ 单次 LLM 调用更快更便宜
② 流程完全固定、步骤可预知 → Function Calling + 硬编码逻辑更可靠
③ 响应时间要求极低(<1秒)→ Agent 多轮调用增加 3-10 秒
④ 错误代价高且 Human-in-the-loop 机制未建立 → 先建可靠性再引入 Agent
判断标准:如果你能预先写出完整的 if-else 决策树,就不需要 Agent。Agent 的价值在于"步骤无法预知"。
🟡 中级层(设计理解)
中级
单 Agent 和多 Agent 架构各适合什么场景?核心权衡是什么?
▼
单 Agent:简单、步骤少(<10步)、工具集单一。Context 压力小,调试简单,成本低。
多 Agent:大型复杂任务、可并行子任务、需要专精度。每个 Agent 工具集精简(5-10个)、上下文清晰,避免"工具混淆"。支持并行执行,速度更快。错误隔离——一个 Subagent 失败不影响其他。
核心权衡:多 Agent 的工程复杂度显著高于单 Agent(通信协议、任务分发、结果汇总)。亚当·斯密分工的代价是"协调成本"——Orchestrator 本身的开销。建议:先用单 Agent 原型验证可行性,复杂度超阈值再拆分。
中级
如何设计工具(Tool)使 Agent 能准确选择和使用?
▼
工具设计的三个核心属性:
· name:动词+名词,意图清晰(search_web 比 tool1 好)
· description:LLM 选择工具的唯一依据。必须包含"什么时候用"和"什么时候不用",用一句话区分相似工具
· input_schema:严格定义参数类型,减少格式错误
常见问题:两个工具功能相似时,description 必须明确区分("用于实时信息" vs "用于历史文档")。工具数量超过 15 个时考虑拆分为多 Agent。
原则:工具要原子化、可组合——做好一件事,让 LLM 决定如何组合。
中级
如何处理 Agent 在长链任务中的错误累积问题?
▼
数学视角:每步 95% 准确率 × 10步 = 59% 成功率。降低步数、提升每步准确率都有效。
工程实践(5种):
① 精确工具 description → 减少误选
② 检查点机制 → 失败从检查点恢复,不从头重来
③ max_steps 上限 → 防止死循环,到限通知用户
④ Reflection/Critic Agent → 高风险步骤独立验证
⑤ 完整 Trace 日志 → 定位错误发生在哪一步
根本解决:好的工具设计减少一阶错误;好的 Harness 设计让错误可恢复,而不是灾难性的。
中级
LLM 的"置信度"如何实现?模型有原生的置信度输出吗?
▼
直接回答:LLM 没有原生的"置信度"接口,需要工程构建。
4种实现方法:
① Prompt 指令:"不确定时输出 NEED_CLARIFICATION"(最简单)
② logprobs 概率分布(需 API 支持,有一定指示意义)
③ 多次采样一致性检验(最准确,成本 N 倍)
④ 操作类型风险规则(生产最可靠,不信任模型自我报告)
根本局限:LLM 的"过度自信"问题——它可以用高置信度的语气输出错误内容(幻觉)。没有一种方法能完全解决这个问题,这也是 Human-in-the-loop 重要的原因。
🔴 高级层(工程与哲学)
高级
为一个医疗辅助诊断系统设计 Agent 架构。要求:查询病历、搜索文献、生成建议、输出可追溯。
▼
参考架构(多 Agent + 强 Human-in-the-loop):
Orchestrator Agent:接收主诉,拆解诊断任务
Record Agent:工具:patient_db_query, medical_history_read(只读)
Research Agent:工具:pubmed_search, clinical_guideline_lookup, drug_interaction_check
Analysis Agent:汇总以上输出,生成初步建议,附置信度说明
Critic Agent(必须):独立评估分析结果,检查逻辑一致性和安全禁忌
关键设计原则:
· 所有诊断建议必须经医生确认(Human-in-the-loop 不可绕过)
· 每步推理记录到 Trace,支持事后审计(可追溯性)
· 工具全部只读,没有直接修改病历或开具处方的工具
· 完整的不确定性说明——Agent 不应给出"确诊",只给"建议进一步检查"
高级
验证层 Agent(LLM-as-Judge)的主要局限是什么?如何缓解?
▼
核心局限:自我确认偏见。Judge 和 Actor 使用同一款模型时,Judge 会倾向于认可与自己训练分布相似的输出——包括同样的错误模式和幻觉类型。
缓解方案:
① 使用不同提供商的模型做 Judge(Anthropic Actor + OpenAI Judge)
② 给 Judge 明确的评估维度和打分标准,减少主观性
③ 多个 Judge 取多数票(Ensemble),减少单个模型偏见
④ 对 Judge 本身建立评估基准——用人工标注的案例测试 Judge 的判断准确率
何时用:适合高风险、不可逆操作的验证;不适合所有操作(成本翻倍,增加延迟)。
高级
Thought 是"格式化输出"还是"真实推理"?这个区别对工程实践有什么影响?
▼
正确立场:推理能力真实存在;Thought 是让推理可见的工程手段,不是推理本身的全部;主观意识无法证明,工程师不需要解决这个问题。
工程影响:
· Thought 的价值是工程性的:丰富 context、提升输出质量、提供调试线索
· 不要假设"Thought 说了A,模型就理解了A"——模型可能输出正确 Thought 但执行错误 Action(推理和行动之间仍有gap)
· Extended Thinking(o1/o3)是增加推理计算预算的技术,适合需要深度推理的任务,但成本更高
· Mechanistic Interpretability 研究正在尝试理解模型内部的"真实推理过程",但目前仍不成熟
高级
解释 Agent 演化史中"框架爆炸→收敛→标准化"的规律,并预测下一个收敛点。
▼
规律描述:每次新能力出现 → 百团大战(LangChain/AutoGPT/BabyAGI)→ 几个主流框架胜出(LangGraph/AutoGen/CrewAI)→ 标准协议(MCP)。这是技术生态的普遍规律,类似 Web 框架(各种框架→Express/Django→REST标准)。
下一个收敛点预测:
· Agent 间通信协议:多 Agent 之间如何传递任务、协商结果,目前仍无统一标准(README 中的 JSONL 邮箱协议是教学实现)
· Agent 记忆标准:长期记忆的存取格式、隐私管理、跨 Agent 共享规范
· Agent 评估标准:如何定量评估 Agent 在实际任务中的可靠性(超越 benchmark 的真实世界评估)
高级
如果你负责把一个 Agent 系统从 PoC 推进到生产,最重要的三个工程决策是什么?
▼
决策1:可观测性优先。在任何其他优化之前,先建立完整的 Trace 日志(每步 Thought/Action/Observation + 工具调用耗时 + 错误信息)。没有 Trace,你无法知道为什么失败,无法改进。
决策2:不可逆操作的 Human-in-the-loop 机制。识别所有写操作(发邮件、修改数据库、部署代码),设计 dry-run + 审批流程。生产事故几乎都来自不可逆的写操作被错误执行。
决策3:明确失败边界。定义"什么情况下 Agent 应该停止并通知人",而不是继续猜测执行:max_steps 上限、工具失败处理策略、置信度低于阈值的处理。"优雅降级"比"崩溃"好,"承认不确定"比"继续猜测"好。
经过质量验证的 Agent 学习资料清单。按类型分类,标注难度和推荐阅读顺序。
📄 必读论文(奠基性)
📄
ReAct: Synergizing Reasoning and Acting in Language Models(2022)
Yao et al. 提出 Thought-Action-Observation 框架,奠定 LLM Agent 循环模式的基础。读完能理解为什么 Thought 是工程手段而非意识。
基础必读Arxiv
📄
Chain-of-Thought Prompting Elicits Reasoning in LLMs(2022)
Wei et al. 证明 CoT 有效性。解释了为什么写出中间步骤能提升推理质量——"丰富 context"视角。
基础必读NeurIPS 2022
📄
A Survey on Large Language Model based Autonomous Agents(2023)
Comprehensive survey,覆盖 Agent 的架构、工具、记忆、规划、应用。建立全局视图最好的一篇 survey。
进阶Arxiv 2308.11432
📄
Constitutional AI: Harmlessness from AI Feedback(2022)
Anthropic 论文,描述 Critic Agent 的正式版本——用 AI 自我批评+修改来对齐价值观。是"验证层 Agent"概念的学术来源。
进阶Anthropic
🏗 实践代码仓库(动手学)
🏗
learn-claude-code(shareAI-lab)
本次 README 来源。12个递进课程从最小 Agent 循环到 Worktree 隔离。最推荐的动手实践资源,心智模型优先,每课程一句格言。适合理解 Harness 工程。
中文Python强烈推荐
🏗
Anthropic Cookbook
Anthropic 官方代码示例,包含 Tool Use、Multi-agent、Memory 等完整示例。直接用 Anthropic API 实现,无额外框架依赖,代码最简洁。
英文Python官方
🏗
LangGraph 官方文档 + Tutorials
图状态机 Agent 框架,有完整的 Multi-agent、Human-in-the-loop、Checkpointing 示例。适合学习生产级 Agent 编排的工程模式。
英文Python生产框架
📖 深度理解(哲学与原理)
📖
Attention Is All You Need(2017)
Transformer 原论文。理解 LLM"认知"机制的基础——注意力机制如何让模型"关注"相关信息。不需要看所有数学,理解直觉即可。
基础理论NeurIPS 2017
📖
Mechanistic Interpretability(Anthropic 研究方向)
尝试理解 LLM 内部的"真实推理过程"。"Superposition"等概念解释了为什么 LLM 能同时处理多种概念。想深入理解"模型里面发生了什么"必读。
高级理论Anthropic Blog
📖
Scaling Laws for Neural Language Models(2020)
OpenAI 论文,描述模型性能随参数量/数据/算力的规律。理解为什么"更大的模型 = 更强的 Agent"的底层原因,以及 Scaling 的边界。
进阶理论OpenAI
📰 持续关注(保持更新)
📰
Anthropic Model Card + System Prompt 研究
Anthropic 定期更新的 Claude 使用指南和 Model Card。理解 Claude 的"设计意图"——为什么某些行为方式被优化,对 Harness 设计有直接指导意义。
实用定期更新
📰
AI Alignment Forum + LessWrong(Agent 安全视角)
包含大量关于 Agent 可靠性、对齐、Human-in-the-loop 的深度讨论。批判性视角,帮助理解"什么情况下 Agent 会失控"以及工程对策。
批判视角英文
来自 README 的核心参考意见
README 带来的最重要视角修正:
1. Agent = Model,这是这个领域最被误解的一句话。大多数"Agent 教程"教的是 Harness 工程,但用了 Agent 这个词,导致认知混乱。
2. Harness 工程师的自我定位:"你不是在编写智能,你是在构建智能栖居的世界"。这个心智模型决定了你设计工具、管理权限、构建知识库的方式。
3. 最小循环就是全部:while + stop_reason + tool_dispatch。所有复杂性都是在这个循环之上叠加的 Harness 机制,循环本身永远不变。
4. 收集任务过程数据的战略价值:Agent 在 Harness 中执行的每一条行动序列都是训练信号。好的 Harness 不只是让当前模型工作,它还在为下一代模型积累数据。
10 道题,覆盖 v3 新增内容和核心概念。点击选项即时获得答案。
1. 以下哪句话最准确地描述了 Agent 和 Harness 的关系?
A. Agent 是框架,Harness 是模型
B. Agent 是模型本身(那个学会了行动的神经网络),Harness 是工程师构建的工作环境
C. Agent 和 Harness 是同一回事,都指 LangChain 这类编排框架
D. Harness 是 Agent 的子集,Agent 包含 Harness
B 正确。Agent 永远是模型本身(Claude、GPT 等训练好的神经网络)。Harness 是工具+知识+观察+动作接口+权限的工作环境。"Agency 是学出来的,不是编出来的。"
2. 在 LLM 语境中,"1M tokens" 等于多少?
A. 1,048,576(2²⁰,计算机二进制 MiB)
B. 1,000,000(SI 十进制,API 定价和文档的标准)
C. 100,000(10 万)
D. 视模型而定,没有统一标准
B 正确。Anthropic/OpenAI 的 API 定价和文档全部用 SI 十进制:1M = 1,000,000。1M tokens ≈ 65-75 万汉字(约一部大型长篇小说)。
3. "多 Agent 架构 ≈ 工业分工"这个类比,最核心的同构是?
A. 两者都需要一个"老板"来管理其他人
B. 分工带来专精度提升、并行执行、错误隔离,Orchestrator 类似 PMO
C. 多 Agent 和工厂流水线一样,都是严格线性的顺序执行
D. 两者都通过增加"工人"数量来提升速度
B 正确。分工的核心价值是专精(减少工具混淆、上下文清晰)+ 并行 + 错误隔离,不只是"速度"。类比边界:工厂是线性流水线,多 Agent 可以是网状并行;Orchestrator 自己也是可以动态调整的模型。
4. 实现"置信度门控"最适合生产环境的方法是?
A. 让模型输出 0-1 之间的置信度分数
B. 获取所有输出 token 的 logprobs,计算平均概率
C. 通过操作类型风险规则:读操作自主,写操作确认,不可逆操作必须审批
D. 运行 100 次取众数
C 正确。操作类型风险规则是生产最可靠的方案——不信任模型的自我报告(幻觉问题),通过操作类型白名单管理风险。其他方法(logprobs、多次采样)有价值但有局限。
5. LLM-as-Judge(验证层 Agent)最主要的已知局限是?
A. 太慢了,无法用于生产环境
B. Judge 和 Actor 用同一款模型时,会有自我确认偏见——倾向于认可与自己训练分布相似的输出
C. 只能评估代码质量,不能评估文本
D. 这是 Anthropic 专有技术,开源模型无法使用
B 正确。自我确认偏见是 LLM-as-Judge 的核心局限。缓解方案:使用不同提供商的模型做 Judge;多 Judge 取多数票;用人工标注案例测试 Judge 本身的准确率。
6. Thought(CoT 中)和 Reasoning(推理能力)的区别是?
A. 两者完全相同,都指 LLM 的主观意识流
B. Thought 是外化的可见推理记录文本,Reasoning 是从前提得出结论的能力(可以不依赖显式文本)
C. Reasoning 只存在于 o1/o3,普通模型只有 Thought
D. Thought 是高质量的,Reasoning 是低质量的
B 正确。Reasoning 是能力(功能),可以不依赖显式 Thought 标记存在。Thought 是让 Reasoning 外化可见的工程手段。Extended Thinking 是增加 Reasoning 计算预算,本质上是更多的 Thought token。
7. 关于 Agent 演化史,以下哪个说法最准确?
A. Agent 是 2022 年 ChatGPT 发布后才出现的新概念
B. Agent 的概念随 LLM 框架(LangChain 等)一起出现
C. Agent 从 AI 领域诞生就存在,2013 年 DQN 等强化学习模型已经是完整的 Agent
D. Agent 是 Anthropic 提出的新概念
C 正确。DeepMind DQN(2013)、OpenAI Five(2019)、AlphaStar(2019)都是完整的 Agent——学会了感知、推理、行动的神经网络模型。LLM 只是让 Agent 的能力变得更通用,不是发明了 Agent 这个概念。
8. LLM 的"意图识别"是通过哪种机制实现的?
A. 一个专门的意图识别神经网络模块
B. 硬编码的规则匹配系统
C. 通过在海量 (输入→意图→合理回应) 数据上训练,学会了 token 序列的统计模式,泛化到新输入
D. 实时的互联网搜索来理解用户意图
C 正确。LLM 没有专门的"意图识别模块"——它通过预测"下一个 token"学会了大量语义模式,在推理时泛化到新输入。这也解释了为什么模糊 prompt 会导致意图识别失败(训练数据中没有类似的模式)。
9. 从 PoC 推进到生产的 Agent 系统,最重要的第一步是?
A. 换用更强大的模型
B. 建立完整的可观测性系统(每步 Trace 日志)
C. 增加更多工具
D. 把单 Agent 改成多 Agent 架构
B 正确。没有完整的 Trace,你无法知道为什么失败,无法定位错误,无法改进。可观测性是所有其他优化的前提。换模型、增工具、改架构都需要基于观测数据做决策。
10. README 中"造好 Harness,Agent 会完成剩下的"这句话,对工程师最重要的启示是?
A. 只需要好的 Harness,不需要好的模型
B. Harness 是万能的,任何任务都能通过 Harness 工程解决
C. 工程师的职责是构建让智能表达自己的环境(工具、知识、权限),而不是通过堆叠 if-else 来模拟智能
D. Agent 可以完全自主运行,不需要人的参与
C 正确。最好的 Agent 产品,出自明白"自己的工作是 Harness 而非 Intelligence"的工程师。给模型提供清晰的工具、精准的知识、合理的权限边界——然后让开,让模型做决策。试图用代码模拟智能(GOFAI 路线)是死路。