Agent 面试通关 / 08

Prompt 工程与框架原理:模板构建、Skills 机制

Prompt 工程不是“写提示词”,是一个分层组装系统。面试官问这个方向时,考的是你能不能把 Prompt 从“拼字符串”做成“模板工程”,以及你对 Agent 框架内部机制的理解深度。


Q:提示词模板是怎么构建的?

来源:抖音基础架构 Agent 一面

新手答:“把任务描述和代码拼成一个 Prompt 发给模型。”

高手答

提示词模板不是字符串拼接,是一个分层组装系统

  1. System Prompt 层:定义角色(“你是一个资深测试工程师”)、输出格式约束(“只输出可执行的测试代码,不要解释”)、语言和框架约束(“使用 pytest”)
  2. 上下文注入层:把待测函数的源码、函数签名、依赖的类型定义、已有的测试用例作为参考注入。这里有个关键决策——注入多少上下文。太少模型不理解代码,太多撑爆窗口且干扰生成
  3. 任务指令层:具体要生成什么——单元测试、边界测试、异常路径测试。不同测试目标对应不同的指令模板
  4. Few-shot 示例层:给 1-2 个同项目风格的测试用例作为示范,让模型对齐代码风格和断言习惯

模板不是静态的,会根据待测代码的特征动态调整——比如纯函数用轻量模板,有外部依赖的函数自动加上 mock 引导指令。模板还需要版本管理和 A/B 测试,不同模板对不同类型代码的效果差异很大。

差距在哪:新手把 Prompt 当成一次性的字符串拼接。高手的回答展示了一个四层分离的模板系统——角色、上下文、指令、示例各司其职,且能根据输入特征动态调整。面试官想看的是你有没有把 Prompt 当成一个需要版本管理和测试的工程产物。


Q:Skills 的原理有没有了解过?怎么实现的?

来源:抖音基础架构 Agent 一面

新手答:“就是预定义的 Prompt 模板。”

高手答

Skills 是 Agent 系统中可复用的能力单元,比 Prompt 模板更完整。一个 Skill 通常包含:

Skill = {
    触发条件:  意图匹配规则 / 关键词 / 正则,
    Prompt 模板:  针对这个能力的专用提示词,
    工具集合:  这个 Skill 能调用哪些工具,
    输出约束:  输出格式和校验规则,
    上下文策略:  需要注入哪些额外信息
}

实现机制

  1. Skill 注册表:所有 Skill 以文件形式存储(比如 SKILL.md),包含名称、描述、触发条件、完整的 Prompt 指令。系统启动时加载到内存
  2. 触发匹配:用户输入或 Agent 行为触发时,先做意图匹配——可以是关键词匹配(“整理面经” → 触发 new-article Skill)、正则匹配,或者用 embedding 做语义匹配
  3. 动态 Prompt 组装:匹配到 Skill 后,把 Skill 的 Prompt 模板展开,注入当前上下文(用户消息、项目状态等),形成完整的 Prompt 发给模型
  4. 工具权限隔离:不同 Skill 可以访问不同的工具子集——代码生成 Skill 能调文件读写工具,但搜索 Skill 只能调检索工具

和普通 Prompt 模板的区别:Prompt 模板是静态文本,Skill 是一个完整的执行上下文——它不只定义了“说什么”,还定义了“能做什么”和“在什么条件下触发”。

差距在哪:新手只看到了 Skill 的表面(Prompt 模板),高手看到了完整的执行上下文——触发条件、工具权限、上下文策略。面试官考的是你对 Agent 框架的理解深度——不只是用框架,还理解框架怎么设计的。


Q:Claude Code 的架构有什么比较创新的设计?

来源:腾讯 Agent 应用开发一面

新手答:“它很强,能直接改代码。”

高手答

Claude Code 在架构上有几个值得关注的设计:

  1. System Prompt 即规则引擎:把项目约定、编码规范、安全约束全部写进 System Prompt(通过 CLAUDE.md),让模型在每次决策时都受约束。这比在代码里硬编码规则更灵活——改一个文件就能改变 Agent 行为,不需要重新部署
  2. 工具调用的权限分级:不同工具有不同的权限级别——读文件可以自动执行,写文件需要用户确认,危险操作(删除、push)需要显式授权。这个分级机制在安全和效率之间取得了平衡
  3. 上下文自动压缩:对话过长时自动做上下文压缩(summary),保留关键信息丢弃冗余。用户无感知,但解决了长会话的 token 限制问题
  4. 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 的后端工程师”

更深层的区别:

  1. 好 Prompt 减少模型的决策空间:模型面对的选择越少,输出越稳定。“写一个函数”有无数种写法,“写一个接收 list[int] 返回 dict[int, float] 的函数”就只有有限的合理写法
  2. 好 Prompt 提供失败时的指引:不只说“做什么”,还说“做不到时怎么办”——“如果找不到相关信息,回复’信息不足,需要以下补充:…‘”
  3. 好 Prompt 是可迭代的:不是一次写完,而是根据模型的实际输出不断调整,做版本管理和 A/B 测试

差距在哪:新手只用“清楚 vs 模糊”一个维度。高手从任务边界、输出格式、约束条件、上下文、角色五个维度对比,且点出了“减少决策空间”和“可迭代”两个深层原则。面试官考的是你写 Prompt 的工程化程度。


这类题的答题模式

Prompt 工程与框架原理题的核心是系统化思维

1. Prompt 不是字符串——是分层的、动态的、需要版本管理的工程产物
2. Skill 不是模板——是触发条件 + Prompt + 工具 + 约束的完整执行上下文
3. 讲实现时要讲清楚"怎么触发、怎么组装、怎么隔离"
4. 和传统软件设计的类比:Skill ≈ 插件系统,Prompt 模板 ≈ 配置化策略

下一篇建议继续看: