Skip to content

52. Code Agent 怎么设计? ​

难度 P1 高频 · 岗位 应用 · 频率 ★★★ · 预计阅读 5 min

👔面试官:Code Agent 怎么设计?

🙋‍♂️我:让模型生成代码,执行后反馈结果。

👔面试官:基础,但要更系统:不是"会写几行代码",而是读代码库、定计划、改文件、跑验证、根据结果继续修正的闭环。而且最大难点是上下文治理、验证闭环、失败处理。你能展开吗?

💡 简要回答 ​

六层设计:

层级职责
任务理解判断是读代码、改bug、补测试、重构
代码库理解代码搜索、符号索引、依赖关系
计划与执行列出修改计划,读/改文件,跑命令
工具层搜索、读文件、编辑、运行测试、执行命令
反馈闭环根据lint、测试、报错继续修正
安全治理权限限制、变更日志、人工接管

三大难点:

  1. 上下文治理(代码库太大,怎么拿相关上下文)
  2. 验证闭环(怎么判断修复真的生效)
  3. 失败处理(修不好时怎么停、怎么交还给人)

📝 详细解析 ​

三大难点详解 ​

难点一:代码库上下文治理

真实代码库可能有数百万行,无法全部塞入上下文。需要:

  • 代码搜索:用 Tree-sitter 解析 AST,构建符号索引(函数名、类名、变量名)
  • 语义检索:对代码片段做 Embedding,根据任务描述召回相关代码
  • 依赖分析:静态分析调用链,找出与修改点相关的上下游代码

典型工具:ctags、LSP(Language Server Protocol)、tree-sitter。

难点二:验证闭环

Code Agent 必须能自我验证修改是否正确:

  1. 运行 Linter(pylint、eslint)检查语法和风格
  2. 运行单元测试(pytest、jest),观察测试通过率变化
  3. 用 CI 系统构建并运行所有测试
  4. 根据失败信息继续修正,而不是停止

难点三:失败处理

无限重试是危险的。设计原则:

  • 设定最大修改轮次(如 5 轮)
  • 每轮记录修改 diff 和测试结果
  • 超过轮次上限后暂停,把当前状态和失败原因交给人工

工具设计 ​

code_search(query)          # 语义代码搜索
read_file(path, lines)      # 读取文件指定行
edit_file(path, old, new)   # 精确替换代码片段
run_tests(test_files)       # 运行测试套件
run_command(cmd)            # 执行 shell 命令

🎯 面试总结 ​

Code Agent 是面向代码任务的执行系统,不只是代码补全放大版。关键:上下文治理、验证闭环、失败处理。


章节首页 · ← Q51 · Q53 →

最后更新2026-05-01
难度P1
频率medium
阅读5 min
主题agent
觉得有帮助?把这个链接转给正在求职的朋友 · 用 Ctrl + K 全站搜索其它题