Coding Agent 面试到底在考什么?拆解 Prompt 组装、上下文压缩与 Tool/Skill 之争
引言
最近一篇「携程员工谈 Agent 面试」的帖子在掘金火了,帖子末尾附了 14 道 Coding Agent 面试题,评论区不少人说"背下来就能过"。但如果你真的去背,会发现一个残酷的事实:这些题的答案半年就换一茬------今天考 LangChain 的 Memory 机制,明天框架就重构了。
真正稳定的,是这些题背后考察的三条主线:Prompt 组装(怎么把上下文喂给模型)、上下文管理(怎么在有限窗口里塞下无限任务)、能力边界划分(Tool、Skill、MCP 到底怎么分)。这篇文章就把这三条主线拆开讲透,无论你是准备面试,还是在做自己的 Agent 项目,都用得上。
一、Prompt 组装:不是"写好一句话",而是"设计一个模板"
很多人对 Prompt 的理解还停留在"怎么写一句咒语让模型听话",但工程化的 Agent 系统里,Prompt 是运行时拼装出来的产物。一个典型的 Coding Agent 请求,最终发给模型的 Prompt 大致由这几层叠成:
- System Prompt:定义角色、硬约束(比如"不要主动删文件")、输出格式契约;
- 工具清单:每个工具的名称、参数 schema、使用说明------这部分往往占掉几千 token;
- 记忆与摘要:跨会话的长期记忆、本会话早期对话的压缩摘要;
- 当前任务上下文:用户请求 + 最近几轮对话 + 相关文件片段;
- 格式化指令:要求模型按特定结构输出(便于程序解析)。
面试官问"Prompt 组装怎么做",实际想听的是你对信息分层和优先级的理解:窗口不够时先牺牲哪一层?工具描述怎么精简?System Prompt 里的约束如何保证不被长对话稀释?一个好的回答应该能画出这张分层图,并说清每层的 token 预算策略------比如固定预算给 System 和工具层,动态预算给任务上下文,摘要层用"超出阈值就触发压缩"的策略兜底。
二、上下文压缩:三层结构才是工程化的答案
Coding Agent 跑长任务时最经典的崩溃方式:跑着跑着,上下文满了,模型开始"失忆"------忘记最初的约束、重复已完成的步骤。工程上的解法是三层上下文架构:
- 热层(Working Memory):最近 N 轮完整对话 + 当前正在编辑的文件,保留原文,精度最高;
- 温层(Session Summary) :更早的对话被压缩成结构化摘要------完成了什么、修改了哪些文件、遗留哪些问题。注意摘要必须是结构化的(任务状态、文件清单、决策记录),而不是一段散文,否则模型检索不出关键信息;
- 冷层(External Memory):落盘到文件或向量库,需要时通过检索工具按需取回。
面试题里常问"为什么不能只靠 summarization"。答案在于有损性不可控 :LLM 做摘要时会自由发挥,丢掉它认为不重要但实际关键的细节(比如某个隐式约束)。所以成熟的做法是:摘要由程序驱动的固定模板生成,关键字段(约束、决策、文件路径)强制保留原文,只有叙述性内容才允许压缩。再配合"压缩前把关键状态落盘"的检查点机制,做到就算摘要失真,冷层还有原始记录可查。
三、Tool、Skill、MCP:三道边界,别再混着说
这可能是 14 道题里出现频率最高的一组概念,也是最容易答混的。用一句话区分:
- Tool 是"一次调用":模型在推理过程中执行的一个原子操作,比如读文件、跑 shell 命令。它由运行时注册,生命周期是一次请求。
- Skill 是"一套打法":预打包的领域知识 + 工作流程,本质是往上下文里注入一份"怎么做某类事"的说明书。它不直接执行,而是改变模型的行为模式。Tool 回答"能做什么",Skill 回答"该怎么做"。
- MCP 是"接入协议":解决的是 Tool 的分发与标准化问题------工具提供方按统一协议暴露能力,宿主按统一协议发现和调用,N×M 的集成问题变成 N+M。
面试时能讲清"为什么需要 MCP"会明显加分:没有协议层时,每个 Agent 框架都要为每个外部系统写一份胶水代码,重复且脆弱;MCP 把"工具定义、发现、调用"标准化之后,一个 MCP Server 写一次,所有支持协议的客户端都能用。这就是协议层在 AI 时代的价值------和 TCP/IP 之于互联网是同构的思路。
四、Multi-Agent 与 A2A:什么时候该拆,什么时候别拆
另一个高频考区是 Multi-Agent。很多人上来就答"拆成多个 Agent 协作",但这恰恰是踩坑最多的架构决策。拆分的收益是上下文隔离和职责专一,代价是通信开销和状态同步的复杂度。
一个实用的判断标准:当单个 Agent 的上下文已经装不下所有任务信息,或者不同子任务的工具集差异极大(比如"写代码的"和"跑测试的"需要完全不同的环境)时,才值得拆。否则,"一个强大的 Agent + 好的上下文管理"几乎总是优于"一群互相传话的小 Agent"。
而 A2A(Agent-to-Agent 协议)解决的是跨系统的问题:不同团队、不同框架的 Agent 如何互相发现、协商能力、交换任务。它和 MCP 是互补关系------MCP 连接 Agent 与工具,A2A 连接 Agent 与 Agent。
总结
回到开头那 14 道面试题,你会发现它们万变不离其宗:上下文工程是 Coding Agent 的第一性原理。Prompt 组装是上下文的"静态设计",压缩管理是"动态调度",Tool/Skill/MCP 是"能力供给",Multi-Agent 是"规模化的上下文切分"。
准备面试的正确姿势不是背题,而是拿这四个维度去审视自己做过的项目:你的上下文分层了吗?压缩策略是有损可控的吗?工具边界清晰吗?真被问到时,你能画出来的那张架构图,比任何背诵都值钱。