Agent 面试通关 / 08
Prompt 工程与框架原理:模板构建、Skills 机制
Prompt 工程不是“写提示词”,是一个分层组装系统。面试官问这个方向时,考的是你能不能把 Prompt 从“拼字符串”做成“模板工程”,以及你对 Agent 框架内部机制的理解深度。
Q:提示词模板是怎么构建的?
来源:抖音基础架构 Agent 一面
新手答:“把任务描述和代码拼成一个 Prompt 发给模型。”
高手答:
提示词模板不是字符串拼接,是一个分层组装系统:
- System Prompt 层:定义角色(“你是一个资深测试工程师”)、输出格式约束(“只输出可执行的测试代码,不要解释”)、语言和框架约束(“使用 pytest”)
- 上下文注入层:把待测函数的源码、函数签名、依赖的类型定义、已有的测试用例作为参考注入。这里有个关键决策——注入多少上下文。太少模型不理解代码,太多撑爆窗口且干扰生成
- 任务指令层:具体要生成什么——单元测试、边界测试、异常路径测试。不同测试目标对应不同的指令模板
- Few-shot 示例层:给 1-2 个同项目风格的测试用例作为示范,让模型对齐代码风格和断言习惯
模板不是静态的,会根据待测代码的特征动态调整——比如纯函数用轻量模板,有外部依赖的函数自动加上 mock 引导指令。模板还需要版本管理和 A/B 测试,不同模板对不同类型代码的效果差异很大。
差距在哪:新手把 Prompt 当成一次性的字符串拼接。高手的回答展示了一个四层分离的模板系统——角色、上下文、指令、示例各司其职,且能根据输入特征动态调整。面试官想看的是你有没有把 Prompt 当成一个需要版本管理和测试的工程产物。
Q:Skills 的原理有没有了解过?怎么实现的?
来源:抖音基础架构 Agent 一面
新手答:“就是预定义的 Prompt 模板。”
高手答:
Skills 是 Agent 系统中可复用的能力单元,比 Prompt 模板更完整。一个 Skill 通常包含:
Skill = {
触发条件: 意图匹配规则 / 关键词 / 正则,
Prompt 模板: 针对这个能力的专用提示词,
工具集合: 这个 Skill 能调用哪些工具,
输出约束: 输出格式和校验规则,
上下文策略: 需要注入哪些额外信息
}
实现机制:
- Skill 注册表:所有 Skill 以文件形式存储(比如
SKILL.md),包含名称、描述、触发条件、完整的 Prompt 指令。系统启动时加载到内存 - 触发匹配:用户输入或 Agent 行为触发时,先做意图匹配——可以是关键词匹配(“整理面经” → 触发
new-articleSkill)、正则匹配,或者用 embedding 做语义匹配 - 动态 Prompt 组装:匹配到 Skill 后,把 Skill 的 Prompt 模板展开,注入当前上下文(用户消息、项目状态等),形成完整的 Prompt 发给模型
- 工具权限隔离:不同 Skill 可以访问不同的工具子集——代码生成 Skill 能调文件读写工具,但搜索 Skill 只能调检索工具
和普通 Prompt 模板的区别:Prompt 模板是静态文本,Skill 是一个完整的执行上下文——它不只定义了“说什么”,还定义了“能做什么”和“在什么条件下触发”。
差距在哪:新手只看到了 Skill 的表面(Prompt 模板),高手看到了完整的执行上下文——触发条件、工具权限、上下文策略。面试官考的是你对 Agent 框架的理解深度——不只是用框架,还理解框架怎么设计的。
Q:Claude Code 的架构有什么比较创新的设计?
来源:腾讯 Agent 应用开发一面
新手答:“它很强,能直接改代码。”
高手答:
Claude Code 在架构上有几个值得关注的设计:
- System Prompt 即规则引擎:把项目约定、编码规范、安全约束全部写进 System Prompt(通过 CLAUDE.md),让模型在每次决策时都受约束。这比在代码里硬编码规则更灵活——改一个文件就能改变 Agent 行为,不需要重新部署
- 工具调用的权限分级:不同工具有不同的权限级别——读文件可以自动执行,写文件需要用户确认,危险操作(删除、push)需要显式授权。这个分级机制在安全和效率之间取得了平衡
- 上下文自动压缩:对话过长时自动做上下文压缩(summary),保留关键信息丢弃冗余。用户无感知,但解决了长会话的 token 限制问题
- Hooks 机制:允许用户在工具调用前后插入自定义的 shell 命令(pre/post hooks),实现自动化的 lint、测试、格式化——把 Agent 行为嵌入到已有的开发工作流中
创新的核心不是某个单点技术,而是把 Agent 当作开发者工作流的一部分来设计——不是替代开发者,而是嵌入开发者的工具链。
差距在哪:新手只感受到了“强”。高手从 System Prompt 规则引擎、权限分级、上下文压缩、Hooks 四个具体设计点分析了创新。面试官考的是你对 Agent 框架的拆解和分析能力。
Q:一个好的 Prompt 和一个差的 Prompt 的区别?
来源:腾讯 Agent 应用开发一面
新手答:“好的 Prompt 描述清楚,差的 Prompt 太模糊。”
高手答:
区别不只是“清不清楚”,是五个维度的差距:
| 维度 | 差的 Prompt | 好的 Prompt |
|---|---|---|
| 任务边界 | “帮我写个程序” | “写一个 Python 函数,输入用户 ID 列表,返回每个用户最近 7 天的订单总额” |
| 输出格式 | 不指定 | 明确要求 JSON/代码/表格,给出示例 |
| 约束条件 | 无 | “不要用第三方库”“错误时返回空字典而不是抛异常” |
| 上下文 | 不提供 | 附上相关的类型定义、接口文档、已有代码 |
| 角色设定 | 无 | “你是一个熟悉 SQLAlchemy 的后端工程师” |
更深层的区别:
- 好 Prompt 减少模型的决策空间:模型面对的选择越少,输出越稳定。“写一个函数”有无数种写法,“写一个接收 list[int] 返回 dict[int, float] 的函数”就只有有限的合理写法
- 好 Prompt 提供失败时的指引:不只说“做什么”,还说“做不到时怎么办”——“如果找不到相关信息,回复’信息不足,需要以下补充:…‘”
- 好 Prompt 是可迭代的:不是一次写完,而是根据模型的实际输出不断调整,做版本管理和 A/B 测试
差距在哪:新手只用“清楚 vs 模糊”一个维度。高手从任务边界、输出格式、约束条件、上下文、角色五个维度对比,且点出了“减少决策空间”和“可迭代”两个深层原则。面试官考的是你写 Prompt 的工程化程度。
这类题的答题模式
Prompt 工程与框架原理题的核心是系统化思维:
1. Prompt 不是字符串——是分层的、动态的、需要版本管理的工程产物
2. Skill 不是模板——是触发条件 + Prompt + 工具 + 约束的完整执行上下文
3. 讲实现时要讲清楚"怎么触发、怎么组装、怎么隔离"
4. 和传统软件设计的类比:Skill ≈ 插件系统,Prompt 模板 ≈ 配置化策略
下一篇建议继续看: