Agent Harness 深度解析:模型决定下限,骨架决定上限
这是「近五年 AI 技术演进」系列深挖的最后一篇第十三篇。前十二篇各拆了一个零件——提示词、检索、工具、协议、编排、技能、规矩、记忆、沙箱。这一篇不再拆新零件而是把它们装回去为什么这些零件必须长在一起才叫一个 Agent。全文约 6000 字含三张表模块全景、五年时间线、学习路径、一段最小 Harness 骨架代码和五张原创信息图。一、先纠正一个说法模型不是 Agent同一个模型在两个产品里表现得像两个东西。在网页对话框里你让它修 bug它给你一段看起来对的代码说「请替换进去」。在终端里用同一个模型它能自己找文件、改三处、跑测试、看报错、再改一遍。模型是同一个差别在模型外面那一圈东西。2026 年 2 月这圈东西终于有了名字。2 月 5 日HashiCorp 创始人 Mitchell Hashimoto 写了一篇《My AI Adoption Journey》里面有句话被反复引用任何时候你发现 agent 犯了一个错就花时间工程化一个方案让它永远不再犯这个错。他把这个习惯叫 engineer the harness。六天后OpenAI 发布了一份 Codex 团队的报告标题直接叫《Harness engineering》三个工程师、五个月、约一百万行代码、约 1500 个 PR没有一行是手写的。他们的工作全部变成了设计环境。两个月内这个词从个人博客变成了行业黑话。模型到底是什么把一次调用写成伪代码只有一行next_tokens model(context_tokens) # 文本进文本出仅此而已它没有手——不能执行任何东西没有眼睛——看不到执行结果没有记忆——每次调用都从零开始详见本系列第 11 篇没有时钟——不知道自己已经跑了四十分钟没有边界——不知道什么事不能做也没有钱包——不知道这一轮花了多少钱。做一个思想实验把目前最强的模型放进一个只有输入框的窗口。它能把「这个 bug 该怎么修」讲得比任何资深工程师都清楚。然后 bug 还在那里。说对和做成之间隔着一整个工程。这个工程就是 Harness包裹模型的运行循环、工具、记忆、上下文、环境、护栏、协作和知识注入。一句话定位——它是给推理能力配的那副身体。三个词别再混着用2026 年之后讨论 agent 至少要分清三层词是什么类比换一个的代价模型权重文本进文本出发动机改一个参数框架LangGraph、CrewAI造 harness 的零件箱零件目录改一批代码Harness装好、调好、能上路跑的整套系统整车重做工程再往下切一刀还有个常用区分scaffold 是开场前搭好的系统提示、工具定义、规则文件、仓库索引harness 是每一步运行时做的解析输出、派发工具、回填结果、压缩上下文、查权限、重试。很多人争论「提示词重要还是工具重要」其实是把这两层混在一起谈了——它们的失效方式完全不同用错文件通常是 scaffold 的问题第 30 轮忘了规则通常是 harness 的问题。所以那个流行的公式要读准Agent Model Harness。它的重点不是加法是那句潜台词——模型不在 harness 里面。harness 是「除模型之外的一切」。二、引擎与整车为什么同一台发动机跑出不同成绩把大模型想成发动机很多事一下就通了。马力是单步推理能力排量是上下文窗口油耗是 token 成本。参数漂亮账面好看。但发动机不能直接驱动车轮。它每分钟几千转地空转中间必须过一个变速箱把转速变成轮胎上能用的扭矩。模型也一样它的输出是 token不是动作。从 token 到「世界真的变了」中间要过五道工序——解析意图、检查权限、执行、观察结果、回填上下文然后回到模型再判断一次。这套传动系统就是运行循环。再往下配方向盘是工具选择。往哪打取决于工具描述写得清不清楚——模型只能靠那几行字决定用不用你刹车是护栏。危险操作要人点头、成本有上限、超时要掐断底盘是沙箱与运行时。决定这车能在什么路上跑也决定翻车时是人受伤还是车报废仪表盘是可观测性。没有它你只能靠猜线束是上下文工程。把电送到该去的地方送错了全车失灵。三个推论每个都能解释一批真实事故。第一换发动机不等于换整车。很多团队升级了模型agent 依旧在第 12 步崩掉。因为崩的原因从来不是「不够聪明」而是上下文太脏、工具返回值太吵、没有检查点。第二同一台发动机装在不同整车上成绩能差好几倍。2026 年初 LangChain 团队公开过一个实验同一个模型在 Terminal Bench 2.0 上得分 52.8%排在前 30 之外。他们没换模型只改了 harness——启动时先给一张目录地图强制它对着任务说明自查而不是重读自己的代码把推理预算多分给规划和验证、少分给实现加了循环检测提前告知验收方式。几周后 66.5%进了前 5。13.7 个百分点比大多数模型换代带来的提升还大。第三没有刹车的车不能上路。demo 和产品的分界线不是智力是「最坏情况下会怎样」。顺便说个词源。harness 的本义是马具——缰绳、马鞍、嚼子、马蹄铁。马具不让马更强它让马的力量可用、可控、可停。这比「骨架」更狠骨架是支撑塌了散架马具是驾驭松了马会冲进人群。三、七个模块一个横切面把 Harness 拆开是七个模块加一个横切面。这张表建议存下来它是整个系列的目录模块对应篇目解决的问题一句话实现运行循环 Loop第 3、6 篇一次推理构不成一个任务while思考、行动、观察带终止条件工具层 Tools MCP第 3、4、5 篇模型碰不到外部世界结构化 schema加上统一协议记忆 Memory第 11 篇每轮都从零开始短期对话工作状态长期结论上下文工程第 1、2、9、10、11 篇窗口有限注意力会稀释预算分配压缩按需加载执行环境 Sandbox第 12 篇代码有破坏力容器隔离只读根断网限额护栏 Guardrails第 4 篇它会做不该做的事权限分级人工确认输出校验预算上限编排 Orchestrator A2A第 7、8 篇单 agent 撞上下文墙拆任务上下文隔离协议互通知识注入第 2、9、10 篇不懂领域不懂这个项目事实、方法、规矩三种知识分开装最后两行严格说是四样东西按「协作」和「知识」归成两类。而上下文工程不在任何位置上——它在所有模块之间流动所以叫横切面。3.1 运行循环整个 harness 的心脏一句话一个 while。四个动作反复做——装配上下文、模型推理、执行动作、观察回填。三个必须有的东西终止条件模型说完了、任务达成、步数用完、预算token、时间、钱、检查点每步存档崩了能续。2023 年 AutoGPT 的失败不是想法错是这三样一个都没有它不知道什么时候该停不知道自己花了多少也不知道自己走到哪了详见本系列第 3 篇。后来 LangGraph 做的事情本质就是把这个 while 和里面的 if 变成可画、可存、可恢复的图第 6 篇。3.2 工具层模型唯一能改变世界的通道工具描述不是注释是接口文档。模型只能靠 description 判断「什么时候用我、什么时候别用我」所以写工具的 description 应该像写产品文案而不是像写函数注释第 4 篇。MCP 解决的是另一个问题接十个系统要写十套适配器接一百个要写一百套。它把 N×M 收敛成 NM第 5 篇。一个判断标准如果一个工具需要模型读三遍说明才会用那不是模型笨是工具设计错了。3.3 记忆三层容器三条搬运规则短期装原话快满了就压缩工作装状态用代码显式读写抗压缩抗崩溃长期装结论带作用域、带时间戳、按需召回第 11 篇。从 harness 的视角看记忆的难点不在「存」在什么时候取、取多少。取多了稀释注意力取少了重犯错误。所以记忆系统的质量不看存了多少条看召回时的命中率。3.4 上下文工程横切在每一层之间窗口是稀缺资源按 token 计费而且每一轮都要重付。给一个能落地的预算系统提示加工具定义别超过 20%历史对话和工具结果占 40%检索与记忆召回占 20%剩下 20% 留给输出和意外。超了就要压缩。压缩不是把全文摘要一遍是保留决策和结论丢掉原始过程——「决定用方案 B因为 A 在 CI 上会挂」这一句比前面 3000 token 的讨论都值钱。还有一条反直觉的规律Lost in the Middle 那条 U 形曲线说明塞在上下文中间的信息召回率最低第 11 篇。所以重要的东西要放头尾——开头是任务和规则结尾是当前状态和下一步。Skill 的渐进式披露第 9 篇也是同一个道理不是所有东西都该进上下文。3.5 沙箱决定爆炸半径一旦模型能执行代码它就拥有了破坏力第 12 篇。沙箱不是防模型变坏是防「不可预测」。四档隔离、八项检查这里不重复只强调一句沙箱决定 blast radius。有沙箱你可以让它放开跑没沙箱你只能让它什么都别碰。3.6 护栏能用代码拦住的别用提示词劝四个动作权限分级读、写、删、转账、发布越危险人介入越深危险操作确认不可逆的动作让人点一下头输出校验schema、单测、lint、类型检查——用确定性的东西校验概率性的输出成本上限单任务 token、单用户日总额、最大循环次数。再加两样常被忘的超时防挂死审计防说不清。原则一句话提示词是建议代码是物理定律。你在提示里写十遍「不要删生产库」不如在工具层把那个函数直接拿掉。3.7 编排单 agent 撞墙之后再拆单 agent 迟早撞上四堵墙上下文、工具数量、职责混杂、定位模糊第 7 篇。拆开以后每个子 agent 只带自己那几份材料token 能从十几万降到几万。跨组织就靠 A2A一张 AgentCard、一个 Task 状态机、一套 JSON-RPC 报文给 agent 之间定了套 HTTP第 8 篇。它和 MCP 是一横一纵不冲突。但请记住顺序能单 agent 解决就别拆拆是成本不是成就。3.8 知识注入三种知识三个容器装错容器是最常见的浪费事实文档、制度、API 手册→ RAG。检索得到就行第 2 篇方法这类活该怎么干→ Skill。检索得到但执行不了就该用 Skill第 9 篇规矩这个项目里怎么干→ AGENTS.md。每个仓库一份进版本库可 review第 10 篇。把方法塞进 RAG你会得到一堆「说得对但做不对」的回答把项目规矩塞进系统提示你会得到每个项目复制一遍的噩梦。四、把七个模块装进一百行概念讲完看代码。下面这段是能跑的最小骨架七个模块都在里面# harness.py —— 最小可用 Agent Harness约 100 行 import json, time from dataclasses import dataclass, field from typing import Callable # ---------- 护栏权限分级与预算 ---------- LEVEL {read: 0, write: 1, danger: 2} # 0 自动1 记日志2 要人确认 dataclass class Budget: max_steps: int 30 max_tokens: int 200_000 max_seconds: int 600 used: int 0 started: float field(default_factorytime.time) def spend(self, n: int): self.used n if self.used self.max_tokens: raise RuntimeError(token 预算耗尽) if time.time() - self.started self.max_seconds: raise RuntimeError(时间预算耗尽) def guard(tool, args) - bool: 危险操作必须人来点头 if LEVEL[tool.level] LEVEL[danger]: return True print(f[需确认] {tool.name} {args}) return input(执行(y/N) ).strip().lower() y # ---------- 工具层schema、执行、错误收敛 ---------- dataclass class Tool: name: str desc: str # 写给模型看的决定它什么时候用你 schema: dict level: str # read / write / danger run: Callable # 真正干活跑在沙箱里 TOOLS {t.name: t for t in [read_file, write_file, run_tests, shell]} # 实现从略 # ---------- 记忆短期 / 工作 / 长期 ---------- class Memory: def __init__(self): self.messages [] # 短期原始对话 self.state {} # 工作显式状态抗压缩 self.long_term [] # 长期结论带 scope def checkpoint(self, pathrun.json): json.dump({messages: self.messages[-20:], state: self.state}, open(path, w), ensure_asciiFalse) # 崩了能续 def recall(self, query, k3): # 生产环境换成向量 关键词双路召回第 11 篇 return [m for m in self.long_term if query in m[text]][:k] # ---------- 上下文工程按预算装配 ---------- def build_context(task, mem, tools): rules open(AGENTS.md).read()[:4000] # 规矩放头部 tool_doc \n.join(f- {t.name}: {t.desc} for t in tools.values()) recalled [{role: system, content: f相关记忆{m[text]}} for m in mem.recall(task)] # 长期记忆按需 return [ {role: system, content: f{rules}\n\n可用工具\n{tool_doc}}, *recalled, *mem.messages[-12:], # 最近历史靠尾部 {role: user, content: task}, ] # ---------- 主循环思考、行动、观察 ---------- def run(task, model): mem, budget, trace Memory(), Budget(), [] for step in range(budget.max_steps): resp model.chat(build_context(task, mem, TOOLS), tools[t.schema for t in TOOLS.values()]) budget.spend(resp.usage.total_tokens) if not resp.tool_calls: # 终止模型说完了 mem.long_term.append({text: resp.content[:500], scope: task}) break for call in resp.tool_calls: tool TOOLS[call.name] if not guard(tool, call.args): # 护栏人否决 mem.messages.append({role: tool, content: 用户拒绝执行}) continue try: result tool.run(**call.args) # 沙箱里执行 except Exception as e: result f工具失败{type(e).__name__}: {e} # 失败也要回填 result str(result)[:8000] # 截断别撑爆窗口 trace.append({step: step, tool: call.name, args: call.args, result: result[:200]}) mem.messages.append({role: tool, content: result}) mem.checkpoint() # 每步存档 else: trace.append({step: budget, note: 步数用完交还给人}) print(json.dumps(trace, ensure_asciiFalse, indent2)) # 仪表盘 return mem.state一百行里最值钱的是四行if not resp.tool_calls—— 终止条件。没有它就是 AutoGPTresult[:8000]—— 截断。没有它第 5 步一个ls -R就能撑爆窗口guard()—— 人审。没有它就是删库那次事故mem.checkpoint()—— 可恢复。没有它跑 40 分钟崩在第 39 步全部重来。其余部分都是在给这四行铺路。你手写过一遍再看任何框架都知道它在哪一层加东西LangGraph 给它加了图和持久化第 6 篇Claude Code 给它加了终端交互和权限 UI云厂商把它做成了两次 API 调用。五、核心论点模型决定下限Harness 决定上限这句话值得拆开看因为它解释了为什么「换个更强的模型」经常没用。模型决定下限单步能力。给它一段代码问「这里有什么问题」能不能看出来——这是模型的事harness 帮不上。Harness 决定上限能连续做多少步而不崩。中间是一道乘法题。单步成功率 p任务需要 n 步端到端就是 p 的 n 次方p 0.95n 20 → 36%p 0.99n 20 → 82%p 0.95n 50 → 7.7%所以长任务不是「难一点」是指数衰减。这也解释了那个老现象demo 个个惊艳产品个个难用——demo 是 3 步产品是 50 步。Harness 在这里有两个杠杆而且都不需要换模型抬高 p上下文干净、工具好用、规则明确。每样都能把 p 从 0.95 抬到 0.98让失败可恢复重试、回滚、检查点、人审。p 没变但一次失败不再等于任务失败。前者把 36% 抬到 55%后者让它变成「八成成功两成停下来问人」。这个差别就是能不能上线的差别。三个具体的倍数效应前面都拆过工具描述重写同一模型选错工具的概率显著下降第 4 篇上下文从 3 万压到 6 千注意力不再被稀释第 9、11 篇开工先读 AGENTS.md少三轮探索第 10 篇。每一件的投入都是一两天收益却常超过一次模型升级。但边界要说清否则这个论点会变成万金油Harness 不能把能力不够的模型救成前沿模型。下限是硬约束8B 就是 8BHarness 不能替代评测。没有 eval改 harness 全靠感觉有 eval改一行提示都能验证一句话模型决定你能做多好harness 决定你能不能稳定做到。最后一层是资产视角可能对团队最重要模型是租的harness 是自己造的。模型每 6 到 12 个月换一次价格还在跌换的时候工具、规则、记忆、护栏绝大部分能留下。真正的护城河不是「我们用了哪个模型」而是「我们这套环境让任何模型进来都能干活」。六、为什么模型越强Harness 反而越重要这是最反直觉的一节。直觉是模型越来越聪明外面那圈脚手架应该越来越薄才对。方向没错——手写的「聪明编排」确实该变薄2024 年那些精心设计的流程分支2026 年的模型一句提示就能覆盖。但 harness 整体不是变薄是变重因为三件事同时发生了。第一动作半径变大。模型弱的时候它最多把话说错模型强的时候它能真的删库、真的发邮件、真的花钱下单。能力越强一次错误的代价越大边界就必须越硬。第二任务长度变长。弱模型只能接 3 步的活你不需要检查点强模型能接 200 步的活第 137 步崩了你必须有存档。任务长度是被模型能力撑开的而管理长度的是 harness。第三人的兜底变少。以前你盯着它一步步点现在你让它跑 40 分钟回来看结果。没人盯着就必须有日志、有校验、有回滚。换个说法模型弱的时候你只需要一个输入框模型强的时候你才需要一整套制度。就像刚入职的实习生你只让他复印文件等他成了能签字的人就需要印章管理、审批流和审计日志——不是因为他变坏了是因为他的动作开始有后果了。行业侧的证据也很直接2026 年 4 月AWS 把 harness 做成了托管能力AgentCore harness6 月正式可用两次 API 调用就能定义一个 agent沙箱、记忆、身份、可观测性全归平台。当云厂商开始卖 harness说明它已经是标准件不再是手艺。OpenAI 那边流传最广的一句话则是Agents arent hard; the Harness is hard.另一个数字可作参照2026 年多份报告估计企业 agent 真正进入生产的比例在 5% 到 12% 之间。死在 demo 到生产路上的那些绝大多数不是模型不行。由此得出一条给工程团队的方法论harness 要薄、要可换、要与模型无关。判断标准很土但很好用——换一个模型你需要改几行改得越少harness 越健康。七、五年回望五个阶段把十三篇连起来看这五年其实是五个阶段每个阶段解决一个卡点也留下一种资产。阶段一2022 到 2023Prompt 时代。卡点是「模型不听话」资产是话术。ChatGPT 让自然语言成了编程接口Few-shot 和思维链教会大家怎么问第 1 篇。阶段二2023 到 2024工具时代。卡点是「不知道、也做不到」资产是适配器。RAG 让模型开卷考试Function Calling 让意图和执行分离Tool 给了它手脚第 2、3、4 篇。阶段三2024 到 2025协议时代。卡点是「接得太贵、连不起来」资产是标准接口。MCP 统一工具层A2A 打通 agent 之间AGENTS.md 和 Skill 把规矩和方法也变成了可分发的东西第 5、8、9、10 篇。阶段四2025编排时代。卡点是「单 agent 撞墙」资产是图与状态。LangGraph 把循环画成图Orchestrator 把任务拆开第 6、7 篇。阶段五2025 到 2026系统化时代。卡点是「不稳定、不敢上生产」资产是 harness 本身。记忆、沙箱、护栏、可观测性从高级功能变成基础设施第 11、12 篇和本篇。一条主线贯穿这五步人的工作从优化输入到扩展能力到标准化连接到组织协作最后到设计环境。每一步都把上一层的经验固化成基础设施再把人的注意力往上推一层。完整时间线时间事件阶段本系列2022.10LangChain 开源链式编排出现一、Prompt第 1 篇2022.11ChatGPT 发布自然语言成为编程接口一、Prompt第 1 篇2023.03AutoGPT 爆火又退潮第一波 agent 泡沫一、Prompt第 3 篇2023.06OpenAI 推出 Function Calling二、工具第 3 篇2023 下半年RAG 成为企业落地 LLM 的第一选择二、工具第 2 篇2024.10LangGraph 开源把循环画成图四、编排第 6 篇2024.11Anthropic 发布 MCP三、协议第 5 篇2025.04Google 发布 A2Aagent 之间开始互通三、协议第 8 篇2025.06A2A 捐赠给 Linux 基金会三、协议第 8 篇2025.08AGENTS.md 随 Codex 进入代码仓库三、协议第 10 篇2025.10Agent Skills 发布方法可以打包分发三、协议第 9 篇2025.10LangGraph 1.0 发布编排框架进入稳定期四、编排第 6 篇2025.12MCP 捐赠 AAIF协议走向中立三、协议第 5 篇2026.02Harness 被正式命名Hashimoto 博文与 OpenAI 报告五、系统化第 13 篇2026.03A2A v1.0 发布150 多个组织采用三、协议第 8 篇2026.06AWS AgentCore harness 正式可用harness 成为托管标准件五、系统化第 13 篇八、给开发者的行动建议前面都是认知。这一节是动作按优先级排。8.1 学习顺序从下往上别跳顺序学什么为什么放在这一层投入第 0 层Prompt加手写一个 while 循环不引框架所有框架都是它的变体一个周末第 1 层工具设计、上下文预算、一层文件记忆决定 80% 的使用体验两周第 2 层护栏权限、确认、预算、审计加 Docker 沙箱决定敢不敢上生产一个月第 3 层多 agent 编排、MCP、A2A撞墙之后再上按需8.2 小团队和个人最值得先做的三件事第一件用 200 行裸循环跑通 3 个真实工具。不引任何框架就while加requests加subprocess。验收标准能读文件、能跑测试、能根据测试输出改代码完成一个真实的小任务。做完这一步你再看 LangGraph 的文档会突然变简单因为你知道它在包装什么。第二件把工具描述当产品文案写。写清四件事什么时候用、什么时候别用、返回什么格式、失败长什么样。验收标准拿 5 个真实需求去测模型第一次就选对工具的比例超过 80%。这是投入产出比最高的一件事——改几行字可能顶一次模型升级。第三件加三道最便宜的护栏。危险操作白名单删除、发布、转账必须先问人、单任务 token 上限、全链路 trace每一步的输入、工具、参数、结果、耗时。一天工作量。验收标准故意让它删一个重要文件它会停下来问你任务跑飞了你能从 trace 里指出第几步开始错。这三件事有个共同点都不用换模型都不用买服务当天就能动手。8.3 看起来重要、其实可以先跳过的多 agent 编排。单 agent 加好工具能覆盖大部分场景。先撞墙上下文爆、职责混再拆否则只是把一个问题拆成五个问题复杂 RAG。「它不懂这个项目」这类问题AGENTS.md 加目录树加 grep 往往比向量库更准而且可解释。向量库留给文档量真大、查询语义真模糊的场景自建 MCP server。先用官方和社区现成的等同一类集成的需求出现三次再自己写微调。永远是最后一步格式话术用 Prompt知识问题用 RAG能力问题才考虑微调。8.4 未来一到两年值得关注上下文从「截断」走向「换页」。虚拟上下文、按需换入换出像操作系统管内存一样管窗口记忆的标准化与可迁移。现在记忆锁在各家产品里接下来会出现「跟着人走」的记忆格式评测成为 harness 的一等公民。没有 eval 的 harness 无法迭代趋势是把线上 trace 直接变成测试用例agent 自己的身份与权限。最小权限、可审计的委托链、agent 专用的 OAuth——这块现在最原始也最容易出事故长任务的可恢复性与成本工程。检查点、人审节点、断点续跑会成为默认配置模型级联与按任务分配推理预算会成为常规优化项。九、结语这场变革的本质十三篇走完如果只留一句话AI 工程的重心从「怎么让模型说得好」移到了「怎么让系统做得成」。这句话背后是五次重心的平移优化输入、扩展能力、标准化连接、组织协作最后到设计环境。每一层都把上一层的经验沉淀成基础设施再把人的注意力往上推一层。所以「模型会越来越强harness 会不会不重要」这个问题答案正好相反。模型越强它替你把「想」做得越好剩下的全是「做」的工程而「做」的工程永远需要人来定边界。给这个系列收个尾。十二个零件一句话各归其位Prompt 是话说清楚RAG 是资料递对Function Calling 是意图与执行分离Tool 是手脚MCP 是接口LangGraph 是循环的图纸Orchestrator 是分工A2A 是跨公司的握手Skill 是方法AGENTS.md 是规矩Memory 是记性Sandbox 是边界。而 Harness是让这十二样同时成立的那个整体。最后留一个问题建议每个做 agent 的人都答一遍如果让它自己跑 40 分钟最坏情况下它能弄坏什么答得出来你就可以放心地让它跑得更久。答不出来先把护栏补上再谈能力。能力决定它能做什么边界决定你敢让它做什么。用户真正放心把活交出去的那一刻通常不是模型变聪明了而是他知道——最坏的情况有上限。参考资料Mitchell Hashimoto,My AI Adoption Journey2026 年 2 月harness engineering 的命名出处My AI Adoption Journey – Mitchell HashimotoOpenAI,Harness engineering: leveraging Codex in an agent-first world2026 年 2 月Amazon Web Services,Amazon Bedrock AgentCore harness is now generally availableAmazon Bedrock AgentCore harness is now generally available: Go from idea to production-grade agent in minutes | Artificial IntelligenceBirgitta Böckeler / Martin Fowler, 关于 harness engineering 的评述2026 年 2 月Anthropic,Building effective agents2024 年 12 月Building Effective AI Agents \ AnthropicAnthropic,Effective context engineering for AI agentsEffective context engineering for AI agents \ AnthropicLiu et al.,Lost in the Middle: How Language Models Use Long ContextsTACL 2024[2307.03172] Lost in the Middle: How Language Models Use Long ContextsLangChain, Terminal Bench 2.0 上的 harness 改进实验记录2026 年初文中数据以各家公开材料为准会随版本更新。