十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

AI Agent 工程化落地:harness、loop、graph 三层架构与 MCP 实践

AI Agent 工程化落地:harness、loop、graph 三层架构与 MCP 实践 这里写自定义目录标题欢迎使用Markdown编辑器引言为什么 Agent 一接真实业务就崩一、三层架构环境、反馈、流程二、第一层 Harness环境决定模型能不能操作2.1 MCP工具接入的开放标准生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能丰富你的文章UML图表流程图FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好 这是你第一次使用# AI Agent 工程化落地harness、loop、graph 三层架构与 MCP 实践引言为什么 Agent 一接真实业务就崩很多团队都有过这样的经历Agent 在演示时惊艳全场一接真实文件、API、浏览器和客户数据就原形毕露。它一遍遍回复已完成交付物却过不了验收任务稍微复杂一点它就陷入循环、烧掉预算、交出没人敢用的结果。换更强的模型症状依旧。因为问题根本不在模型。当 Agent 越过玩具 Demo、开始碰文件、API、文档和生产代码时你早就不只是在提示一个模型了你是在设计一套系统。在这套系统里有三个概念被反复混在一起harness环境、loop循环、graph流程图。它们都围着同一个模型转都会影响可靠性但解决的是完全不同的问题。混着用你就是在错误的一层上修 bug。一、三层架构环境、反馈、流程先记住核心结论Harness engineering环境工程负责把模型周围的环境搭好Loop engineering循环工程负责设计干活-反馈的重复循环Graph engineering图工程负责把工作流的拓扑显式画出来。记忆模型就三个词环境 → 反馈 → 流程。环境harness给模型工具、记忆、控制和工作区循环loop决定工作怎么被重试、检查和改进图graph定义下一步到底允许发生什么。为什么这三件事必须分开因为一个裸模型什么真实工作都做不了。它不能跨会话维持项目状态不能安全调用工具不能检查浏览器不能执行权限不能重试失败的任务不能验证输出质量不能把任务路由给不同专家更不知道什么时候该停。这些能力全部来自模型周围的那套系统。二、第一层 Harness环境决定模型能不能操作一个严肃的 harness 通常包含六件事1. 上下文注入——模型动手前能看到什么。指令、检索到的知识、对话状态、记忆、策略、任务规则。上下文注入的质量直接决定了模型理解任务的深度。2. 动作面——模型能做什么。API 调用、浏览器操作、shell 命令、代码执行、MCP 工具、数据库、自定义函数。动作面越丰富Agent 能完成的任务越复杂。3. 持久化——什么东西能跨时间存活。会话状态、文件、记忆、任务进度。没有持久化Agent 每次重启都是一张白纸。4. 控制——Agent 能碰什么、不能碰什么。权限边界、资源限制、预算上限、操作白名单。控制是安全底线。5. 工作区——Agent 在哪里干活。临时目录、沙箱环境、隔离的存储空间。工作区隔离能防止 Agent 误操作污染生产环境。6. 反馈通道——Agent 如何感知结果。工具返回值、错误信息、日志、测试结果。反馈的质量决定了 Agent 能否自我纠错。2.1 MCP工具接入的开放标准在动作面这一层MCPModel Context Protocol已经成为把 AI 应用接到外部系统的开放标准。官方文档把它比作 AI 应用的USB-C 口数据源、工具、工作流都通过它统一接入Claude、ChatGPT、VS Code Copilot、Cursor 都在支持。MCP 的核心价值在于标准化过去每个工具都要写一套自定义接入代码现在通过 MCP 协议工具提供方只需实现一个标准接口所有支持 MCP 的客户端都能直接使用。这大大降低了工具生态的接入成本。{mcpServers:{database:{command:node,args:[mcp-server-db.js],env:{DB_URL:postgres://...}}}}## 三、第二层 Loop循环决定工作能不能做好 有了环境模型能操作了但还做不好。因为一次性的生成-返回无法保证质量。Loop 工程解决的是如何让工作可重复、可验证、可改进。 一个典型的 Agent Loop 包含四个阶段 **1. 规划Plan**——模型分析任务制定执行计划决定调用哪些工具、按什么顺序。 **2. 执行Act**——按计划调用工具、执行操作、生成内容。 **3. 观察Observe**——获取工具执行结果判断是否成功、是否符合预期。 **4. 反思Reflect**——根据观察结果决定继续执行、调整策略、重试、还是结束。 这个循环的质量决定了 Agent 的可靠性上限。工程化的关键点包括 **重试策略**工具调用失败要能自动重试但要设置重试上限防止无限循环。 **验证机制**每个关键步骤都要有验证手段。比如代码生成后要跑测试数据操作后要校验结果。 **预算控制**设置最大迭代次数、最大 Token 消耗、最大执行时间。Agent 失控时能自动熔断。 **退出条件**明确什么时候算完成。没有清晰的退出条件Agent 会一直努力下去烧光预算。 ## 四、第三层 Graph图决定流程能不能可控 当任务足够复杂单个循环不够用就需要把工作流显式地画成图。图工程的价值在于把隐式的决策逻辑变成显式的拓扑结构让流程可控、可观测、可审计。 图式编排的核心能力 **分支**——根据条件决定走哪条路径。比如如果检索结果为空走补充检索分支。 **循环**——支持带条件的重复执行。比如生成结果 → 检查质量 → 不合格则重新生成。 **并行**——多个子任务同时执行最后汇总。适合可拆分的独立任务。 **状态管理**——所有节点共享状态支持跨步骤传递数据。 **人工断点**——在关键节点暂停等待人工确认后再继续。这是高风险操作的安全闸门。 LangGraph、CrewAI、AutoGen 等框架都提供了图式编排能力。选择哪个框架取决于团队的技术栈和定制需求。开源框架自由度最高但需要自己维护基础设施商业平台上手快但定制深度有限。 ## 五、三层架构的协同一个完整案例 用一个自动生成周报的 Agent 来说明三层如何协同 **Harness 层**注入公司知识库上下文、提供数据库查询工具和文档生成工具动作面、设置权限只能读不能写生产库、分配临时工作区。 **Loop 层**Agent 规划拉数据 → 分析 → 写周报 → 自检执行后观察结果如果数据缺失则补充查询如果周报质量不达标则重写。 **Graph 层**整个流程画成图——数据拉取节点、分析节点、生成节点、质检节点质检不合格则循环回分析节点最多重试 3 次最后在发送节点设置人工确认断点。 三层各司其职Harness 保证 Agent能干活Loop 保证干得好Graph 保证干得可控。任何一层缺失Agent 都难以在生产环境稳定运行。 ## 六、工程化落地的检查清单 给团队一份可执行的检查清单 1. **工具是否安全**所有工具都要有权限边界敏感操作要二次确认。 2. 2. **上下文是否完整**模型需要的信息是否都注入了缺失会导致错误决策。 3. 3. **循环是否有上限**最大迭代次数、预算上限、超时时间是否都设置了 4. 4. **结果是否可验证**每个关键步骤是否有验证机制 5. 5. **流程是否可观测**每一步的输入输出是否都有日志和追踪 6. 6. **失败是否可恢复**任务中断后能否从断点恢复 7. 7. **是否有人工兜底**高风险操作是否有人工确认环节 ## 七、总结 Agent 工程化的本质是把模型能力转化为系统能力。Harness 提供环境Loop 提供反馈Graph 提供流程三者共同构成 Agent 的生产级底座。MCP 协议则解决了工具接入的标准化问题让 Agent 的能力边界可以无限扩展。 记住一个朴素的判断标准如果你的 Agent 只靠提示词写得够好来保证质量那它离生产环境还很远。真正的可靠性来自环境、循环、流程三层的系统性设计。把这三层想清楚Agent 才能从演示品变成生产力。 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章了解一下Markdown的基本语法知识。 ## 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持除了标准的Markdown编辑器功能我们增加了如下几点新功能帮助你用它写博客 1. **全新的界面设计** 将会带来全新的写作体验 2. 在创作中心设置你喜爱的代码高亮样式Markdown **将代码片显示选择的高亮样式** 进行展示 3. 增加了 **图片拖拽** 功能你可以将本地的图片直接拖拽到编辑区域直接展示 4. 全新的 **KaTeX数学公式** 语法 5. 增加了支持**甘特图的mermaid语法[^1]** 功能 6. 增加了 **多屏幕编辑** Markdown文章功能 7. 增加了 **焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置** 等功能功能按钮位于编辑区域与预览区域中间 8. 增加了 **检查列表** 功能。 [^1]: [mermaid语法说明](https://mermaid.js.org/intro/) ## 功能快捷键 撤销kbdCtrl/Command/kbd kbdZ/kbd 重做kbdCtrl/Command/kbd kbdY/kbd 加粗kbdCtrl/Command/kbd kbdB/kbd 斜体kbdCtrl/Command/kbd kbdI/kbd 标题kbdCtrl/Command/kbd kbdShift/kbd kbdH/kbd 无序列表kbdCtrl/Command/kbd kbdShift/kbd kbdU/kbd 有序列表kbdCtrl/Command/kbd kbdShift/kbd kbdO/kbd 检查列表kbdCtrl/Command/kbd kbdShift/kbd kbdC/kbd 插入代码kbdCtrl/Command/kbd kbdShift/kbd kbdK/kbd 插入链接kbdCtrl/Command/kbd kbdShift/kbd kbdL/kbd 插入图片kbdCtrl/Command/kbd kbdShift/kbd kbdG/kbd 查找kbdCtrl/Command/kbd kbdF/kbd 替换kbdCtrl/Command/kbd kbdG/kbd ## 合理的创建标题有助于目录的生成 直接输入1次kbd#/kbd并按下kbdspace/kbd后将生成1级标题。 输入2次kbd#/kbd并按下kbdspace/kbd后将生成2级标题。 以此类推我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。 ## 如何改变文本的样式 *强调文本* _强调文本_ **加粗文本** __加粗文本__ 标记文本 ~~删除文本~~ 引用文本 H~2~O is是液体。 2^10^ 运算结果是 1024. ## 插入链接与图片 链接: [link](https://www.csdn.net/). 图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw) 带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw 30x30) 居中的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center) 居中并且带尺寸的图片: ![Alt](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw#pic_center 30x30) 当然我们为了让用户更加便捷我们增加了图片拖拽功能。 ## 如何插入一段漂亮的代码片 去[博客设置](https://mp.csdn.net/console/configBlog)页面选择一款你喜欢的代码片高亮样式下面展示同样高亮的代码片.javascript// An highlighted blockvarfoobar;生成一个适合你的列表项目项目项目项目1项目2项目3计划任务完成任务创建一个表格一个简单的表格是这么创建的项目Value电脑$1600手机$12导管$1设定内容居中、居左、居右使用:---------:居中使用:----------居左使用----------:居右第一列第二列第三列第一列文本居中第二列文本居右第三列文本居左SmartyPantsSmartyPants 是一个文本转换工具主要功能是将普通的 ASCII 标点符号自动转换为更美观的印刷体标点符号。例如原始符号转换后说明引号“引号”直引号变弯引号单引号‘单引号’直单引号变弯单引号--–两个连字符变短破折号---—三个连字符变长破折号...…三个点变省略号创建一个自定义列表MarkdownText-to-HTMLconversion toolAuthorsJohnLuke如何创建一个注脚一个具有注脚的文本。1注释也是必不可少的Markdown将文本转换为HTML。KaTeX数学公式您可以使用渲染LaTeX数学表达式 KaTeX:Gamma公式展示Γ ( n ) ( n − 1 ) ! ∀ n ∈ N \Gamma(n) (n-1)!\quad\forall n\in\mathbb NΓ(n)(n−1)!∀n∈N是通过欧拉积分Γ ( z ) ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) \int_0^\infty t^{z-1}e^{-t}dt\,.Γ(z)∫0∞​tz−1e−tdt.你可以找到更多关于的信息LaTeX数学表达式here.新的甘特图功能丰富你的文章2014-01-072014-01-092014-01-112014-01-132014-01-152014-01-172014-01-192014-01-21已完成进行中计划一计划二现有任务Adding GANTT diagram functionality to mermaid关于甘特图语法参考 这儿,UML图表可以使用UML图表进行渲染例如下面产生的一个序列图王五李四张三王五李四张三李四想了很长时间, 文字太长了不适合放在一行.你好李四, 最近怎么样?你最近怎么样王五我很好谢谢!我很好谢谢!打量着王五...很好... 王五, 你怎么样?关于UML图表语法参考 这儿,流程图链接长方形圆圆角长方形菱形关于Mermaid语法参考 这儿,FLowchart流程图我们依旧会支持flowchart.js的流程图语法Created with Raphaël 2.3.0开始我的操作确认结束yesno关于Flowchart流程图语法参考 这儿.导出与导入导出如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到文章导出生成一个.md文件或者.html文件进行本地保存。导入如果你想加载一篇你写过的.md文件在上方工具栏可以选择导入功能进行对应扩展名的文件导入继续你的创作。注脚的解释 ↩︎
返回列表