Skip to content

6.2 设计题

给你一个真实场景,设计 Agent 的架构、模式和控制策略。没有标准答案,但有关键考量。


题目 1:设计一个代码审查 Agent

场景:你的团队每天有 10-20 个 PR 需要审查,你想设计一个 Agent 自动审查 PR 的代码质量、安全性和规范性。

设计要求

  1. 这个 Agent 应该在哪个自主性级别运行?为什么?
  2. 你会选择什么设计模式?画出执行流程。
  3. 需要哪些工具?考虑 MCP Server。
  4. 怎么设置权限和终止条件?
  5. 人怎么介入?
参考设计
  1. 自主性 Level 2:Agent 可以自主分析代码,但所有修改建议需人工确认。理由:代码审查涉及判断,Agent 不应直接修改代码。

  2. Plan-Execute + Reflexion

    Plan:制定审查清单(安全、性能、风格、业务逻辑)
    Execute:逐一审查每个文件
    Reflexion:审查完后自检是否有遗漏
  3. 工具

    • MCP GitHub Server:读取 PR 变更、获取文件内容
    • 搜索工具:查找相关代码引用
    • 静态分析工具:检测安全漏洞和代码风格
  4. 权限

    • 自动:读取 PR、搜索代码、运行静态分析
    • 确认:标记问题、生成建议
    • 禁止:修改代码、批准 PR
  5. 人类介入

    • Agent 生成审查报告后,由人类审查员最终确认
    • 高风险问题(安全漏洞、数据泄露)必须人工复核

题目 2:设计一个项目迁移 Agent

场景:你有一个老旧的 JavaScript 项目,需要迁移到 TypeScript。项目有 50+ 个文件,你想让 Agent 批量处理。

设计要求

  1. 这个任务的自主性级别?
  2. 你会用多 Agent 协作吗?如果用,怎么分工?
  3. 怎么处理迁移中可能出现的类型错误?
  4. 怎么验证迁移的正确性?
  5. 什么情况下应该人工介入?
参考设计
  1. 自主性 Level 2-3:类型声明和简单的迁移可自主,但复杂的类型推断和架构变化需确认。

  2. 多 Agent 协作——顺序模式

    Agent A(Explore):分析项目结构和依赖关系
    → Agent B(Plan):制定迁移顺序(从叶子模块到核心模块)
    → Agent C(general-purpose):逐文件迁移
    → Agent D(general-purpose):验证迁移结果
  3. 类型错误处理

    • 简单类型错误(缺少类型声明)→ Agent 自动添加
    • 复杂类型推断(泛型、联合类型)→ Agent 建议,人工确认
    • 无法推断的类型 → 标记 any 并记录待处理
  4. 验证方式

    • 每迁移完一个文件,运行 tsc --noEmit 检查类型错误
    • 运行现有测试套件,确保功能不变
    • 每完成一个模块,人工抽查关键文件
  5. 人工介入场景

    • 迁移涉及架构变化(如从 class 迁移到函数式)
    • 类型推断结果不确定
    • 测试失败且 Agent 两次修正仍未解决

题目 3:设计一个安全审查 Agent

场景:你的公司需要定期审查代码库的安全漏洞(SQL 注入、XSS、敏感信息泄露等)。

设计要求

  1. 自主性级别?
  2. 怎么设计权限,确保 Agent 本身不会成为安全风险?
  3. 怎么处理 Agent 发现的高危漏洞?
  4. 怎么评估 Agent 的审查质量?
  5. 与现有安全工具(SAST/DAST)怎么配合?
参考设计
  1. 自主性 Level 1:只读分析,提出建议,不执行任何修改。安全审查的最高原则是「观察不干预」。

  2. 权限设计

    • 只能读取代码,不能写入
    • 不能访问生产环境数据
    • 数据库连接使用只读账户
    • MCP Server 只暴露只读 API
    • 禁止联网(防止泄露代码到外部)
  3. 高危漏洞处理

    • 发现高危漏洞 → 立即通知安全团队(不自动修复)
    • 生成漏洞报告(含代码位置、风险等级、修复建议)
    • 跟踪修复进度,修复后重新审查
  4. 审查质量评估

    • 用已知漏洞的代码库做基准测试
    • 对比 Agent 与人工审查的检出率
    • 定期交叉审查(Agent 审查过的代码由人工复检)
  5. 与 SAST/DAST 配合

    • Agent 补充 SAST 无法覆盖的逻辑漏洞(如认证绕过)
    • SAST 处理模式匹配型漏洞(如已知 CVE)
    • DAST 验证运行时漏洞
    • 三者结果汇总到统一的安全仪表盘

下一节:综合实战 →