面试官让我现场设计一个Agent Skill,我画了张图,他沉默了
那天下午的面试前二十分钟都很顺利。我聊了微服务拆分、Redis缓存的坑、JVM调优的几个经典参数面试官频频点头气氛轻松得像是两个同行在交流心得。然后他忽然换了个坐姿抛出一个我完全没有预料到的问题“你简历上写熟悉AI Agent开发那你说说Agent Skill到底是什么如果让你设计一个‘帮用户自动处理邮件’的Skill你会怎么定义它的输入输出和边界”我愣了一下。脑海里快速闪过一堆碎片函数调用、工具描述、ReAct模式……但这些东西像被猫抓乱的毛线球我找不到线头。“嗯……Skill就是……Agent能调用的一个工具比如发邮件、查天气。”我的声音越来越小。面试官笑了笑没追问而是低头在笔记本上写了点什么。那个笑容我太熟悉了——是“我听到了一个很表面的答案但我不打算为难你”的表情。走出大楼我立刻掏出手机把所有关于Agent Skill的内容从头捋了一遍。现在我把当时欠下的答案写在这里希望能帮到下一个被问到这个问题的你。先别急把Agent本身搞清楚聊Skill之前我们必须先对齐一个认知Agent是什么在2026年的AI语境下Agent已经不是几年前那个“能聊天的机器人”了。它是一套能自主规划、执行任务、调用工具的智能体系统。你可以把它想象成一个新入职的员工你跟他说“把上个月销售数据整理成PPT发给李总”他不是只回复你“好的”而是自己去翻共享盘、用Excel汇总、打开PPT排版、调出邮件客户端填写收件人——然后真的把PPT发出去。大模型LLM只是这个员工的“大脑”它能理解任务、做决策。但大脑没法直接操作电脑。于是就有了SkillSkill就是Agent的双手和工具箱。Agent Skill的本质不是功能是“能力的标准化封装”很多开发者一听到Skill第一反应是“这不就是调个API吗”也对也不对。Skill确实最终会调用某种API、执行某段代码、或者访问某个数据库。但Skill不等于API。它的核心价值在于标准化封装——让大模型能理解这个能力是干什么的、什么时候该用它、该传什么参数、期望得到什么返回。想象一下你让Agent去查天气。Agent大脑LLM并不知道“天气”是个什么东西也不知道去哪里查、用什么格式请求。但如果你给Agent安装了一个“天气查询Skill”并且用自然语言描述清楚“这个技能可以查询指定城市今天或未来几天的天气需要输入城市名和日期返回温度、湿度和天气状况。”Agent大脑就会在规划任务时自动判断用户问题里提到了“明天”“北京”“会不会下雨”我应该调用这个Skill。所以面试官问“什么是Agent Skill”他想听到的绝对不是“一个API”。他想听到的是你对能力标准化、语义描述、自主决策这套机制的理解。一个Skill的解剖结构四个要素决定它能不能用如果让你给Agent造一个技能你会怎么描述它只写一个函数名就够了吗绝对不够。一个合格的Skill定义至少包含下面四层信息1. 能力描述Description用清晰的自然语言告诉大模型这个技能能解决什么问题。这是整个Skill的灵魂。描述的好坏直接决定Agent会不会在合适的时机选择它。比如“发送邮件”这个技能描述不能只写“发邮件”而要写成“向指定收件人发送一封邮件支持填写主题、正文和附件。当用户要求发送邮件、回复邮件、或分享文件时使用。”2. 输入参数Input SchemaAgent需要知道调用这个技能时应该传哪些参数每个参数的类型、是否必填、有什么约束。比如发邮件的参数就是收件人字符串必填、主题字符串必填、正文字符串选填、附件文件列表选填。这些参数定义得越精准Agent就越不容易传错。3. 输出格式Output Schema技能执行完毕后返回什么信息是成功还是失败返回的数据结构是什么Agent需要根据输出决定下一步行动。比如发送邮件成功时返回“已发送”失败时返回错误原因Agent就可以根据失败原因决定是否重试或告知用户。4. 执行体Executor这是真正干活的代码可以是一个API调用、一段Python脚本、一个数据库查询、甚至是对另一个Agent的调用。关键在于执行体必须严格遵循输入输出定义的契约。当面试官让你“设计一个Agent Skill”他考察的是你能否从这四个维度出发把一个模糊的能力变成一个结构化的、可被大模型理解和调用的模块。如果你还能提到“异常处理”和“超时控制”那就直接加分。动手设计以“自动处理邮件”为例回到面试官问我的那个问题“如果让你设计一个‘帮用户自动处理邮件’的Skill你怎么定义”现在我来给出当时没能说出的答案。这个Skill的核心不是“发邮件”而是“处理”——意味着它可能需要读邮件、分类、提取关键信息、生成回复草稿、或根据指令执行发送。我们把它拆成三个子技能会更合理但面试官问的是一个Skill那我们就设计一个“邮件操作”的复合技能Skill名称mail_operator能力描述“对指定邮箱中的邮件进行操作包括读取未读邮件、根据条件搜索邮件、发送邮件、以及删除邮件。当用户要求查看邮件、回复某人、发送新邮件或清理收件箱时使用。”输入参数action字符串必填操作类型可选值为 read / send / delete / searchtarget_mailbox字符串选填目标邮箱地址默认为用户主邮箱recipient字符串send时必填收件人地址subject字符串send/search时选填邮件主题body字符串send时选填邮件正文search_criteria对象search时选填搜索条件如发件人、日期范围输出格式成功时返回 { status: success, data: { ... } }data内容根据操作类型变化比如read操作返回邮件列表失败时返回 { status: error, message: 错误原因描述 }执行体逻辑根据action参数分发到不同的邮件服务接口调用IMAP/SMTP协议或公司内部邮件API完成实际操作对read操作的邮件内容做脱敏处理后返回这个设计虽然不是一行可运行的代码但它清晰地告诉面试官我理解Agent Skill不是写死一个功能而是定义一套可以被大模型动态编排的标准化能力。而且我考虑到了多操作合一、错误处理、以及安全性脱敏。面试官真正想听的是什么三个层次当面试官问“Agent Skill是什么”时他的耳朵在寻找三层理解第一层概念层。你能否用一句话说清楚Skill的本质“Skill是大模型与外部世界交互的标准化接口是Agent从‘会说话’到‘会做事’的关键桥梁。”第二层设计层。你能否拆解一个Skill的内部结构能否说出描述、输入、输出、执行体这四要素能否给出一个完整的例子这证明你不只是用过别人写好的Skill而是有能力自己造轮子。第三层工程层。你能否意识到Skill在真实系统中的挑战比如多个Skill之间的依赖和冲突如何处理Skill调用失败时Agent如何重试或降级如何评估一个Skill的安全性避免Agent误删重要邮件或泄露隐私如果你能主动提到这些面试官会认为你已经在工程实践中踩过坑了。准备这道题的几个实用建议如果你正在准备AI Agent相关岗位的面试下面这份“Skill认知清单”或许能帮到你亲手写一个Agent Skill。用LangChain或Coze或Dify都可以从定义一个简单的工具开始比如查天气观察Agent如何决策是否调用、如何提取参数。这个实操经验会让你的回答充满细节。研究几个Agent平台的Skill定义规范。比如OpenAI的Function Calling文档、Anthropic的Tool Use、阿里的百炼平台的Plugin机制。看看大厂是如何定义工具描述的好的描述和差的描述有什么区别。准备一个你自己设计过的Skill案例。用STAR原则背景为什么需要这个Skill、任务Skill要解决什么问题、行动怎么设计四要素、结果Agent用这个Skill完成了什么任务。有案例的答案永远比纯理论更有说服力。关注Skill的演进趋势。2026年正在发生一个变化Skill从“人工定义”走向“自动生成”和“动态组合”。Agent可以自己写代码创造新Skill或者将多个已有Skill编排成工作流。如果你能在面试时提一下这个趋势会让面试官觉得你关注前沿。写在最后那天面试结束后我其实纠结了一整个晚上要不要给面试官发邮件补充一下我的答案后来还是没发因为我知道机会永远不会留给准备不足的人。但我做了另一件事——把自己关在房间里用了一整天时间从零搭建了一个带有五个自定义Skill的Agent让它帮我整理了一周的邮件。现在如果再有人问我“Agent Skill是什么”我不会再只说“一个工具”。我会告诉他Skill是AI从“被动应答”走向“主动行动”的那道门而设计一个好Skill的过程就是在教一个世界上最聪明但毫无常识的实习生如何一步步变成你团队的顶梁柱。你在面试中遇到过哪些关于AI Agent的“意外问题”或者你对Agent Skill还有什么想不通的地方评论区聊一聊我们一起拆解这道新时代的面试必考题。