2026-10-27 秋招XX AI Agent开发工程师面试复盘

게시일: 2026-10-27 04:00 2176자 11 min read 직접 씀 모든 글자를 제가 직접 썼어요.

이 게시물은 아직 한국어 번역이 없으므로 원문으로 표시돼요
2026-10-27 秋招XX AI Agent开发工程师面试复盘 这场面试基本是在聊天。面试官沿着简历里的 Agent 项目一点点往下问,问得很细。我的感觉是,有些追问也不要求我一定做过,而是想看看我会怎么理解、怎么继续往下推。后面还聊到了个人 Agent 项目,我直接做了一次展示。 把这次聊到的几个问题整理一下。 1. 为什么用 Skill,而不是 Function Calling?...

2026-10-27 秋招XX AI Agent开发工程师面试复盘

这场面试基本是在聊天。面试官沿着简历里的 Agent 项目一点点往下问,问得很细。我的感觉是,有些追问也不要求我一定做过,而是想看看我会怎么理解、怎么继续往下推。后面还聊到了个人 Agent 项目,我直接做了一次展示。

把这次聊到的几个问题整理一下。

1. 为什么用 Skill,而不是 Function Calling?

这两个东西先要放到不同层次上看。Function Calling 让模型用约定的结构提出工具调用;Skill 把一类任务的操作方法、参考材料和脚本组织起来,告诉 Agent 什么时候用、该怎么做。一个 Skill 完全可以通过 Function Calling 调工具,两者可以配合。

面试官继续追问了渐进式披露:为什么会省 Token,具体怎么省?

按 Agent Skills 规范,开始只加载各技能的名称和描述;确定需要某项技能时,再读完整的 SKILL.md;更详细的参考文件按需读取。省下的是暂时用不到的详细说明,并不是 Skill 本身不占上下文。Agent Skills 规范

因此不能直接说“Skill 一定比 Function Calling 省 Token”。这取决于原来放了多少说明、实际加载了多少材料,以及有没有反复读取。如果技能很多、每次又都加载全文,未必更省;工具定义同样可以按任务筛选,不必一次全部发给模型。

2. Agent 怎么知道自己该调用工具?请求体长什么样?

面试官从“怎么调用”一直问到一次推理里模型究竟收到了什么。

以 Chat Completions 的函数调用格式为例,请求体顶层的 messages 放会话消息,tools 与它并列,定义函数名称、用途和参数结构。模型结合任务和工具说明,返回带 tool_calls 的 assistant 消息。应用检查参数和权限、执行函数,再把这条 assistant 消息和对应的 role: "tool" 结果追加到消息中,通过 tool_call_id 对应调用,继续请求模型。模型也可能继续调用其他工具。OpenAI Function Calling 文档

真正执行操作的是应用程序。模型负责提出调用,应用负责判断能不能执行、在哪里执行,以及怎样处理失败。

Skill 的说明也要通过宿主进入模型上下文,例如先注入技能目录,再通过读取文件的工具取得正文。不能因为用了 Skill,就给 OpenAI 请求体凭空加一个标准的 skills 字段。具体消息格式还要看用的是哪套 API,上面说的是 Chat Completions。

3. MCP 跑在本地还是服务器?STDIO 和 SSE 有什么区别?

这里要把部署位置和传输方式分开。

stdio 通常由客户端启动 MCP Server 子进程,通过标准输入输出交换协议消息。这里的“本地”是相对客户端进程说的;客户端若在服务器上,子进程也可以在服务器上。

HTTP 传输可以连接远程服务,也可以访问同机回环地址。旧的 HTTP+SSE 方案用 SSE 接收服务端消息,并通过另一个端点发送请求;从 2025-03-26 版规范开始,它由 Streamable HTTP 替代。后者使用统一 MCP 端点处理 HTTP 交互,需要流式返回时仍可使用 SSE,所以不能简单把“使用 SSE”和“旧传输”画等号。MCP 传输规范

放回前面的问题里,MCP 负责标准化客户端和服务端的能力交互;Function Calling 负责模型提出结构化调用;Skill 负责组织任务做法。宿主可以把 MCP 工具转换成模型可调用的工具,再由 Skill 指导怎样组合使用。

4. Deep Agents 到底做了什么?为什么用它?

这组追问的重点是具体能力:只说它用了 LangChain、LangGraph,还没解释清楚为什么选它。

Deep Agents 在工具调用循环上提供了文件读写、上下文管理、子任务委派等能力,也支持规划、技能加载和人工介入。比如长工具结果可以转存到文件,后面按需读取;独立子任务可以放进自己的上下文,完成后返回结果;关键工具执行前可以暂停等待确认。底层 LangGraph 则提供持久执行、流式输出和中断等运行能力。Deep Agents 官方介绍

选型时要说清楚自己需要其中哪几项。需要长任务、文件和上下文管理时,这些现成功能能减少外围实现;只有几次确定的工具调用时,也可以先用简单循环。不能把框架的全部能力都算成自己项目已经用上的功能。

5. 怎么理解 Agent Harness?

可以把它理解成让模型持续做事的一整套运行安排。Agent Loop 负责反复请求模型、执行工具、反馈结果,直到完成或停止;Harness 还需要处理上下文、工具接入、权限、文件系统、沙箱,以及运行状态的检查点和恢复。上面的 Deep Agents 就是在这一层提供现成功能。

几项东西解决的问题并不相同:权限决定允许做什么;沙箱限制实际执行环境的影响范围;检查点记录执行状态,支持中断后继续。它们不能只靠一句提示词代替。

Prompt Engineering 关注怎样表达指令,Loop 的设计关注怎样循环、何时退出,Harness 则把这些和实际环境接起来。Skills、Hook 可以参与其中,Cron 可以作为定时触发入口,但定时任务不是每个 Harness 都必须有的核心。

6. 个人 Agent 项目怎么做的?

现场还展示了个人项目。用现在的流程来说明,我希望把平时的笔记、作品记录和文章留在普通 Markdown 里,AI 围绕这些文件协助整理,需要公开时再进入网站。

拿一篇笔记举例,私人主题稿保留在原位置,要发表时准备独立 Post,两份稿以后分别维护。网站仍由 Payload 管理,通过标准 API 对接;程序负责记录对应关系、检查两端变化,写入后回读确认。私人保存和网站公开是两个明确的动作。

这里适合展开的是 AI 与程序怎样分工:AI 帮忙理解材料和组织表达,身份对应、同步检查和写入核对交给程序。具体演示可以沿一篇文章走完整条流程,再挑实际实现过的部分讲。

7. 为什么把主会话和旁路任务分开?

面试里还聊到了只有一个主聊天、同时存在多个旁路任务的设计。按这个描述,可以从协作和上下文隔离来理解。

主会话保留用户目标、约束和最终决策;旁路任务承担相对独立的查询、阅读或处理工作,最后把必要结果交回来。这样主会话不用带着每项任务的全部中间过程,也更容易继续和用户沟通。

代价是任务交接:目标和输入没交代清楚,旁路可能重复劳动或漏掉约束;如果把所有历史都复制过去、再把全部过程塞回来,隔离上下文的收益也就有限。这里讨论的是这种设计的取舍,不能只凭界面形态断定某个产品内部一定怎样实现。

8. Python 和 C++ 有什么区别?

不能只用“解释型”和“编译型”概括。Python 通常是动态类型,C++ 通常是静态类型;常见 CPython 会先编译成字节码再执行,C++ 通常提前编译成机器码,但这不是语言实现唯一可能的方式。

工程上,Python 适合快速组织业务、调用库和编写自动化;C++ 提供更直接的内存布局、资源生命周期和性能控制。性能也要看具体工作落在哪一层:Python 调用的数值库可能把主要计算交给底层原生代码,不能仅凭外层语言判断整个程序的速度。对 Agent 应用来说,还要看瓶颈是在模型和网络请求,还是本地计算。

집필 직접 씀

랜덤 게시물

© 2026 Zhiheng Wang @traceonsnow
Powered by theme astro-koharu · Inspired by Shoka
불러오는 중...