真实面经题目 · 原创解析
Agent 系统中的 skill(能力模块)应如何设计和实现?
这题考 Agent 能力模块的工程抽象,回答要说明 skill 的边界、契约、工具绑定、权限、测试、版本和失败处理。
真实面经题目 · 原创解析
这题考 Agent 能力模块的工程抽象,回答要说明 skill 的边界、契约、工具绑定、权限、测试、版本和失败处理。
Agent 系统中的 skill,我会理解成一组可被 Agent 稳定调用的能力模块,不只是一个 prompt。一个 skill 至少要定义适用意图、输入输出 schema、执行步骤、可调用工具、权限边界、失败处理和评测用例。设计时先从高频任务抽象能力边界,比如搜索资料、生成报告、操作系统、调用业务 API;再把自然语言触发条件、必要参数、工具调用顺序和结果格式写清楚。实现上可以把 skill 注册到 Agent 的能力表中,调度器根据用户意图和上下文选择 skill,skill 内部再调用具体工具或子流程。工程重点是可控:参数要校验,工具要隔离,高风险动作要确认,执行过程要可观测,版本变更要有回归测试。这样 skill 才能复用、评估和迭代,而不是堆一堆临时 prompt。
好的 skill 把一类任务封装成可复用能力,包括什么时候触发、需要什么输入、允许调用哪些工具、如何组织步骤、输出什么结构、失败时怎么办。它的目标是降低 Agent 每次从零规划的不确定性。
不是所有动作都应该做成 skill。适合封装的是高频、流程相对稳定、可评估、需要多个工具配合的任务。边界太大,skill 会变成黑盒大杂烩;边界太小,调度成本高且复用价值低。
每个 skill 应有名称、描述、适用场景、不适用场景、输入参数 schema、输出格式、依赖工具和权限要求。触发描述要帮助 Agent 选择正确 skill;输入输出 schema 要帮助系统做校验和后续编排。
Agent 可以先做意图识别或规划,选择一个或多个 skill。skill 内部可以包含 prompt 模板、步骤计划、工具调用和结果整理。具体工具执行仍要经过统一工具层,保证权限、超时、重试、审计和沙箱策略一致。
skill 可能读文件、查数据、发请求或执行写操作,所以必须声明权限范围。高风险 skill 要有确认、沙箱、最小权限和敏感信息过滤。不能因为 skill 是内部能力,就绕过工具层安全控制。
skill 应配套测试样例和评估指标,比如触发准确率、任务成功率、工具调用成功率、输出格式合规率和失败恢复率。版本升级时要跑回归,记录变更点和兼容性,避免一个 skill 改动影响整套 Agent。
tool 是具体可执行接口,比如查库或调用 API;skill 是围绕任务目标组织的一套能力流程,可能包含 prompt、步骤和多个 tool。
高频、流程稳定、可复用、可评估、通常需要多步或多工具协作的任务适合封装成 skill。一次性开放问题不一定适合。
要写清适用和不适用场景,设计输入 schema,结合意图识别、置信度阈值和回退机制,并用真实样例评估触发准确率。
按失败类型处理:参数缺失就追问,工具超时就降级或重试,权限不足就提示授权,高风险失败要停止并保留审计。
每次修改 prompt、工具依赖、输入输出 schema 或权限都应记录版本,跑回归样例,必要时灰度发布并保留回滚能力。