AI Agent 构建实战:Claude Code 模式迁移、Rust 代码审查 Agent、六层架构与工程闭环全解析
一、先把结论说透自建 AI Agent难点不在“接模型”而在“管住系统”很多人理解 AI Agent容易停留在“让模型自己干活”这一步。可真正进入生产环境后你会发现模型只是大脑真正决定系统能不能稳定运行的是大脑外面那一整套“驾驭装置”。一个能用的 Agent需要知道任务目标一个好用的 Agent需要知道什么时候查资料、什么时候调用工具、什么时候停止一个能进生产的 Agent还要知道预算、权限、失败、日志、成本、输出结构和恢复策略。这份资料最有价值的地方是把前面大量分散的工程模式收束成一个可迁移的实战案例用代码审查场景把 16 个核心模式串成一条完整链路。它告诉我们不要试图复刻某个成熟产品的所有细节而要迁移它背后的工程思想。换句话说真正应该学的不是某个按钮、某个工具名、某个内部实现而是“如何把 Agent 做成一个可控系统”。二、为什么不是复刻产品而是迁移模式成熟的 AI 编码工具往往包含很多产品特定能力终端界面、几十个内置工具、会话格式、订阅体系、权限交互、插件生态。这些细节很强但并不一定适合你的业务。你的 Agent 可能不是编码助手它可能是安全扫描器、数据监控员、客服质检员、投研分析员、运维诊断员、合同审阅员。不同场景的外壳不同但内核问题高度相似输入从哪里来上下文怎么装工具怎么用危险动作谁审批失败后如何重试结果如何被机器继续消费所以自建 Agent 的正确路线不是“照着产品抄一遍”而是把通用模式抽出来再落到自己的场景里。错误思路正确思路原因复刻全部功能迁移核心模式功能会随产品变化模式才能跨场景复用只关注模型效果关注工程控制面模型会出错工程层负责限制、恢复和记录让模型直接执行让模型提出请求代码验证后执行安全边界必须掌握在系统手里输出一段自然语言输出结构化报告结构化结果才能进入后续自动化流程三、项目定义用代码审查 Agent 验证工程模式资料选择了一个非常适合练手的场景输入一份 Git diff输出一份结构化代码审查报告。这个场景很典型因为它天然覆盖了 Agent 构建的六个关键维度。第一它需要读取变更内容所以一定会遇到上下文预算问题。第二它需要搜索关联文件所以一定会涉及工具编排。第三它要判断 bug、安全风险和设计问题所以需要稳定的提示词控制。第四它只能审查不能乱改所以要有权限边界。第五模型调用和工具调用都可能失败所以要有重试和熔断。第六审查结果要可追踪所以要有日志、指标和报告结构。这个 Agent 的输入、输出和约束可以概括为三句话输入是一份 diff输出是带文件、行号、严重级别、分类、修复建议的审查报告执行过程只读、有预算、可追踪。四、整体架构一个 Agent 至少要有六层能力一个常见误区是Agent Loop 就是“模型回答一次再根据结果调用工具”。这个理解太浅。真正的 Agent Loop 更像一个状态机每一步都要经过预算、权限、工具、重试、日志的共同约束。资料中的实现把代码审查 Agent 拆成六层提示词架构、上下文管理、工具与搜索、安全与权限、韧性、可观测性。每一层都不是装饰而是生产级系统必须有的能力。层级核心职责对应问题L1 提示词架构定义规则、角色、输出格式、行为边界模型到底应该怎么想、怎么答L2 上下文管理控制输入规模、截断策略、预算记账有限窗口里装哪些信息L3 工具与搜索让模型提出工具请求由系统验证执行如何查更多信息而不失控L4 安全与权限失败关闭、白名单、调用上限、只读约束模型会不会越权干危险事L5 韧性重试、熔断、降级、避免循环浪费失败后怎么继续或停止L6 可观测性事件、指标、覆盖率、成本、报告系统到底做了什么、效果如何五、第一层提示词架构 - 把提示词当成控制面而不是文案很多人写提示词像写一段说明书越长越好越细越安心。但工程化的提示词不是一坨文本而是分层控制面。资料里的关键思想是把稳定的规则和动态的信息分开。稳定的部分可以理解为“宪法层”审查原则、严重级别定义、输出字段、行为约束。动态的部分可以理解为“运行时层”当前 PR 标题、变更文件、语言特定规则、当前任务背景。这种拆法有三个好处。第一稳定规则更容易维护不会因为每次任务变化而被污染。第二未来接入缓存时稳定部分更容易复用。第三模型更容易区分“长期规则”和“当前任务信息”减少指令混乱。5.1 静态宪法层让模型知道什么永远不变宪法层解决的是“原则”问题。比如优先发现正确性问题其次关注安全风险再关注性能和可维护性输出必须包含文件、行号、严重级别、分类和建议不要因为风格偏好制造噪音不确定时降低严重级别。这些内容一旦确定就不应该在每次任务里随意变化。它们是 Agent 的长期行为边界。5.2 动态运行时层让模型知道当前要处理什么运行时层解决的是“现场”问题。比如本次 diff 涉及哪些文件主要语言是什么PR 标题是什么当前是否是安全相关变更是否需要关注接口兼容性。动态信息应该靠后放避免污染稳定前缀。这样做不仅清晰也更符合缓存友好的设计思路。5.3 结构化输出不要让模型自由发挥代码审查报告如果只是自然语言后续就很难自动处理。结构化输出的价值在于每条发现都能被机器读取、筛选、排序、计数、归档。这也是“提示词即控制面”的关键提示词不只是告诉模型“你是谁”还要告诉它“输出必须是什么形状”。六、第二层上下文管理 - Token 预算就是 Agent 的内存管理Agent 的上下文窗口不是无限仓库而是一块昂贵、有限、容易被污染的工作内存。把所有内容都塞进去看似信息完整实际上会导致成本升高、延迟变长、注意力分散甚至让重要信息被挤掉。资料里的实现采用双层预算总预算控制整次审查规模单文件预算防止某个大文件吞掉全部空间。更重要的是内容被截断时不是静默丢弃而是明确告诉模型这里只展示了一部分完整内容有多少。6.1 为什么要显式告知截断静默截断是上下文管理里最危险的坏习惯。模型不知道自己没看全就可能基于局部内容做出过度自信的判断。显式告知截断本质是在保护模型的认知边界你看到的是局部内容不能假装自己看到了全部。6.2 保守估算比精确估算更适合工程落地Token 精确计算依赖具体分词器和模型版本。对于 Agent 系统来说保守估算通常更实用宁可少塞一点也不要临界溢出。工程系统追求的不是每次都把窗口塞满而是稳定、可预测、可恢复。七、第三层工具与搜索 - 模型提出需求系统负责执行工具能力是 Agent 和普通聊天机器人的重要分界线。但工具越强风险越大。资料中的设计非常关键模型不能直接执行工具它只能输出工具请求真正执行之前系统会检查工具类型、输入内容、权限范围和调用次数。这就像公司里的审批流员工可以提交需求但不能绕过流程直接动生产系统。7.1 bash 是强大的通用接口但必须关进笼子对模型来说命令行是一种天然熟悉的工具接口。查文件、搜关键字、统计行数、看目录结构都可以通过只读命令完成。但命令行同时也很危险。真正安全的做法不是完全禁用而是只允许读操作阻止写操作、联网、删除、脚本执行、输出重定向和危险元字符。7.2 Skill 是专项分析能力包除了通用搜索还可以为 Agent 准备专项分析能力比如安全审计、性能审查、接口兼容性检查、语言习惯检查。Skill 的价值在于复用专家经验每次遇到类似问题不必让模型从零思考而是调用一套经过整理的专项判断框架。八、第四层安全与权限 - 渐进式自主不是无限放权很多人希望 Agent 越自主越好但生产环境里自主必须和安全绑定。越能干的 Agent越需要清晰边界。资料里的代码审查 Agent 是只读场景所以安全策略非常明确LLM 后端只处理文本工具只允许白名单命令危险命令显式禁止输出重定向拦截每个文件工具调用次数有限工具执行有超时输出结果有限长。8.1 失败关闭不确定就拒绝安全系统最怕“猜测式放行”。失败关闭的原则是如果无法判断是否安全就默认拒绝。这个原则会牺牲一点便利性但能换来可控性。对 Agent 来说可控性比“显得很聪明”更重要。8.2 渐进式自主从只看到只读工具再到生态调用好的权限设计不是只有“允许”和“禁止”两个档位而是逐步放权。第一阶段只让模型看 diff第二阶段允许它请求只读工具第三阶段才允许通过 MCP 变成其他 Agent 可以调用的能力。这种分级设计能让系统随着信任度增加而扩展而不是一开始就把所有权限打开。九、第五层韧性 - 没有上限的重试不是可靠而是浪费生产系统一定会失败。模型接口会限流网络会波动工具会超时输出会格式错误。真正的韧性不是“永远不失败”而是“失败后知道怎么处理”。资料里的韧性设计包含三件事有限重试、熔断器、局部能力降维。有限重试避免无限循环熔断器避免连续失败继续烧钱局部能力降维让系统在信息不完整时仍能给出有边界的结果。9.1 有限重试给失败一个窗口也给成本一个上限一次失败可能只是偶发问题所以可以重试。但重试必须有上限而且最好逐步拉开间隔。没有上限的重试会把系统拖入死循环尤其在 Agent 场景里模型调用成本和工具调用成本都会被快速放大。9.2 熔断器连续失败就停下来当连续多个文件都审查失败时继续硬跑通常没有意义。熔断器的作用就是在系统进入异常模式时及时止损。这不是放弃任务而是保护系统先停下来记录失败原因再让人或外层调度器决定下一步。9.3 局部能力降维做不到满分也要做可解释的 60 分当文件太大无法完整审查时可以只审查截断部分但必须写明限制。工具不可用时可以退回纯 diff 审查。这叫能力降维不是假装一切正常而是在能力范围内交付可解释结果。十、第六层可观测性 - 先观察再修复很多 Agent 项目失败不是因为模型差而是因为系统出了问题没人知道。它到底审查了几个文件跳过了哪些工具调用失败几次每个发现大概花了多少成本哪里最慢如果这些问题答不上来就谈不上优化。10.1 事件日志记录关键节点而不是记录所有废话可观测性不是把所有内容都打印出来。尤其在代码审查场景日志里不应泄露代码细节、文件敏感路径或密钥信息。更合理的方式是记录结构化事件审查开始、文件审查完成、工具调用结果、审查结束、发现数量、预算使用、耗时和成本。10.2 ReviewReport让结果本身也成为指标最终报告不只是给人看的文本也应该包含机器可读的指标审查文件数、跳过文件数、总 Token 使用、耗时、发现数量、严重级别分布。这些指标会让你知道 Agent 是否真的有价值而不是凭感觉判断。十一、实战验证让 Agent 审查自己的代码一个系统是否可靠不能只看设计图必须拿真实任务验证。资料中最有代表性的做法是让代码审查 Agent 去审查自己的实现。这种自举测试非常有价值。因为 Agent 不仅要理解业务逻辑还要识别自身工具层、安全层、解析层、预算层里的问题。11.1 它能发现哪些类型的问题在示例中Agent 能发现多类问题diff 解析边界情况、原子计数器溢出风险、JSON 解析脆弱性、大文件重复遍历带来的性能浪费。更重要的是它还能发现工具系统里的安全问题如果命令通过 shell 解释器执行即使开头命令在白名单里也可能被元字符绕过。11.2 自举测试的真正意义自举不是炫技而是验证闭环。Agent 发现问题人类修复问题Agent 再次验证修复。这就是一个可持续改进系统的雏形。任何安全层都不是一次设计就万无一失持续审查和复验才是长期防线。十二、闭环升级让其他 Agent 调用你的 Agent一个 Agent 如果只能独立运行价值是有限的。如果它能以标准协议暴露成工具就能进入更大的 Agent 生态。资料里的代码审查 Agent 可以切换成 MCP Server 模式把“审查 diff”暴露成外部工具。这样另一个编码 Agent 可以在修复前先调用它审查拿到结构化 findings再逐项处理。这一步非常关键。它意味着你构建的不是一次性脚本而是可被组合、可被调用、可被纳入工作流的能力模块。未来的 Agent 系统很可能不是一个超级助手解决一切而是一组专职 Agent 通过标准协议协作审查、测试、修复、发布、监控、回滚各司其职。十三、模式组合真正困难的是处理模式之间的张力单独理解某个模式并不难难的是组合使用。比如“为一切设定预算”和“编辑前先读取”之间就有张力完整读取更安全但完整读取可能超过预算。又比如“缓存感知设计”和“动态上下文注入”也有张力动态内容太靠前会破坏稳定前缀动态内容太靠后又可能影响模型理解。所以自建 Agent 的关键不是把模式清单全部塞进去而是知道每个模式解决什么问题、会引入什么副作用以及和其他模式如何配合。十四、普通团队如何落地六步走不要一步登天很多团队一上来就想做“全自动工程师”结果很快被权限、上下文、成本、工具、安全问题打垮。更稳妥的路线是从一个小而清晰的 Agent 开始。14.1 第一步先做只读 Agent只读 Agent 的风险最低最适合起步。比如代码审查、日志分析、文档问答、告警归因都可以先从只读开始。14.2 第二步加入上下文预算一旦输入变多就必须加预算。没有预算的 Agent很快会变成成本黑洞。14.3 第三步加入工具但只允许安全工具工具能显著提升能力但一开始最好只开放查询、搜索、统计类能力。写操作、联网、删除、执行脚本都应谨慎。14.4 第四步加入安全闸门白名单、黑名单、超时、输出截断、调用次数上限这些看起来基础却是生产环境里最重要的护栏。14.5 第五步加入韧性和观测当任务开始规模化运行失败会成为常态。重试、熔断、降级和日志指标必须跟上。14.6 第六步通过协议接入生态当能力稳定后再把它暴露成 MCP 工具让其他 Agent 或工作流调用。这样你的 Agent 才能从单点工具变成生态节点。十五、完整架构回顾AI Agent 是一套工程系统把整套思路收束起来可以得到一个很清晰的判断AI Agent 的核心不是“更会说”而是“更可控”。它需要提示词定义行为需要上下文管理资源需要工具连接外部世界需要安全层限制越权需要韧性层处理失败需要可观测层让团队知道它做了什么。如果少了提示词层模型容易乱答少了上下文层成本和信息污染会失控少了工具层Agent 只能空谈少了安全层风险不可接受少了韧性层系统经不起异常少了可观测层团队无法持续优化。十六、给技术团队的落地清单检查项应该做到什么为什么重要提示词分层稳定规则与动态信息分开减少混乱为缓存和维护打基础输入预算总预算、单文件预算、工具输出预算防止上下文爆炸和成本失控截断说明截断必须显式告知模型避免模型基于局部信息过度自信工具请求协议模型提请求系统验证执行把执行权留在工程层只读优先先从查询、搜索、统计类工具开始降低起步风险权限多层防护白名单、黑名单、超时、调用上限任何单层失效仍有备用防线重试有限接口失败可重试但必须有上限避免成本黑洞和死循环熔断机制连续失败后暂停任务保护系统稳定性结构化结果输出可被机器读取的报告方便后续修复、复验和统计可观测指标记录覆盖率、耗时、成本、失败原因优化必须建立在数据上十七、总结未来不是“会聊天的模型”而是“可治理的 Agent 工程”这份资料真正重要的启发是AI Agent 的竞争力不只是模型能力而是模型外面的工程控制面。当模型越来越强团队之间的差距会逐渐转向谁更会管理上下文谁更会设计工具边界谁更会做权限治理谁更会处理失败谁更会观测成本与质量谁更会把多个 Agent 组合成稳定工作流。自建 Agent 的第一性原则不是“让模型尽可能自由”而是“让模型在正确边界内高效行动”。一句话总结真正的 AI Agent 工程不是把模型接进系统而是给模型装上方向盘、刹车、仪表盘、安全带和导航系统。参考资料https://pan.baidu.com/s/1Fm6rZSZkY3q2NcrmTfTMeQ?pwd6fkr