{"type":"doc","content":[{"type":"paragraph","attrs":{"id":"cadae94c-0cc9-414e-8a26-fc9a376d7bdf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"rgb(119, 119, 119)","background":""}},{"type":"bold"}],"text":"一句话摘要:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"rgb(119, 119, 119)","background":""}}],"text":" 模型提供智能,Harness 让智能变得有用。如果你不是模型本身,那你就是 Harness 的一部分。"}]},{"type":"paragraph","attrs":{"id":"51801b64-9e2f-4c06-ba88-2235741dd9fe","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"2025 年底,一位创业者在社交媒体上发了一条动态,迅速引爆了技术圈的讨论——"}]},{"type":"blockquote","attrs":{"id":"56ad4eab-0324-4c9b-8182-c18ec2579773","textAlign":"inherit","isHoverDragHandle":false},"content":[{"type":"paragraph","attrs":{"id":"e515135f-6212-4efa-8e2e-950b50977055","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"\"我花了三个月调 Prompt,模型回答质量提升了 20%。然后我花了两周搭 Harness,整体任务完成率从 35% 飙到了 82%。\""}]}]},{"type":"paragraph","attrs":{"id":"d85e5e45-6f8d-4923-ab7a-35c276d755e5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这条动态下面,点赞最高的评论只有四个字:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"方向错了。"}]},{"type":"paragraph","attrs":{"id":"104488b4-f28f-41a8-b9d3-e8a679317a59","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"过去两年,几乎整个行业都在追逐更大的模型、更强的推理能力、更长的上下文窗口。从 GPT-4 到 Claude 3.5,从 Gemini Ultra 到 DeepSeek-V3,参数规模一路狂飙,基准测试分数不断刷新。每一次新模型发布,社交媒体上都会涌现一波\"AGI 要来了\"的狂欢。"}]},{"type":"paragraph","attrs":{"id":"da654c85-ebb7-4505-8a8c-9c55e4f0f121","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"但一个令人尴尬的事实是:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"绝大多数真实业务场景中,用户并没有感受到与基准分数相匹配的能力提升。"}]},{"type":"paragraph","attrs":{"id":"98a77cbc-6f73-4c44-89d4-46834ed4586b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"为什么?因为大家盯错了地方。"}]},{"type":"paragraph","attrs":{"id":"f2423d27-2030-4ee3-80ae-9ded6b51a290","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型就像一颗强大的引擎,但引擎本身不是汽车。一颗裸露的引擎放在地上,它不能载人,不能转向,不能刹车,甚至不能自己启动。你需要底盘、变速箱、方向盘、仪表盘、油路系统……这一整套让引擎\"变得有用\"的东西,在 AI Agent 的世界里,有一个越来越被重视的名字——"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Harness"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"c927be2f-7d61-4eb1-8140-3ca53bfb5c05","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Agent = Model + Harness。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 模型提供智能,Harness 让智能变得有用。"}]},{"type":"paragraph","attrs":{"id":"758cd84f-d367-4d44-a9ee-0de32c24cb2b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这不是一个新概念,但它正在成为 2026 年 AI 工程领域最核心的共识。本文将从\"裸模型的四个硬伤\"出发,逐一拆解 Harness 的六大组件——文件系统、Bash + 沙箱、记忆(AGENTS.md)、Web Search + MCP、上下文工程、编排 + Hooks——带你看清 AI Agent 真正的竞争壁垒,不在模型层,而在 Harness 层。"}]},{"type":"paragraph","attrs":{"id":"5165e6da-56f3-40d0-a9b3-14d5b1a300d6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"读完这篇文章,你将重新理解一件事:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"你写的每一行 System Prompt、搭的每一个工具链、设计的每一套编排逻辑,都是在构建 Harness。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 如果你不是模型本身,那你就是 Harness 的一部分。"}]},{"type":"horizontalRule","attrs":{"id":"6f212cd6-f3bd-4895-9f92-006439958971","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"20b5cde0-cca6-4a78-bc42-99a45ab5c68c","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"一、Agent = Model + Harness:一个被忽视太久的公式"}]},{"type":"paragraph","attrs":{"id":"d8a0c80c-ab73-4c8f-8532-89ff1bc4167c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在正式拆解 Harness 之前,我们需要先厘清一个最基础的认知框架。"}]},{"type":"heading","attrs":{"id":"8a00b42d-0f1c-4c3f-b404-8b6eae8eb53a","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"什么是 Agent?"}]},{"type":"paragraph","attrs":{"id":"58f672a5-95cc-473c-b0e2-69d7449e051d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"\"Agent\"这个词在 2024 年被用滥了。每一个能调用 API 的聊天机器人都自称 Agent,每一个加了 RAG 的问答系统都宣称自己是 Agent。但如果我们回到最朴素的定义——"}]},{"type":"paragraph","attrs":{"id":"aa5e837c-a019-4720-bede-7604575d45de","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Agent 是一个能够自主感知环境、做出决策、执行行动并从结果中学习的智能体。"}]},{"type":"paragraph","attrs":{"id":"55f6a63c-f41f-494e-a8c5-336eae34fb38","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"注意这里的四个关键动词:感知、决策、执行、学习。裸模型能做到哪个?严格来说,它只能做\"决策\"这一步——给定输入,产出输出。它不能主动感知外部世界(没有眼睛和耳朵),不能真正执行行动(没有手和脚),更不能持久化地学习(没有长期记忆)。"}]},{"type":"paragraph","attrs":{"id":"9fc31b15-4a84-4514-b580-461d73e2aef8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"所以,一个真正的 Agent 必须是这样的结构:"}]},{"type":"paragraph","attrs":{"id":"8d63a445-f773-4965-b42d-c14fcb091b5f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Agent = Model + Harness"}]},{"type":"paragraph","attrs":{"id":"be9a81a7-d1ca-43a8-a872-6bc23299cd26","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Model 是大脑,负责\"想\"。Harness 是大脑之外的一切——感官系统、运动系统、记忆系统、能量系统——负责让\"想\"变成\"做\"。"}]},{"type":"heading","attrs":{"id":"33565731-9621-482a-8711-33169b6a60b0","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Harness 到底是什么?"}]},{"type":"paragraph","attrs":{"id":"5a76d1dd-42bb-4242-9c9b-2c65585af06f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Harness 这个词的英文原意是\"挽具\",就是套在马身上、让马的力量转化为拉车动力的那套装备。类比非常精准:模型是马,Harness 是挽具,Agent 是马+挽具+车的整体系统。"}]},{"type":"paragraph","attrs":{"id":"55480f87-4f04-4fed-a2ca-88dc7df23fb6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"更技术化地说,"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Harness 是模型之外的一切工程基础设施"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。它包括但不限于:"}]},{"type":"bulletList","attrs":{"id":"2f66b5dc-857a-4ef3-a57f-765a0111832c","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"c0775f54-103f-4cd1-9a4f-e2d12a485ff9"},"content":[{"type":"paragraph","attrs":{"id":"e8449a83-8c71-4d01-a645-9100770691ec","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型如何接收输入(上下文构建)"}]}]},{"type":"listItem","attrs":{"id":"4d601e3b-96ee-4eb3-8428-d1f000996049"},"content":[{"type":"paragraph","attrs":{"id":"0f3c8930-a27b-4904-8555-99f8c5ee334e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型的输出如何被解析和执行(工具调用、代码执行)"}]}]},{"type":"listItem","attrs":{"id":"1cbf1f65-9b00-470e-889f-94d83f1697af"},"content":[{"type":"paragraph","attrs":{"id":"c1333b2a-89b7-4c65-ab76-024599bb3ceb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型如何获取外部信息(搜索、API)"}]}]},{"type":"listItem","attrs":{"id":"50871e98-f788-4644-acb9-2d042f449c55"},"content":[{"type":"paragraph","attrs":{"id":"0d2830d3-dd57-466e-ab7e-ce2a52b0d83b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型如何记住之前发生的事(记忆机制)"}]}]},{"type":"listItem","attrs":{"id":"f8f7dafa-ff6c-458d-a951-523ceb867f5a"},"content":[{"type":"paragraph","attrs":{"id":"609f23e5-6d49-4c4d-80f5-355311932a29","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型如何与其他模型或子系统协作(编排)"}]}]},{"type":"listItem","attrs":{"id":"5d47c4cd-f4a5-4e34-8307-d2df18b00531"},"content":[{"type":"paragraph","attrs":{"id":"7b84c620-af4d-4779-806f-1e70e403eb65","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"以及贯穿所有环节的安全、格式、质量约束(Hooks)"}]}]}]},{"type":"paragraph","attrs":{"id":"0d232a98-2ba7-4926-90fc-affd25f3444a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Harness 不是一个单一的组件,而是一个"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"系统"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。这也是为什么搭建一个真正好用的 Agent 如此之难——你不是在调一个参数,你是在设计一整套工程架构。"}]},{"type":"paragraph","attrs":{"id":"4bc6d439-a279-40cd-afba-5038fe4b93d7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"下面这张架构图展示了 Model 与 Harness 的关系,以及 Harness 内部六大组件的整体布局:"}]},{"type":"image","attrs":{"id":"a054cb14-6914-4a0f-b3d4-e3d9aa6eb2bb","src":"https://developer.qcloudimg.com/http-save/audit-7660620/b240760d9dedbd79d498f3657e0d11cd.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"1.791667","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"paragraph","attrs":{"id":"37cd5030-f0c1-4e60-b124-5d3c736cbf5a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这张图传达了三个关键信息:第一,Model 处于中心,但它被 Harness 包围和支撑;第二,六大组件各司其职,但彼此协同;第三,System Prompt 贯穿所有组件,它是 Harness 的\"神经系统\"。"}]},{"type":"horizontalRule","attrs":{"id":"41dad937-2b57-4577-911e-40d657995f45","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"7458fa66-5f65-4718-b03b-2ebce62a76e8","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"二、裸模型的四个硬伤:为什么光有聪明的大脑远远不够"}]},{"type":"paragraph","attrs":{"id":"56ff2e23-3e13-470e-8b0a-90db7338c2bb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"要理解 Harness 的价值,我们必须先直面一个残酷的现实:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"裸模型(Raw Model)有四个致命的硬伤。"}]},{"type":"paragraph","attrs":{"id":"ff45c2e8-a708-40da-9602-ee95d6b8285d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"所谓\"裸模型\",就是没有任何外部工具、没有文件系统、没有搜索能力、没有持久化记忆的纯粹大语言模型。你可以把它想象成一个被关在密闭房间里的天才——智商极高,但看不见外面的世界,记不住昨天的对话,说了话也没人去执行。"}]},{"type":"heading","attrs":{"id":"46137210-f7df-4667-b984-f5c24a359d7e","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"硬伤一:无法维持跨会话状态"}]},{"type":"paragraph","attrs":{"id":"9ad91182-3efb-4a55-9e5b-a329f471d884","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这是最容易被感知的痛点。你跟一个裸模型聊了两个小时,讨论了一个复杂的系统架构,画了流程图,定了技术方案。然后你关掉窗口,第二天回来——它什么都不记得了。"}]},{"type":"paragraph","attrs":{"id":"8af7c72e-6a5f-4d1c-a51d-14d068f5d273","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这不是\"记忆力差\"的问题,这是"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"根本没有记忆机制"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"的问题。裸模型的每一次对话都是一个全新的开始,前一轮的所有上下文在会话结束的瞬间灰飞烟灭。"}]},{"type":"paragraph","attrs":{"id":"b852ecd8-02d8-402a-985f-6fbf813e68cf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"对于简单的问答场景,这无所谓。但对于任何需要持续推进的工作——写一本书、开发一个项目、管理一个流程——这个硬伤是致命的。你需要每次都从头解释背景,每次都重新建立共识,每次都把之前的结论手动灌进去。这不是在用 AI 协作,这是在"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"训练一个每天都失忆的实习生"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"heading","attrs":{"id":"f8790a5d-cfb1-4a23-88aa-4a1c0afb4094","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"硬伤二:无法执行代码"}]},{"type":"paragraph","attrs":{"id":"7f1d0418-4c79-446e-ac48-91eba8934043","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"裸模型可以\"写\"代码,但它不能\"跑\"代码。它可以生成一段 Python 脚本,但它无法验证这段代码是否能正确运行。它可以告诉你算法的时间复杂度,但它不能在真实数据集上跑一遍来证明自己的分析。"}]},{"type":"paragraph","attrs":{"id":"498763f5-befc-4a34-8a46-2a2536d16ea9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这意味着什么?意味着裸模型的代码输出"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"没有自我验证能力"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。它可能写出语法正确但逻辑错误的代码,可能忽略边界条件,可能对库的版本做出错误假设。而这一切错误,只有在人类手动复制粘贴到本地环境运行之后才会暴露。"}]},{"type":"paragraph","attrs":{"id":"c6e8668c-e0d7-4e5f-a772-010db6b248fb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"更深层的问题是:没有代码执行能力,模型就失去了"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"\"写→跑→看→修→再来\"的自我验证循环"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。而这个循环恰恰是优秀程序员最核心的工作方式。一个不能运行自己代码的 AI 编程助手,就像一个只能在纸上画图纸但从来不去工地的建筑师——理论上无懈可击,实践中漏洞百出。"}]},{"type":"heading","attrs":{"id":"0f48c3af-b931-45c7-8d88-72cfc7831f00","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"硬伤三:无法获取实时知识"}]},{"type":"paragraph","attrs":{"id":"b11dac24-bfc3-4f15-99aa-0f7d9a99dc79","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"大语言模型的知识有一个\"截止日期\"。截止日期之后发生的一切——新发布的 API 文档、最新的安全漏洞、上周刚更新的框架版本、今天的新闻——它统统不知道。"}]},{"type":"paragraph","attrs":{"id":"820fe3eb-e5e6-43ba-bbbd-eb09ba6f8ead","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在技术领域,这个问题尤其严重。前端框架半年一个大版本,云服务商每季度更新一次产品线,开源库的 Breaking Change 防不胜防。你问裸模型\"React 19 的 use() Hook 怎么用\",它可能给你一个基于 React 18 的回答,甚至虚构一个根本不存在的 API。"}]},{"type":"paragraph","attrs":{"id":"61b601dd-001f-4941-8665-135e7eedab5c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这就是所谓的\"幻觉\"(Hallucination)的一个重要来源:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"不是模型\"故意\"胡说,而是它的知识库里根本没有正确答案,于是它基于过时信息或模式匹配\"推理\"出了一个看起来合理但实际上错误的答案。"}]},{"type":"heading","attrs":{"id":"f6a37e3d-cefb-40ce-ac52-ea8f463ba937","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"硬伤四:无法搭建工作环境"}]},{"type":"paragraph","attrs":{"id":"51f5bc84-bd3f-41cd-b261-16ffa26aa0f3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"裸模型没有文件系统,没有工作空间,没有项目目录。它不能创建文件,不能组织代码结构,不能管理依赖,不能运行构建工具。"}]},{"type":"paragraph","attrs":{"id":"9ed24100-172f-401f-b399-276805212059","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这意味着它无法完成任何\"工程级\"的任务。写一个单独的函数?可以。搭建一个完整的项目脚手架、配置 CI/CD 流水线、管理多个微服务之间的依赖关系?不可能。"}]},{"type":"paragraph","attrs":{"id":"f7d09fa4-f2f6-4550-a179-139c69c9bb4e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"工程不是写代码,工程是"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"在正确的位置写正确的代码,并确保它与其他代码正确协作"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。没有工作环境,\"工程\"就无从谈起。"}]},{"type":"heading","attrs":{"id":"1f7d14f3-6ffd-4be6-ab90-df4d2d8b544c","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"四个硬伤的本质"}]},{"type":"paragraph","attrs":{"id":"a7a9189f-8921-4658-962e-cc047226586d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"如果你仔细看这四个硬伤,会发现它们恰好对应了一个完整智能体所需的四种基础能力:"}]},{"type":"table","attrs":{"id":"b988e450-c9d9-4eb2-92e0-b2ac4f5f79a5","isHoverDragHandle":false},"content":[{"type":"tableRow","content":[{"type":"tableHeader","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"style":"padding: 6px 13px; font-weight: bold; border-bottom: 0px none currentcolor; border-top-color: rgb(223, 226, 229); border-right-color: rgb(223, 226, 229); border-left-color: rgb(223, 226, 229); border-image: none 100% / 1 / 0 stretch;"},"content":[{"type":"paragraph","attrs":{"id":"57a9ba25-bf53-4ef9-bf9a-5ee456396840","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"硬伤"}]}]},{"type":"tableHeader","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"style":"padding: 6px 13px; font-weight: bold; border-bottom: 0px none currentcolor; border-top-color: rgb(223, 226, 229); border-right-color: rgb(223, 226, 229); border-left-color: rgb(223, 226, 229); border-image: none 100% / 1 / 0 stretch;"},"content":[{"type":"paragraph","attrs":{"id":"f5977584-d181-47c2-ac45-86a1cc608eae","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"缺失的能力"}]}]},{"type":"tableHeader","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"style":"padding: 6px 13px; font-weight: bold; border-bottom: 0px none currentcolor; border-top-color: rgb(223, 226, 229); border-right-color: rgb(223, 226, 229); border-left-color: rgb(223, 226, 229); border-image: none 100% / 1 / 0 stretch;"},"content":[{"type":"paragraph","attrs":{"id":"da56320a-ad57-411a-bf62-d02fab2060eb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Harness 的对应组件"}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"087cb5d0-ebd4-4fc8-b557-beb4a3e63ed1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"无法维持跨会话状态"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"50482b47-1b2a-454c-bdce-9857b35df3bd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"长期记忆"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"cd803124-43f2-4d5e-88b0-96984eb4ebfe","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"文件系统 + 记忆(AGENTS.md)"}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"557c4219-c499-4f76-a351-41bf5deb7be4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"无法执行代码"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"bf638429-4094-4371-a951-6ab8ff919cbc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"行动能力"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"df0aa6c3-4789-4e6d-8d91-b0cf801e6053","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Bash + 沙箱"}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"8372853b-c5bd-44fd-8bea-b20f601a355c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"无法获取实时知识"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"3471aa1a-dc51-4039-844b-de3b0f7d93b8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"感知能力"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"dfe3a883-1a93-4177-bf29-5564ba7eddb8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Web Search + MCP"}]}]}]},{"type":"tableRow","content":[{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"b1b4df74-8504-4790-bcc7-8b7598ed50df","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"无法搭建工作环境"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"2e62812b-fae6-4626-8c8b-570bf0660084","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"环境操控"}]}]},{"type":"tableCell","attrs":{"colspan":1,"rowspan":1,"colwidth":null,"background":null,"color":null,"textAlign":null,"style":"padding: 6px 13px; border-color: rgb(223, 226, 229); min-width: 32px;"},"content":[{"type":"paragraph","attrs":{"id":"3b318bf8-3204-449e-9a48-98ce6ccd2c4d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"文件系统 + 上下文工程 + 编排"}]}]}]}]},{"type":"paragraph","attrs":{"id":"4a358149-70ca-4dc3-924b-d85296d8ce61","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"每一个\"不能\",都是 Harness 里的一个组件。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" Harness 不是锦上添花,它是对裸模型致命缺陷的系统性补救。没有 Harness 的 Model,就像没有身体的大脑——它可以思考,但无法存在于这个世界。"}]},{"type":"horizontalRule","attrs":{"id":"9e797f8c-6c1b-47d2-a4d6-7c1bf5b4b760","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"78adfc18-bdac-4538-a887-62443117bd5d","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"三、组件一:文件系统——最基础的原语"}]},{"type":"paragraph","attrs":{"id":"24c87199-107d-4034-ab0e-406d9ff63a19","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在 Harness 的六大组件中,文件系统排在第一位,不是因为它最炫酷,恰恰相反——它最朴素,也最基础。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"基础到很多人压根没意识到它是一个\"组件\"。"}]},{"type":"paragraph","attrs":{"id":"daec17e5-df40-4cc8-b513-ebde6df4b6d7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"但正是这个最朴素的组件,决定了 Agent 能力的上限。"}]},{"type":"heading","attrs":{"id":"791d349a-6523-4860-a4a9-a3ba4af36361","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"为什么文件系统是\"最基础原语\"?"}]},{"type":"paragraph","attrs":{"id":"eee7b2b4-d83d-49cf-949a-7f8e7e1341d6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"想一想人类程序员是怎么工作的。打开电脑,第一件事是什么?打开 IDE,加载项目目录。所有的代码文件、配置文件、文档、测试用例、构建脚本……都以文件的形式存在于一个结构化的目录树中。"}]},{"type":"paragraph","attrs":{"id":"af8201ba-4aa4-4b36-9306-1f5e7cad47bb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"文件系统是一切工程活动的地基。没有文件系统:"}]},{"type":"bulletList","attrs":{"id":"1fd3b460-9e95-49b5-99ac-a2f1a4b0b7c6","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"bf04ce02-b34e-4413-ae2f-b70b75adc235"},"content":[{"type":"paragraph","attrs":{"id":"52a19f22-b5c9-424b-85fe-0edb534001bd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"代码无处存放"}]}]},{"type":"listItem","attrs":{"id":"484243b4-e7e5-460a-a564-4897883384f2"},"content":[{"type":"paragraph","attrs":{"id":"f13c0696-b582-471c-bea0-4e252e9fc312","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"中间结果无法持久化"}]}]},{"type":"listItem","attrs":{"id":"c414f019-3a56-4f71-a1e1-0416a6d1699b"},"content":[{"type":"paragraph","attrs":{"id":"77e154e8-0f9d-47df-9634-cfdac9cdc3f1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"多步骤任务无法衔接"}]}]},{"type":"listItem","attrs":{"id":"a31deb57-6f06-4244-8862-489e74d99883"},"content":[{"type":"paragraph","attrs":{"id":"04e8158d-9f7e-4b14-a1a4-60132310d387","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"多 Agent 之间无法协作"}]}]}]},{"type":"paragraph","attrs":{"id":"4315b91b-8d39-4124-a213-4cc1927e9167","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"对于 AI Agent 来说,文件系统的意义甚至比对人类更大。因为人类有大脑记忆,可以\"记住\"一些中间状态。但 Agent 的上下文窗口是有限的——即使是 200K token 的上下文,对于一个真实项目来说也远远不够。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"文件系统就是 Agent 的\"外部大脑\",是它突破上下文窗口限制的唯一途径。"}]},{"type":"heading","attrs":{"id":"87603319-4b29-497c-a26e-91abf997790b","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"文件系统的三大核心能力"}]},{"type":"paragraph","attrs":{"id":"0335d49e-519a-43cb-b54b-760e9b95edd9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"第一,工作空间与中间结果存储。"}]},{"type":"paragraph","attrs":{"id":"ae21515d-30d8-4389-9b42-5f1db77bdc4c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Agent 在执行复杂任务时,会产生大量的中间产物——分析报告的草稿、代码的半成品、数据处理的中间结果、与用户确认的决策记录。这些中间产物需要一个地方存放,以便后续步骤引用。"}]},{"type":"paragraph","attrs":{"id":"0142a0da-31e9-4737-8ff7-7be324bfe0d7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"没有文件系统,Agent 必须把所有中间产物都塞进上下文窗口——这既浪费 token,又容易超出上下文长度限制。有了文件系统,Agent 可以把中间产物写入文件,需要时再读取,实现\"按需加载\"。"}]},{"type":"paragraph","attrs":{"id":"17dfc867-04ed-4c2a-8c43-4a81df2c0791","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"第二,Agent 协作的基础。"}]},{"type":"paragraph","attrs":{"id":"ce93ae57-643e-45f8-b6c8-a09cffb10a38","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"当一个任务复杂到需要多个 Agent 协同工作时,文件系统就成了它们之间的\"共享白板\"。Agent A 把分析结果写入文件,Agent B 读取文件并在此基础上继续工作。这种基于文件的异步协作模式,简单、可靠、可追溯。"}]},{"type":"paragraph","attrs":{"id":"0f427c5a-a0a2-4896-90c8-6b9a5d071516","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"第三,版本追踪与错误回滚。"}]},{"type":"paragraph","attrs":{"id":"c2ed2151-0bba-4725-b535-6bca5cf39961","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这一点经常被忽略,但它可能是文件系统最有价值的能力之一。当文件系统与 Git 集成后,Agent 的每一步操作都可以被记录、追溯、回滚。"}]},{"type":"paragraph","attrs":{"id":"949a54fb-bba6-49c9-bfb2-06dccf5b6d55","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"为什么这很重要?因为 Agent 会犯错。它可能在重构代码时引入 Bug,可能在修改配置时破坏了系统。如果没有版本追踪,错误就像雪球一样越滚越大,直到系统彻底崩溃。有了 Git,Agent(或者监督它的人类)可以随时回到之前的\"安全状态\",甚至可以开分支做实验——失败了就丢弃分支,成功了就合并。"}]},{"type":"paragraph","attrs":{"id":"2470a84f-f421-42d7-b217-764920bb86ca","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"以下是文件系统在 Agent 工作流中的角色示意:"}]},{"type":"image","attrs":{"id":"bf8c9b14-df32-47c8-a206-2418db23cfa6","src":"https://developer.qcloudimg.com/http-save/audit-7660620/4006513e23186a9711c9eb74024e7ab4.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"1.833333","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"paragraph","attrs":{"id":"b1a5d0c4-bd35-4d88-8aaf-e1d3d294cd31","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这里有一个关键洞察:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"文件系统 + Git 给了 Agent \"试错\"的能力。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 没有这个能力,Agent 只能小心翼翼地一步步走,不敢冒险。有了这个能力,Agent 可以大胆尝试——反正随时可以回滚。这极大地释放了模型的创造力。"}]},{"type":"heading","attrs":{"id":"77e5dd48-58c1-45ae-a9ae-d25aaf51f88c","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"文件系统的设计原则"}]},{"type":"paragraph","attrs":{"id":"f1a12487-652c-423f-a774-39758a4a4588","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在实际工程中,为 Agent 设计文件系统需要注意几个原则:"}]},{"type":"paragraph","attrs":{"id":"8f6a47b3-1679-42b7-81fb-02c9570227d6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"目录结构要清晰且约定俗成。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" Agent 不擅长处理混乱的文件组织。使用标准化的目录结构(如前端项目的 src/components、src/utils 约定)能显著降低 Agent 的认知负担。"}]},{"type":"paragraph","attrs":{"id":"59e0ae32-6b7a-4722-b077-fbf6bb1fc382","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"文件粒度要适中。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 太大的文件(几千行代码)会超出 Agent 的处理能力;太小的文件(每个函数一个文件)会增加文件管理的复杂度。一般来说,一个文件对应一个\"模块\"或\"职责单元\"是比较好的粒度。"}]},{"type":"paragraph","attrs":{"id":"04e62fe9-683a-47ab-9cc9-3cdd510ffaae","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"元数据要丰富。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 文件名要有意义,目录要有 README,关键决策要有 ADR(Architecture Decision Records)。这些元数据是 Agent 理解\"为什么这样组织\"的线索。"}]},{"type":"horizontalRule","attrs":{"id":"32fe4201-4880-4090-a572-a6ca73f28ee9","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"3bc1fdc4-f8a7-4e4d-8c45-90a7081de449","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"四、组件二:Bash + 沙箱——让 Agent 从\"说\"到\"做\""}]},{"type":"paragraph","attrs":{"id":"0aa11c88-9733-47b7-b0b8-c257d970a16b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"如果说文件系统给了 Agent 一个\"工作台\",那么 Bash + 沙箱就给了它一双\"手\"。"}]},{"type":"heading","attrs":{"id":"e57fdc86-0c58-4efe-a1b7-87d504e8db05","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"从\"生成代码\"到\"执行代码\"的质变"}]},{"type":"paragraph","attrs":{"id":"318910e3-007a-48fc-8b06-1dc34aa0ab53","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"裸模型只能生成代码文本。但文本不是程序——"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"程序是被执行的文本"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。在\"生成\"和\"执行\"之间,存在一条巨大的鸿沟。"}]},{"type":"paragraph","attrs":{"id":"d33856ab-122f-4d1c-abac-c68e6e86bab9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"一个终端(Bash)环境意味着 Agent 可以:"}]},{"type":"bulletList","attrs":{"id":"3fab163e-1025-4180-b9d6-62eaa017ba2d","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"8c0190f5-ab58-4cc5-bfdd-43ebe0d9da6c"},"content":[{"type":"paragraph","attrs":{"id":"d8ee6863-eb0d-4ce8-86f0-0c6b9776b8c0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"运行它自己写的代码"}]}]},{"type":"listItem","attrs":{"id":"5e448ce4-8383-4059-a412-0ffb8f1a7450"},"content":[{"type":"paragraph","attrs":{"id":"ec74dc94-1d12-4daa-8ab8-4c7187f3beab","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"安装依赖包"}]}]},{"type":"listItem","attrs":{"id":"8a4feba1-91f9-4d14-83e6-bfc0b0bc4e82"},"content":[{"type":"paragraph","attrs":{"id":"dbfb3a25-88fd-48f0-a06c-2e54b87dacf1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"执行构建命令"}]}]},{"type":"listItem","attrs":{"id":"67020681-981d-47ad-939e-cb02a86a5f98"},"content":[{"type":"paragraph","attrs":{"id":"607e2848-5d5c-41c2-8853-fa2846389dc0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"运行测试套件"}]}]},{"type":"listItem","attrs":{"id":"53a560d0-bcb6-4612-a6b1-138aca2a4712"},"content":[{"type":"paragraph","attrs":{"id":"0ae41b17-c381-4e7c-8c61-2eabc6e0c57e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"查看运行时错误并调试"}]}]}]},{"type":"paragraph","attrs":{"id":"36cb4b4d-13cb-4639-b552-47b4e93905f6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这从根本上改变了 Agent 的工作模式。没有 Bash,Agent 是一个\"提建议\"的顾问;有了 Bash,Agent 是一个\"动手做\"的工程师。"}]},{"type":"heading","attrs":{"id":"c5532f51-b74c-469e-aa51-e5bcf47ac94c","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"自我验证循环:写→跑→看→修→再来"}]},{"type":"paragraph","attrs":{"id":"97c43b12-752d-4fad-9d20-5530aff286e5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这是 Bash 赋予 Agent 的最核心能力——"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"自我验证循环"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"image","attrs":{"id":"f5bb2a40-9a13-4e5f-aa13-95f940294e0a","src":"https://developer.qcloudimg.com/http-save/audit-7660620/479d04c230f2cee8e40800788ca44153.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"2.357143","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"paragraph","attrs":{"id":"c90e6504-1349-4707-b6ba-ea7f56a77328","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false}},{"type":"paragraph","attrs":{"id":"71810183-9b5a-497d-966d-e2d04aeef122","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这个循环看起来简单,但它的意义是革命性的。没有这个循环,Agent 的输出质量完全依赖于模型的\"一次性生成\"能力——模型推理正确就对了,推理错误就全错。有了这个循环,Agent 拥有了"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"自我纠错能力"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":",它可以从自己的错误中学习(至少在单次会话内)。"}]},{"type":"paragraph","attrs":{"id":"90d57dfc-32e8-4835-8f7b-1b811ec62736","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"实际测试数据表明:在编程任务中,具备自我验证循环的 Agent 的任务完成率比\"一次性生成\"的方式高出 40%–60%。这个差距不是来自更好的模型,而完全来自 Harness 层的 Bash 能力。"}]},{"type":"heading","attrs":{"id":"f23b9b65-12fd-40b7-8d37-71aaa18f8cae","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"为什么必须是\"沙箱\"?"}]},{"type":"paragraph","attrs":{"id":"0a711ee4-5944-48b2-91dd-2b8a143e880a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"有了 Bash 就够了吗?不,还需要"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"安全隔离"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"195c42db-09ae-4684-9703-6e66433bc3c8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Agent 执行的代码不一定是安全的。它可能无意中执行了 "},{"type":"text","marks":[{"type":"code"}],"text":"rm -rf /"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":",可能下载了恶意包,可能发起了未授权的网络请求。如果 Agent 的代码执行环境是宿主机本身,后果不堪设想。"}]},{"type":"paragraph","attrs":{"id":"de2ca9ec-2742-4c79-81fd-bda6947b9c39","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"沙箱(Sandbox)提供了一个隔离的执行环境:"}]},{"type":"paragraph","attrs":{"id":"e4b9879f-5a5a-4822-b6f0-29ebdea68f60","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"资源限制:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" CPU、内存、磁盘空间都有上限,防止死循环或内存泄漏拖垮系统。"}]},{"type":"paragraph","attrs":{"id":"56c1f845-d269-419d-9f5c-add5cd18d239","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"网络隔离:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 默认禁止外部网络访问,或只允许白名单内的地址,防止数据泄露或恶意攻击。"}]},{"type":"paragraph","attrs":{"id":"77537f4e-6262-4707-95dc-47ba0e14ad97","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"文件系统隔离:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" Agent 只能访问自己的工作目录,不能接触宿主机的敏感文件。"}]},{"type":"paragraph","attrs":{"id":"7e33fbdd-01a7-47aa-8ae6-9c989c5fc8ae","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"超时机制:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 执行时间超过阈值自动终止,防止资源被长期占用。"}]},{"type":"paragraph","attrs":{"id":"faaf1cf9-ed44-414d-9c57-a8484f88e1fa","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"沙箱不是一个可选的\"安全加固措施\",它是 Bash 能力的"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"必要前提"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。没有沙箱,你不敢让 Agent 执行代码;不敢让 Agent 执行代码,Agent 就失去了自我验证能力;失去了自我验证能力,Agent 的输出质量就会大打折扣。"}]},{"type":"heading","attrs":{"id":"4581a1cf-df76-4d66-bc48-c4bb4c0ce201","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"沙箱技术的选择"}]},{"type":"paragraph","attrs":{"id":"c540eefa-967e-4e4e-a7db-5870614ef09b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在工程实践中,常见的沙箱方案包括:"}]},{"type":"paragraph","attrs":{"id":"c85bcb29-a7e6-43bf-b665-2bcae859292e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Docker 容器:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 最主流的方案,隔离性好,生态成熟,镜像管理方便。大多数 Agent 框架(如 Devin、OpenHands)都采用 Docker 作为沙箱。"}]},{"type":"paragraph","attrs":{"id":"92da40a1-b2e2-408b-9edf-708043a5396d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"gVisor / Firecracker:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 更轻量的虚拟化方案,启动速度快(毫秒级),适合需要频繁创建/销毁沙箱的场景。"}]},{"type":"paragraph","attrs":{"id":"681059b9-2559-4f3e-a358-965027a2d385","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"WebAssembly(WASM):"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 在浏览器端或边缘计算场景中有潜力,但目前对系统调用的支持还不够完善。"}]},{"type":"paragraph","attrs":{"id":"fe8af883-0f6b-4dca-8a15-9cfc94bed341","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Nix / 纯函数式环境:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 通过声明式的环境定义,确保每次执行的环境完全一致,杜绝\"在我机器上能跑\"的问题。"}]},{"type":"paragraph","attrs":{"id":"2317760a-4d48-4bfb-aa2d-6740a94a6b7d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"选择哪种方案取决于你的具体需求,但核心原则只有一条:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"在保证安全的前提下,给 Agent 尽可能大的自由度。"}]},{"type":"horizontalRule","attrs":{"id":"586e0b84-d9f5-42c9-98ce-c2c9e38764d9","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"b4304d43-ab5b-4ee9-8292-2c1d580c4137","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"五、组件三:记忆(AGENTS.md)——不改权重也能给模型加知识"}]},{"type":"paragraph","attrs":{"id":"130a3598-2dd0-4f28-8e98-ec816223535c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这是 Harness 六大组件中最容易被低估,但可能最具长期价值的一个。"}]},{"type":"heading","attrs":{"id":"7f7d935a-11a0-4f72-b767-c0429e2e3513","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型的\"失忆症\""}]},{"type":"paragraph","attrs":{"id":"61436682-a043-409c-9a8c-67e4fa8a0087","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"我们在前文讨论过,裸模型无法维持跨会话状态。每次对话结束,所有的上下文都会消失。但在真实的工作场景中,Agent 需要\"记住\"大量信息:"}]},{"type":"bulletList","attrs":{"id":"2ba0ac25-ad9f-48f7-9cf0-663cccc8f21c","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"f1380501-1679-46d8-bbe5-7f546834e38b"},"content":[{"type":"paragraph","attrs":{"id":"d37ab9a2-a2ac-4c7b-a841-51b271b34370","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"项目的技术栈和架构决策"}]}]},{"type":"listItem","attrs":{"id":"4e1f289a-ebb7-45eb-b7fd-4a2b700cc368"},"content":[{"type":"paragraph","attrs":{"id":"fbaf7f57-83e4-49f6-a2cf-14f011c2b947","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"用户的偏好和工作习惯"}]}]},{"type":"listItem","attrs":{"id":"27aefd20-247a-4730-a193-5dc573422ed7"},"content":[{"type":"paragraph","attrs":{"id":"6689fc80-9da4-4b68-afd8-a246b448aaf6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"之前犯过的错误和学到的教训"}]}]},{"type":"listItem","attrs":{"id":"ec73a622-97ec-4f2e-b331-4a8ddc94d8c2"},"content":[{"type":"paragraph","attrs":{"id":"02d6e1ce-bf4d-489c-b576-8db2794ad7f4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"团队的编码规范和设计模式"}]}]},{"type":"listItem","attrs":{"id":"2c683f15-cfc2-414f-a299-b2fb19ed25c3"},"content":[{"type":"paragraph","attrs":{"id":"2cc4d431-0df0-4dbb-92ac-70ebe1b23fdf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"业务领域的专有知识"}]}]}]},{"type":"paragraph","attrs":{"id":"31a717d0-0427-4453-9320-d1e89c837700","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"传统的做法是把这些信息写进 System Prompt——但 System Prompt 的长度是有限的,塞太多信息会稀释重要指令的权重,甚至导致模型\"注意力分散\"。"}]},{"type":"paragraph","attrs":{"id":"b2a5f25c-5462-4cdf-baed-edd38005bd7b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"AGENTS.md 提供了一个优雅的解决方案:把知识写入文件,在需要时自动注入上下文。"}]},{"type":"heading","attrs":{"id":"a3c56b5a-c213-4b86-8a3e-43621b4f7ad8","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"AGENTS.md 的工作机制"}]},{"type":"paragraph","attrs":{"id":"710dc6e3-b3ad-4d6b-b075-aaed8ea45047","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"AGENTS.md 的设计理念可以用一句话概括:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"工作中写入知识,存文件,下次自动注入。"}]},{"type":"paragraph","attrs":{"id":"b74f5bdb-e180-4f35-a7f4-a0422d585ecc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"具体来说:"}]},{"type":"paragraph","attrs":{"id":"48acd18d-e087-438f-9f9c-d585d94bd7b7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"写入阶段:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 当 Agent 在工作过程中产生了有价值的知识(比如发现某个 API 有一个未文档化的限制,或者确定了某种架构方案的优劣),它会把这些知识以结构化的方式写入 AGENTS.md 文件。"}]},{"type":"paragraph","attrs":{"id":"669fab82-91ff-4c9e-b484-d9b94cbb849a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"存储阶段:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" AGENTS.md 文件存放在项目的文件系统中,通常是根目录或各子目录下。它本质上就是一个 Markdown 文件,人类可以直接阅读和编辑。"}]},{"type":"paragraph","attrs":{"id":"7a4b8fc8-bffd-4b26-8acd-2dce88bf8ec7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"注入阶段:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 下一次 Agent 启动或切换到新的工作上下文时,Harness 会自动读取相关的 AGENTS.md 文件,并将其内容注入到 Agent 的上下文中。"}]},{"type":"image","attrs":{"id":"825b5d02-8dd1-4b0b-be15-ede7972432db","src":"https://developer.qcloudimg.com/http-save/audit-7660620/47fc4fe54dd7e08e708519f1e637a956.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"1.791667","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"2de35c68-35fc-4c69-be41-48e590da340d","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"\"上下文注入 = 不改权重给模型加知识\""}]},{"type":"paragraph","attrs":{"id":"f1253ac0-a56b-4659-9961-487ced08d982","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这个等式是 AGENTS.md 最深刻的洞察。"}]},{"type":"paragraph","attrs":{"id":"2ea4426f-4f01-4ea1-aa80-19a15a3d0d40","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"传统上,要给模型\"加知识\",你需要微调(Fine-tuning)——修改模型的权重参数。这个过程成本高、周期长、且存在灾难性遗忘的风险。"}]},{"type":"paragraph","attrs":{"id":"1b36c0ae-b67b-4d59-a327-c11e55c79b09","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"AGENTS.md 提供了一条捷径:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"不碰模型权重,只通过上下文注入来添加知识。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 模型仍然是原来的模型,但它\"看到\"的信息变了,因此它的行为也变了。"}]},{"type":"paragraph","attrs":{"id":"12105dc3-0396-4ce7-9291-9a163699ba61","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这就像是一种\"即插即用\"的知识扩展机制——今天你发现了一个新的最佳实践,写进 AGENTS.md,明天 Agent 就自动具备了这个知识。不需要重新训练,不需要等模型供应商更新,不需要任何机器学习的专业知识。"}]},{"type":"paragraph","attrs":{"id":"e873f8df-9344-4b3f-8b3e-c541a3ac5d14","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这也解释了为什么 AGENTS.md 被称为\"记忆\"组件——它让 Agent 拥有了"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"跨会话的长期记忆"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":",而且这种记忆是透明的(人类可以阅读和编辑)、可控的(可以随时增删改)、可审计的(配合 Git 可以追溯每一次知识变更)。"}]},{"type":"heading","attrs":{"id":"d09bfa4f-9fbf-4cdb-8400-24b760093ab9","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"AGENTS.md 的最佳实践"}]},{"type":"paragraph","attrs":{"id":"01b4a7d4-2f30-42f0-af2c-0ef5b364164d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在实际项目中,AGENTS.md 的组织方式通常遵循以下原则:"}]},{"type":"paragraph","attrs":{"id":"af636c77-5abb-484a-92c6-617ad8b2c963","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"层次化存放。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 根目录的 AGENTS.md 存放全局知识(项目概述、核心架构决策、团队规范);子目录的 AGENTS.md 存放局部知识(该模块的特殊约定、已知问题、接口规范)。Agent 在进入某个目录工作时,会同时加载全局和局部的知识。"}]},{"type":"paragraph","attrs":{"id":"31dd7402-fff4-45c1-afa3-6f29ce088c95","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"结构化书写。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 好的 AGENTS.md 不是随意的笔记,而是有明确结构的知识库。常见的分类包括:项目架构、技术约束、编码规范、已知陷阱(Gotchas)、决策记录(ADR)等。"}]},{"type":"paragraph","attrs":{"id":"e4a2e98f-5afd-461e-b58c-f16d18b3dbe1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"定期清理。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 过时的知识比没有知识更危险。随着项目演进,某些早期的约束可能已经不再适用,某些技术决策可能已经被推翻。定期审查和清理 AGENTS.md 是保持其有效性的关键。"}]},{"type":"paragraph","attrs":{"id":"742cc82a-6e21-4ec6-9c38-51d6eb84981d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"双向可编辑。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" AGENTS.md 不仅是 Agent 写给自己的备忘录,也是人类与 Agent 之间的\"知识契约\"。人类可以直接编辑 AGENTS.md 来向 Agent 传达偏好(\"我不喜欢使用三元表达式\")、约束(\"所有 API 必须使用 REST 风格\")、甚至个人工作习惯(\"代码审查时请重点关注错误处理\")。"}]},{"type":"horizontalRule","attrs":{"id":"6235829a-7ba6-4646-a778-458ef4e7ce1f","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"2449e82c-078e-45d9-9775-d022e058644d","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"六、组件四:Web Search + MCP——突破知识的\"时间牢笼\""}]},{"type":"paragraph","attrs":{"id":"9fd30a04-d4ab-431e-8e37-aa50869be9a7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"裸模型的第三个硬伤是\"无法获取实时知识\"。Web Search + MCP 就是针对这个硬伤的解药。"}]},{"type":"heading","attrs":{"id":"2f868b77-edf3-4f8e-b997-2a6dfd980292","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"知识截止日期:一道隐形的墙"}]},{"type":"paragraph","attrs":{"id":"d4b14160-0c2d-4812-89b6-12bad371af25","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"每个大语言模型都有一个知识截止日期。这个日期之后的世界,对模型来说是一片空白。"}]},{"type":"paragraph","attrs":{"id":"4ad89d3e-bed2-4152-a0a8-3227b5f94564","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这在日常闲聊中可能无伤大雅,但在专业工作场景中,这是一个严重的限制。想象一下这些场景:"}]},{"type":"bulletList","attrs":{"id":"0227eb7b-f7f6-423f-8fa5-0a9ba1ed69a1","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"b0069c7f-38f7-4b50-ad1d-3305b938b43d"},"content":[{"type":"paragraph","attrs":{"id":"6f53e9a8-625b-4e8c-8356-6bfece4de98f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"你让 Agent 帮你调试一个 bug,而这个 bug 的修复方案在模型训练之后才被社区发布"}]}]},{"type":"listItem","attrs":{"id":"c3b524bc-0692-4b49-ac19-f8e225c72047"},"content":[{"type":"paragraph","attrs":{"id":"8595ad26-cb74-4daa-8b05-4e1d165ce031","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"你让 Agent 写一个集成方案,而目标 API 在上个月做了 Breaking Change"}]}]},{"type":"listItem","attrs":{"id":"501524ad-8cc2-458c-a7df-cd794aceca88"},"content":[{"type":"paragraph","attrs":{"id":"f72488e9-a91a-487e-a77c-12b21d19074a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"你让 Agent 分析竞品动态,而竞品昨天刚发布了新产品"}]}]}]},{"type":"paragraph","attrs":{"id":"76aa3067-8b9a-4404-b620-c7dabd1e35dc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在这些场景中,裸模型不仅帮不了你,还可能"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"用过时的信息自信地给出错误的答案"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"——这比\"不知道\"更危险。"}]},{"type":"heading","attrs":{"id":"80f2c67f-0124-4cac-8594-ed84094edd9d","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Web Search:打开信息的大门"}]},{"type":"paragraph","attrs":{"id":"98e882da-0e91-4048-b136-11606017e05e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Web Search 赋予 Agent 搜索互联网的能力,让它能够访问训练数据之后的新信息。这从根本上解决了\"知识过时\"的问题。"}]},{"type":"paragraph","attrs":{"id":"5953527b-688d-4327-b8ea-2dc9d630da93","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"但 Web Search 不仅仅是\"接个搜索 API\"那么简单。一个好的 Web Search 组件需要解决以下问题:"}]},{"type":"paragraph","attrs":{"id":"6a0ccf79-7a68-405b-8ffe-33379ff95231","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"查询构建:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 模型的自然语言表述不一定是好的搜索查询。Harness 需要帮助模型把模糊的意图转化为精准的搜索关键词。"}]},{"type":"paragraph","attrs":{"id":"e5eeedf1-a416-47c9-a459-301667eb15a4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"结果筛选:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 搜索引擎返回的结果质量参差不齐。Harness 需要帮助模型过滤低质量来源,优先使用权威文档(如官方文档、RFC、知名技术博客)。"}]},{"type":"paragraph","attrs":{"id":"c788abce-d0f1-492f-84ab-3854025b363f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"内容提取:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 网页内容通常包含大量无关信息(广告、导航栏、侧边栏)。Harness 需要提取核心内容并以模型友好的格式呈现。"}]},{"type":"paragraph","attrs":{"id":"ea970db5-430b-4c70-8aeb-71058552a29f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"信息整合:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 当 Agent 需要综合多个来源的信息时,Harness 需要帮助它处理信息冲突、去重、排序。"}]},{"type":"heading","attrs":{"id":"5c8f7488-b0aa-4789-98fc-9fef3927594e","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"MCP:从\"搜索\"到\"连接\""}]},{"type":"paragraph","attrs":{"id":"17bc80ac-c589-493b-ad0a-a896b5a65504","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"如果说 Web Search 让 Agent 能\"看\"互联网,那么 MCP(Model Context Protocol)让 Agent 能\"触\"互联网。"}]},{"type":"paragraph","attrs":{"id":"f04b2364-1b90-49f9-bffd-d7074fe1cfe5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"MCP 是 Anthropic 在 2024 年底推出的一个开放协议,它定义了 AI 模型与外部工具、数据源之间的标准化交互方式。你可以把它理解为\"AI 世界的 USB 接口\"——只要工具遵循 MCP 规范,就可以即插即用地接入任何支持 MCP 的 Agent。"}]},{"type":"paragraph","attrs":{"id":"fa21749b-3a5f-471e-806c-13c34351e5ba","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"MCP 的意义在于:它把 Agent 的\"感知范围\"从公开互联网扩展到了"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"任何可编程的数据源和服务"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。数据库、内部 Wiki、项目管理工具(Jira、Linear)、代码仓库(GitHub)、监控系统(Datadog、Grafana)……只要有 MCP 接口,Agent 就能直接访问。"}]},{"type":"image","attrs":{"id":"6943f69e-1891-485f-9246-f5b53f724990","src":"https://developer.qcloudimg.com/http-save/audit-7660620/c1a9b7b348d635df319b001a4bbe35b6.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"1.791667","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"f29c8150-55d6-42d3-82d5-fac518c9d300","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Web Search + MCP 的协同效应"}]},{"type":"paragraph","attrs":{"id":"7530794c-c29d-4a21-9c53-253d6cd9f857","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Web Search 和 MCP 单独使用都有价值,但它们的组合才是真正强大的。"}]},{"type":"paragraph","attrs":{"id":"71997b34-1a8a-443d-b1eb-9148fe33555b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"举个例子:Agent 需要修复一个生产环境的 Bug。"}]},{"type":"orderedList","attrs":{"id":"693a2f03-fd3c-4e99-9492-0864660a653b","start":1,"isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"6f343ab6-fb88-45d8-8ce5-a08a907b908b"},"content":[{"type":"paragraph","attrs":{"id":"3da7faac-2211-4e30-a613-17f4ab4afb93","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"MCP 连接监控系统"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" → 获取错误日志和堆栈信息"}]}]},{"type":"listItem","attrs":{"id":"10173b0e-26aa-4536-9288-02d964791d30"},"content":[{"type":"paragraph","attrs":{"id":"6cf5b54c-8769-4b2b-a5b3-ac0be502c6e5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"MCP 连接代码仓库"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" → 查看相关代码和最近的变更历史"}]}]},{"type":"listItem","attrs":{"id":"fd770fc5-cfbf-4e74-9e95-32cbfd631544"},"content":[{"type":"paragraph","attrs":{"id":"be967d4c-d3cb-4d21-819d-8cb8a3505f7f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Web Search 搜索错误信息"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" → 查找社区中是否有类似问题的解决方案"}]}]},{"type":"listItem","attrs":{"id":"a65f303c-4d67-416c-98d0-d714f7e5a1cc"},"content":[{"type":"paragraph","attrs":{"id":"04bd1eaa-3d2c-42db-9a19-6620be8bfc2d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"MCP 连接项目管理工具"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" → 检查是否有相关的已知问题"}]}]},{"type":"listItem","attrs":{"id":"f6e47c5a-e959-4de5-b7b8-2d7a683f703b"},"content":[{"type":"paragraph","attrs":{"id":"a90fc4d4-5f14-41f0-bfdb-fd6e1a3e098f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Agent 综合所有信息"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" → 生成修复方案并提交 PR"}]}]}]},{"type":"paragraph","attrs":{"id":"c514e15d-6942-496b-9829-e5a57fdf8272","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"整个流程中,Agent 像一个经验丰富的 SRE(Site Reliability Engineer),在多个信息源之间穿梭,快速定位和解决问题。这种能力不来自于更强的模型,而来自于 Harness 层的 Web Search + MCP。"}]},{"type":"horizontalRule","attrs":{"id":"aaece01b-84d7-47e9-a085-ae090f443054","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"d4de4200-0057-4d27-8315-f4a6434fd930","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"七、组件五:上下文工程——对抗 AI 系统的\"熵增\""}]},{"type":"paragraph","attrs":{"id":"9ca01fef-bb28-4ccf-ba1d-5397139788d3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"如果说前四个组件是给 Agent 装上四肢和感官,那么上下文工程就是在"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"管理它的大脑如何高效运转"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"64dcfd71-a3f7-42ac-9404-c4fa2cc01139","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这是 Harness 中最\"软\"的一个组件——它不涉及具体的工具或协议,而是关于"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"如何构建和维护模型的输入上下文"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。但恰恰是这个\"软\"组件,在实践中对 Agent 表现的影响最大。"}]},{"type":"heading","attrs":{"id":"00f23a0f-eb33-49e7-969d-f95abade81f6","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Context Rot:上下文的\"腐烂\""}]},{"type":"paragraph","attrs":{"id":"dc9559bd-49eb-459a-b2fe-866bc25ee28e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在长时间运行的 Agent 会话中,一个普遍但很少被讨论的问题是 "},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Context Rot(上下文腐烂)"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"ed102ad7-d127-4df5-952b-06475c581077","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"随着对话的进行,上下文窗口中会积累越来越多的信息——早期的指令、中间的讨论、工具调用的输入输出、错误信息和修复过程……这些信息像沉积物一样不断堆积,导致几个严重的问题:"}]},{"type":"paragraph","attrs":{"id":"a6e22e2f-4cd6-4fe5-ad81-019d7fb4a5ab","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"信噪比下降。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 真正重要的信息被大量冗余内容淹没。模型的注意力被分散,关键指令的执行质量下降。"}]},{"type":"paragraph","attrs":{"id":"679223e1-cf66-4433-b3a9-f29e78c40dbf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"矛盾信息累积。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 早期做出的决定可能已经被推翻,但旧信息仍然留在上下文中。模型可能在新旧信息之间\"摇摆不定\",产出不一致的结果。"}]},{"type":"paragraph","attrs":{"id":"b4e13c8d-7575-4925-aa82-29227b72115c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Token 浪费。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 大量无用的历史信息占据了宝贵的上下文窗口空间,留给真正有用信息的空间被压缩。"}]},{"type":"paragraph","attrs":{"id":"9675f9f1-9057-43df-a9dc-edbbd5969013","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"推理质量退化。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 研究表明,当上下文中充斥大量无关信息时,即使相关信息就在上下文中,模型的提取和推理能力也会显著下降——这就是所谓的\"大海捞针\"(Needle in a Haystack)问题的实践版。"}]},{"type":"paragraph","attrs":{"id":"6d18afb5-c6ef-45dd-8592-eb3b797f1e37","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Context Rot 不是一个理论问题,它是每一个长时间运行的 Agent 都会遇到的实际挑战。如果你用过 Agent 做复杂任务,你一定有过这样的体验:一开始 Agent 的表现很好,但随着对话变长,它开始\"变笨\"——遗忘之前的约定,重复之前犯过的错误,甚至对同一个问题给出前后矛盾的回答。这就是 Context Rot 在起作用。"}]},{"type":"heading","attrs":{"id":"fa5f0f09-59fc-4ddc-8355-737fbaa6a43b","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"上下文工程的核心策略"}]},{"type":"paragraph","attrs":{"id":"c26007ec-c35a-4029-96f4-7ddba99058df","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"对抗 Context Rot 的技术手段统称为\"上下文工程\"(Context Engineering),它包含以下几个关键策略:"}]},{"type":"paragraph","attrs":{"id":"95e5fee3-35a9-45de-b086-da9bc91bac9d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"压缩(Compression)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 定期对历史上下文进行摘要压缩。把冗长的工具调用记录替换为简洁的结果摘要,把详细的讨论过程替换为最终结论。这就像是给上下文做\"垃圾回收\"。"}]},{"type":"paragraph","attrs":{"id":"e29662d9-be55-460a-8995-4f0eb5911188","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"工具输出卸载(Tool Output Offloading)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 工具调用的输出(特别是大段的代码、日志、搜索结果)是上下文膨胀的主要来源。上下文工程会把这些输出存储到文件系统中,在上下文中只保留摘要和文件引用。需要详细信息时,Agent 可以随时重新读取文件。"}]},{"type":"paragraph","attrs":{"id":"e7173916-29e7-41bc-951a-17079c90fe36","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Skills 渐进加载。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 不同的任务阶段需要不同的知识和能力。上下文工程会根据当前任务阶段,动态加载和卸载相关的 Skill 定义。例如,在\"需求分析\"阶段加载产品相关知识,在\"编码\"阶段加载技术栈相关知识,避免一次性把所有信息都塞进上下文。"}]},{"type":"paragraph","attrs":{"id":"09a9921e-cb96-4bfe-902f-7eb0968025c9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"分层上下文结构。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 把上下文分为\"核心层\"(System Prompt、关键约束,始终保留)、\"工作层\"(当前任务相关信息,按需更新)、\"历史层\"(已完成任务的摘要,逐渐压缩)。不同层的信息有不同的生命周期和更新策略。"}]},{"type":"image","attrs":{"id":"5c4e2042-2518-430a-9e59-e4d0768f8632","src":"https://developer.qcloudimg.com/http-save/audit-7660620/da6a8e936b6be862a64f1a4d76c8f60c.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"1.791667","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"695b0abf-a89f-4e6f-bc90-f9d0f14db3a8","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"上下文工程是 Harness 的\"元能力\""}]},{"type":"paragraph","attrs":{"id":"49baf06d-bee7-40b1-beb2-c0be87aff207","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"上下文工程有一个特殊的地位——它不是 Harness 的一个独立功能模块,而是"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"影响所有其他组件的\"元能力\""},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"7dcfe9d0-a396-4762-bb4f-ef5366a0207b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"文件系统的读写操作需要上下文工程来决定\"读什么\"和\"什么时候读\"。记忆的注入需要上下文工程来决定\"注入多少\"和\"注入哪些\"。Web Search 的结果需要上下文工程来决定\"保留什么\"和\"丢弃什么\"。编排中的子 Agent 通信也依赖上下文工程来构建高效的信息传递格式。"}]},{"type":"paragraph","attrs":{"id":"6dbe9ed1-6e6f-4453-88a5-d624daa49900","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"可以说,"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Harness 本质上就是好的上下文工程的交付机制。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" Harness 的每一个组件,归根结底都是在解决同一个问题:如何在正确的时间、以正确的方式、把正确的信息送到模型面前。"}]},{"type":"paragraph","attrs":{"id":"49d97e62-e93c-4dc5-bd6b-66c952c24a4b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这也是为什么\"上下文工程\"这个概念在 2025 年底开始取代\"Prompt 工程\"成为 AI 工程领域的核心话题。Prompt 工程关注的是\"怎么写指令\",上下文工程关注的是\"怎么构建模型看到的全部信息\"——后者的范围大得多,影响也深远得多。"}]},{"type":"horizontalRule","attrs":{"id":"7b7940e7-3521-4833-83b4-35f19472622c","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"2d45b436-bc44-402f-a76c-862c245c76c3","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"八、组件六:编排 + Hooks——让单兵作战变成集团军"}]},{"type":"paragraph","attrs":{"id":"c12ad1e3-0cca-4489-8ab0-6dbed9d3355c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"最后一个组件是编排(Orchestration)+ Hooks。如果说前五个组件是在增强单个 Agent 的能力,那么这个组件是在"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"把多个 Agent 组织成一个协同作战的系统"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"heading","attrs":{"id":"989dde58-70ab-43f7-9b46-a22ce018dabb","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"为什么需要编排?"}]},{"type":"paragraph","attrs":{"id":"93829b7e-5533-427a-9668-bf293b6093f0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"当任务复杂度超过单个 Agent 的处理能力时,你需要把任务分解为多个子任务,分配给不同的\"子 Agent\"处理,然后把结果汇总。这就是编排。"}]},{"type":"paragraph","attrs":{"id":"452aae60-353e-47b7-be83-749ffd96f915","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"编排解决的核心问题包括:"}]},{"type":"paragraph","attrs":{"id":"c527b247-ecfe-4ee7-a06b-79a14644b1dd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"子 Agent 调度。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 哪个子任务应该分配给哪个 Agent?它们之间的依赖关系是什么?哪些可以并行,哪些必须串行?"}]},{"type":"paragraph","attrs":{"id":"f0387f23-2a53-46ed-b46a-3c2b5dd12ab7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"任务分发。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 如何把一个模糊的大任务拆解为明确的小任务?如何确保每个子 Agent 得到足够的上下文来完成它的子任务?"}]},{"type":"paragraph","attrs":{"id":"db57fca4-517b-4af7-8096-c0fd5808407a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"模型路由。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 不是所有的子任务都需要最强(也最贵)的模型。简单的格式转换可以用小模型,复杂的架构设计需要大模型。编排器需要根据任务复杂度选择合适的模型,在成本和质量之间取得平衡。"}]},{"type":"paragraph","attrs":{"id":"c0dac7b1-2db7-4a50-a4ff-6f2f5fcb562d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"结果聚合。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 当多个子 Agent 返回结果后,如何检查一致性、解决冲突、合并为最终输出?"}]},{"type":"image","attrs":{"id":"fb816fee-18d9-4de8-97d0-265761ef830f","src":"https://developer.qcloudimg.com/http-save/audit-7660620/96d520cd60b5dfcf6f809128a410fdf4.png","extension":"png","align":"center","alt":"","showAlt":false,"href":"","boxShadow":"","width":1100,"aspectRatio":"1.791667","status":"success","showText":true,"isPercentage":false,"percentage":0,"isHoverDragHandle":false}},{"type":"paragraph","attrs":{"id":"7b201574-6d40-4c88-b016-950bc9472b2f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"22060de7-a1fe-44c3-aeb7-bce7a31206a0","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Hooks:注入确定性"}]},{"type":"paragraph","attrs":{"id":"c9d2bf81-ab54-442d-9462-cb7dc1e80f06","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"编排解决了\"谁做什么\"的问题,Hooks 则解决了\"做得对不对\"的问题。"}]},{"type":"paragraph","attrs":{"id":"569464e3-622e-4918-b76e-d20cd5be55c0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在软件工程中,Hook 是一种在特定事件发生时自动触发的回调机制。在 Agent Harness 中,Hooks 的作用类似——"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"在 Agent 行为的关键节点插入确定性检查,确保输出符合预期。"}]},{"type":"paragraph","attrs":{"id":"b296387f-83aa-4b56-b3f0-fa3a64756aee","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Hooks 的典型应用场景包括:"}]},{"type":"paragraph","attrs":{"id":"aa9525de-d13d-4e86-a45e-b202a4824912","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Lint 检查。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" Agent 生成代码后,自动运行 linter 检查语法和风格是否符合项目规范。不符合的话,自动要求 Agent 修复。"}]},{"type":"paragraph","attrs":{"id":"343e5cd2-bed8-47a4-b2e8-4dd0c244536a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"续接(Continuation)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 当 Agent 的单次输出因为 token 限制被截断时,Hook 自动检测截断并触发续接请求,确保输出的完整性。"}]},{"type":"paragraph","attrs":{"id":"84cc23a7-a915-47f4-b800-fefa9ea690a9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"格式约束。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 确保 Agent 的输出符合特定的格式要求——JSON Schema 验证、Markdown 结构检查、API 响应格式校验等。"}]},{"type":"paragraph","attrs":{"id":"8a73278f-7528-4a5d-a9a0-1813e9f206fc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"安全过滤。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 在 Agent 执行敏感操作(如文件删除、数据库写入、外部 API 调用)前,Hook 进行权限检查和安全审计。"}]},{"type":"paragraph","attrs":{"id":"1152796a-6f3b-4704-8481-ce4167823a0c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"成本控制。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 监控 token 消耗和 API 调用频率,在接近预算上限时发出警告或限制。"}]},{"type":"paragraph","attrs":{"id":"1147514e-0e97-40b7-9bd4-a292c7499ac9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Hooks 的核心价值在于:"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"它们用确定性的规则约束了概率性的模型输出。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 模型的输出本质上是概率性的——它可能生成正确的代码,也可能犯错。Hooks 在模型输出的\"出口\"设置了一道关卡,用确定性的规则(如 lint 规则、格式校验)把不合格的输出拦截下来,要求重新生成。"}]},{"type":"paragraph","attrs":{"id":"a2a2453f-a842-48ac-9950-764cf191e145","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这种\"概率性生成 + 确定性校验\"的组合模式,是当前 Agent 工程中最有效的质量保障策略之一。它既充分利用了模型的创造力和灵活性,又通过工程手段兜住了质量底线。"}]},{"type":"heading","attrs":{"id":"123d6b6b-5eae-44d0-97ff-f2276c317b0c","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"编排模式的演进"}]},{"type":"paragraph","attrs":{"id":"aaddd1f1-535d-43f8-8b13-42bf143be1ca","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"Agent 编排的方式在过去两年经历了快速演进:"}]},{"type":"paragraph","attrs":{"id":"6e38bedc-515a-426b-9878-2fe673f48764","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"线性管道(Sequential Pipeline)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 最简单的编排方式,Agent A 的输出直接作为 Agent B 的输入,依次传递。适用于步骤明确、依赖关系清晰的任务。"}]},{"type":"paragraph","attrs":{"id":"cb28a64c-2f73-4dc2-b33f-eb83729af4d6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"DAG 编排(Directed Acyclic Graph)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 用有向无环图定义任务之间的依赖关系,支持并行执行没有依赖关系的任务。比线性管道更灵活高效。"}]},{"type":"paragraph","attrs":{"id":"962305b8-a572-4415-9ae2-ac1537b63f9c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"动态编排(Dynamic Orchestration)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 不预定义完整的任务图,而是由编排器 Agent 根据上一步的结果动态决定下一步做什么。最灵活,但也最难控制质量和成本。"}]},{"type":"paragraph","attrs":{"id":"ae62cb61-c568-40c6-8e2e-7079bf6d73c7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"层级编排(Hierarchical Orchestration)。"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":" 编排器本身也可以层级嵌套——一个高层编排器管理几个中层编排器,每个中层编排器又管理几个执行 Agent。适用于超大规模的复杂任务。"}]},{"type":"paragraph","attrs":{"id":"8cdb2a9a-c5bb-4a48-bc57-2fe97734f2fe","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"选择哪种编排模式,取决于任务的复杂度、确定性程度和实时性要求。但无论选择哪种模式,Hooks 都是不可或缺的质量保障机制。"}]},{"type":"horizontalRule","attrs":{"id":"d830f556-a52c-4ea6-98ac-2a38ff6e3f16","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"01914c50-ab1c-487d-b04b-2a62383d4105","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"九、System Prompt:贯穿所有组件的\"神经系统\""}]},{"type":"paragraph","attrs":{"id":"e56652e9-44b8-425d-ae77-4eaf1af946db","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在讨论完六大组件后,还有一个贯穿始终的要素值得单独讨论——"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"System Prompt"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"96244000-272c-49be-a4ca-a56dc176edcf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"System Prompt 不是 Harness 的\"第七个组件\",但它是贯穿所有六个组件的\"神经系统\"。它在 Harness 架构中扮演着四个关键角色:"}]},{"type":"heading","attrs":{"id":"23c2606f-1817-4c0d-b45e-62e5414ce680","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"定义角色边界"}]},{"type":"paragraph","attrs":{"id":"b34996fd-0cc1-49df-a599-58425d7d859f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"System Prompt 告诉模型\"你是谁\"和\"你不是谁\"。这不是简单的角色扮演,而是在定义 Agent 的"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"能力边界和行为约束"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。"}]},{"type":"paragraph","attrs":{"id":"0fcf17d1-f453-4b6a-a7d4-e291d7f88e6e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"例如:\"你是一个前端开发 Agent,专注于 React 生态系统。当用户提出后端相关需求时,建议他们使用专门的后端 Agent。\"这样的定义帮助 Agent 聚焦在自己擅长的领域,避免在不擅长的领域产出低质量结果。"}]},{"type":"heading","attrs":{"id":"bcaac509-06ad-478c-9cf4-1ff5fbe2d1b8","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"注入领域知识"}]},{"type":"paragraph","attrs":{"id":"658916e5-edac-4d19-a55f-8216e10b7686","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"System Prompt 是\"零成本\"知识注入的第一入口。项目背景、技术栈选型、核心业务逻辑——这些信息直接写在 System Prompt 中,确保 Agent 从第一轮对话开始就具备必要的领域知识。"}]},{"type":"paragraph","attrs":{"id":"d3ff9571-bfd5-42a4-9eea-bc095f7b7611","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"当然,正如前文讨论的,System Prompt 的容量有限。当领域知识量超过 System Prompt 能承载的范围时,AGENTS.md 就接管了这个职责。两者是互补关系:System Prompt 装\"必须知道的\",AGENTS.md 装\"最好知道的\"。"}]},{"type":"heading","attrs":{"id":"e2f3ead9-9907-4ca3-be7e-eed3f4336a04","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"约束安全规则"}]},{"type":"paragraph","attrs":{"id":"d866ccb5-565c-4f6a-a4f4-67d2c551417b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"System Prompt 是 Agent 安全策略的\"第一道防线\"。哪些操作是允许的,哪些是禁止的;哪些数据可以读取,哪些是敏感的;遇到不确定的情况应该怎么处理——这些安全规则通过 System Prompt 直接\"刻\"进 Agent 的行为模式。"}]},{"type":"heading","attrs":{"id":"d6fd6ffb-a31a-4ece-a0f7-81c3ce74a33f","textAlign":"inherit","indent":0,"level":3,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"贯穿所有组件"}]},{"type":"paragraph","attrs":{"id":"4700753a-af51-40e9-b87d-9cdf5759cc45","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"System Prompt 的影响范围不限于模型本身,它通过定义 Agent 的行为模式,间接影响了所有 Harness 组件的工作方式:"}]},{"type":"bulletList","attrs":{"id":"aef44780-9156-40b8-8066-8825377f153c","isHoverDragHandle":false},"content":[{"type":"listItem","attrs":{"id":"5282dc87-f5f9-459f-9a5a-71979aa8e8da"},"content":[{"type":"paragraph","attrs":{"id":"c6745b99-07d5-46fb-b8c4-a3ecdbd9d49c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"影响文件系统:定义文件的组织规范和命名约定"}]}]},{"type":"listItem","attrs":{"id":"19ed0fac-98d7-4818-a230-c1217264f0b8"},"content":[{"type":"paragraph","attrs":{"id":"4e6deb68-2d0a-4722-871b-9b86d834d32b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"影响 Bash 执行:限制可执行的命令范围"}]}]},{"type":"listItem","attrs":{"id":"c18bc214-1db9-47cf-8efc-0b6c8d36549e"},"content":[{"type":"paragraph","attrs":{"id":"72f3b027-a51e-4d00-a220-6b2e2d2e08a3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"影响记忆写入:规定知识记录的格式和标准"}]}]},{"type":"listItem","attrs":{"id":"27fd19d7-031f-4c7e-bc20-ab80aa7fea44"},"content":[{"type":"paragraph","attrs":{"id":"0ad18675-099f-46c2-bdf7-f233713a339d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"影响搜索行为:设置搜索的优先来源和可信度标准"}]}]},{"type":"listItem","attrs":{"id":"c362638b-82c2-4ba0-ae98-6094651b35f1"},"content":[{"type":"paragraph","attrs":{"id":"a2fcfcb0-2a47-4736-8222-dc586a97069e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"影响上下文管理:定义信息的优先级和压缩策略"}]}]},{"type":"listItem","attrs":{"id":"bc72cf4e-32d9-4451-975d-21a1ef16a138"},"content":[{"type":"paragraph","attrs":{"id":"a8d859cb-5b0a-47ea-882e-44d4c52d6285","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"影响编排逻辑:规定任务分解的粒度和协作规范"}]}]}]},{"type":"paragraph","attrs":{"id":"e6f78c8d-9831-481a-a3a2-5e6f9d87f326","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"在这个意义上,"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"写 System Prompt 就是在设计 Harness 的行为规范"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"。一个好的 System Prompt 就像一部好的公司章程——它不直接做任何事,但它决定了所有事怎么做。"}]},{"type":"horizontalRule","attrs":{"id":"0032ce39-d181-4af1-b385-0b6dadf6c4d2","isHoverDragHandle":false}},{"type":"heading","attrs":{"id":"75034423-2225-422f-ad03-d44798fcc272","textAlign":"inherit","indent":0,"level":2,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"结语:你就是 Harness 的一部分"}]},{"type":"paragraph","attrs":{"id":"af77278f-7fe0-40d9-af94-7f3a93bf739c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"让我们回到文章开头的那个公式:"}]},{"type":"paragraph","attrs":{"id":"03e78392-a521-47b9-b681-5c920de64652","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"Agent = Model + Harness"}]},{"type":"paragraph","attrs":{"id":"db8b69be-6614-43aa-a6a2-2224dbd1bdfc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"如果你是一名 AI 工程师、产品经理、技术负责人——如果你不是模型本身——"},{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"那你就是 Harness 的一部分。"}]},{"type":"paragraph","attrs":{"id":"05222346-e82e-4fd4-91a8-3c0a11e486ec","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"你写的 System Prompt 是 Harness 的神经系统。你搭建的工具链是 Harness 的四肢。你设计的记忆机制是 Harness 的长期记忆。你优化的上下文策略是 Harness 的注意力管理。你编写的 Hook 规则是 Harness 的质量底线。"}]},{"type":"paragraph","attrs":{"id":"037341eb-1166-4202-97b2-d1a00078e8e3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"过去两年,行业的聚光灯一直打在模型身上——参数规模、基准分数、推理能力。但真正在生产环境中创造价值的,往往不是那个最强的模型,而是那个最好的 Harness。"}]},{"type":"paragraph","attrs":{"id":"afd3f064-6b0d-4973-a0c9-61055efdb175","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"模型会继续进步,但进步的速度在放缓。与此同时,Harness 的工程空间还几乎没有被充分探索。文件系统怎么设计才能最大化 Agent 的效率?上下文工程有没有最优的压缩算法?编排模式怎样才能在成本和质量之间取得完美平衡?记忆机制能否实现真正的\"终身学习\"?"}]},{"type":"paragraph","attrs":{"id":"847d5ae8-1a42-4ac9-a610-9a481db7a1ef","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"这些问题的答案,不在模型的论文里,而在 Harness 的工程实践中。"}]},{"type":"paragraph","attrs":{"id":"26cdc977-1f22-4052-8264-cc4af4fcc375","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}},{"type":"bold"}],"text":"模型决定了 Agent 能力的下限,Harness 决定了 Agent 能力的上限。"}]},{"type":"paragraph","attrs":{"id":"7c3bb838-5a59-4e72-8017-c4a2310525c3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"下一次当你在调试 Agent 的表现时,不要急着换一个更强的模型。先看看你的 Harness:文件系统完善吗?沙箱安全吗?记忆机制在工作吗?上下文腐烂了吗?编排合理吗?Hooks 在兜底吗?"}]},{"type":"paragraph","attrs":{"id":"06c1814f-711b-45b1-8a28-a21e2a0cb72a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"textStyle","attrs":{"color":"","background":""}}],"text":"也许答案就在那里。"}]}]}