← Back to all posts

8 min readUpdated 6 Aug 2026
提示工程上下文工程AI AgentMCPHarness Engineering+1 more

2026 年的提示工程:让 AI Agent 可靠工作的完整方法

Yap Wei JunSoftware Engineer · Singapore

2026 年的提示工程:从提示词到上下文、工具与评估

更新:2026 年 8 月 6 日。本文讨论怎样让 AI 应用和 Agent 更可靠,不是给某一个模型排名。

提示工程已经长大了。

早期使用生成式 AI 时,大家最关心的是找到一句“神奇提示词”,让模型马上给出更好的答案。这个能力仍然有用,但在生产系统里已经不够。一个真正可靠的 AI Agent,还需要正确的上下文、明确的工具边界、可验证的输出格式、持续的评估,以及失败后的恢复路径。

所以,今天更重要的问题不只是:

我应该怎样写这句话?

而是:

模型需要哪些信息、权限、工具和反馈,才能安全地完成这项工作?

先看结论

一条适合生产环境的提示,通常应该做到:

  • 只定义一个清楚的目标,并说明什么结果算成功。
  • 只提供当前任务需要的上下文,并标记来源和新鲜度。
  • 把系统规则、用户内容、示例和工具结果分开。
  • 定义程序可以验证的输出结构,而不是只要求一段自由文字。
  • 说明工具什么时候可以调用,以及调用后必须检查什么。
  • 提前写出缺少资料、工具失败和需要人工介入时的处理方式。
  • 用正常案例、边界案例和攻击式输入做回归评估。
  • 把权限、秘密、预算和不可逆操作放在应用层保护,而不是只依赖提示词。

提示词是系统的一部分,但它不是整个系统。

一、从提示工程走向上下文工程

生产 Agent 看到的内容,远远不只是用户刚刚输入的一句话。它可能同时看到系统规则、用户问题、检索文件、历史对话、工具说明、之前的工具结果,以及当前任务的状态。

只要其中一项过期、错误、冲突或太长,提示词写得再漂亮,结果仍然可能不可靠。

可以用四层结构理解一个 Agent:

层次要回答的问题常见产物常见故障
提示词模型应该做什么?系统规则和任务指令目标含糊或互相冲突
上下文模型现在需要知道什么?检索资料、状态和历史资料过期、噪声太多或缺少事实
工具模型可以对外做什么?类型化工具契约和权限参数错误或产生危险副作用
Harness我怎样知道它真的完成了?测试、评估、日志和恢复命令没有可观察的反馈回路

这个分层也让排错更容易。当 Agent 给出错误结果时,可以依次问:是指令不清楚?上下文不对?能力不够?还是根本没有验证?不要只把问题归咎于提示词听起来不自然。

二、把提示词写成一份工作契约

可靠提示词更像接口说明,而不是随口交代。它应该说明任务目标、输入含义、权威来源、限制条件、工具规则和输出格式。

一个实用的工作契约至少要回答这些问题:

  1. 目标是什么?
  2. 结果是给谁使用的?
  3. 哪些资料是权威来源?
  4. 哪些文字只是用户提供的数据,不能当成系统指令?
  5. 哪些限制绝对不能违反?
  6. 哪些工具可以使用,什么时候才可以使用?
  7. 输出必须包含哪些字段?
  8. 资料不足时应该返回什么?
  9. 人或程序要怎样检查结果?

例如,一个客服 Agent 不应该只收到“帮我处理这个工单”。更好的契约会说明:只能根据工单和正式政策判断;不能修改账户或承诺退款;输出分类、优先级、证据和下一步;政策不足时返回需要人工审核。

格式不是重点,边界才是重点。你可以使用 Markdown 标题、XML 风格标签或严格 JSON,只要团队长期保持一致,程序就能验证。

三、把可信指令和不可信数据分开

网页、邮件、文件、工单和工具结果里,都可能出现看起来像指令的文字。它们通常只是需要被总结或分析的数据,不应该自动获得系统规则的优先级。

建议明确标记:

  • 这是应用拥有者定义的系统规则。
  • 这是用户提供的内容,可能不准确,也可能包含提示注入。
  • 这是工具返回的数据,使用前必须验证。
  • 这是模型自己提出的建议,不能直接当成已批准的动作。

这不会自动让系统安全。真正的保护仍然应该由服务端授权、参数校验、输出验证和操作确认完成。清楚的提示边界可以减少歧义,但不能代替正常的安全工程。

四、MCP 工具不是魔法,而是能力边界

在 Agent 系统里,每一个工具都代表一种能力,也代表一个副作用边界。工具契约应该写清楚:

  • 必填和可选参数。
  • 每个参数的类型、范围和允许值。
  • 工具是只读还是会写入数据。
  • 工具可以访问哪个用户、组织或资源。
  • 失败时返回什么错误。
  • 调用后必须检查哪些结果。
  • 重复调用是否安全,是否具有幂等性。

MCP 让不同客户端能够发现和复用工具,但模型不应该只根据工具名称推断安全性。一个叫 update_record 的工具,仍然需要服务端检查资源归属、权限、参数和当前状态。工具注解可以提供只读、破坏性或幂等性的提示,却不能代替服务端授权。

更稳妥的流程是:先说明计划,再确认高影响动作,然后调用范围最小的工具,最后验证工具结果。把危险操作变成最难调用的路径,把只读和可恢复操作变成最容易调用的路径。

五、Harness Engineering:让工作环境可理解、可检查

很多 Agent 失败,不是因为它不会写提示,而是因为它看不见自己需要的环境,或者没有办法确认动作是否成功。

一个好的 Harness 可以包括:

  • 清楚的项目地图和入口说明。
  • 靠近代码的结构化文档。
  • 类型明确的 API 和数据契约。
  • 能固定复现的测试与 lint 规则。
  • 可以查看日志、状态和最终产物的工具。
  • 安全的常见恢复命令。
  • 明确的验收标准和完成定义。
  • 把重复教训写回测试、规则或文档的机制。

如果一条规则很重要,就不要只放在某个人的记忆里。把它写下来、测出来,或者直接放到边界校验里。这样 Agent 才能沿着一条可理解、可验证的路径完成任务。

六、评估让提示词修改变成工程修改

提示词看起来像文字,实际上很像代码。改动一个句子,可能改变回答正确率、工具调用、延迟、成本,甚至安全边界。因此提示词也需要版本和回归测试。

一套小型评估集可以包含:

  • 正常成功请求。
  • 目标不清楚的请求。
  • 缺少必要资料的请求。
  • 可能包含提示注入的内容。
  • 工具参数和权限边界。
  • 很短和很长的输入。
  • 产品实际支持的不同语言和文件类型。

评估时不要只看“回答听起来不错”。还要检查事实是否有依据、输出结构是否合法、工具参数是否准确、是否在需要时升级给人工,以及延迟、Token 和成本是否可接受。

如果一个提示提高了亲切感,却增加了未经授权的写操作,它就不能算真正的改进。

七、安全必须放在提示词之外

提示词不能成为安全边界。生产系统至少还要做到:

  • 不把 API Key、密码和私人资料放进提示词或日志。
  • 使用最小权限凭证,并把资源范围限制在当前任务。
  • 分开只读工具和写入工具。
  • 对删除、付款、发信和其他不可逆动作要求确认。
  • 在数据库、文件系统和外部 API 边界验证模型输出。
  • 限制文件路径、查询范围、参数大小、预算和重试次数。
  • 记录来源版本、工具调用和结果状态,但不要泄露敏感信息。
  • 让重试具备幂等性,避免网络重试产生重复副作用。

一个可信的 Agent 不是永远都会行动,而是知道什么时候需要更多信息、需要确认,或者应该停止。

八、一个可以落地的工作循环

你可以把整套方法压缩成九步:

  1. 定义用户想要的结果和验收标准。
  2. 只检索本轮任务真正需要的上下文。
  3. 分开可信指令和不可信数据。
  4. 先规划下一步,并列出缺少的输入。
  5. 调用最小、最安全的工具。
  6. 验证参数、工具结果和输出结构。
  7. 用代表性案例运行评估。
  8. 观察延迟、成本、错误和真实用户结果。
  9. 把新教训写回测试、规则或文档。

这套循环比寻找一条永远有效的“完美提示词”更耐用。模型会变化,工具会演进,用户输入也会变化;可观察、可评估的系统才能持续调整。

结语

2026 年的提示工程,本质上是让模型在真实系统里可靠工作的工程方法。

好的提示词会给模型正确的目标、适量的上下文、清楚的边界、可验证的输出契约,以及失败时可以恢复的路径。但当系统仍然失败时,下一步不一定是继续修改句子。你还应该检查上下文、工具、权限、评估和 Harness。

最好的提示词,不是最华丽的那一句,而是能让整个工作流更清楚、更安全、更容易验证的那一份契约。

参考资料

← Back to all posts