Skip to content

第 5 章 Research Brief:Instructions 与 Prompt

任务与读者问题

第 4 章把可靠性落实为目标、约束、观察和验证。第 5 章要回答一个更小但更常见的问题:当一个 Agent 需要长期遵守项目规则、完成某次任务、读取外部资料并交付固定格式时,怎样避免把所有内容拼成一段无法审查的 Prompt?

读者完成本章后,应能为一个任务区分稳定规则、项目规则、任务请求、待处理数据与输出契约;能在冲突时先定位来源、作用范围和优先级,而不是靠增加句子或强调语气解决问题。

范围与非范围

范围: 研究指令层的分层、冲突处理、清晰表达、结构化输出、Prompt 版本化与测试。使用 Codex 和 Claude Code 的项目文件作为“项目指令可以持久化”的产品例子;使用 OpenAI Model Spec 作为特定产品的指令权威链例子;使用 Google 与 Anthropic 的官方文档限定 Prompt 清晰性、结构化内容与输出验证的建议范围。

非范围: 不把 systemdeveloperuserAGENTS.mdCLAUDE.md 写成跨产品的统一协议;不复刻任一厂商的 Prompt 模板;不承诺 Prompt 可以绕过安全、权限或工具边界;不把语法正确的 JSON 写成业务正确的结论;不在本章设计检索、长期记忆、工作流状态机、工具协议或 Sandbox。

研究问题与当前结论

研究问题所需一手证据当前限定结论
发生冲突时,某个产品如何区分指令权威?模型或平台公开的指令层级说明。REF-010 描述 OpenAI Model Spec 中 root、system、developer、user、guideline 的权威链。它是该 Spec 的预期行为与文档模型,不是所有模型或所有 API 的通用层级,也不保证生产模型完全实现该 Spec。
项目规则能否作为持久上下文而不是每次粘贴?工具官方文档。REF-005 描述 Codex 的 AGENTS.md 发现、组合与目录邻近覆盖行为;REF-006 描述 Claude Code 的 CLAUDE.md 作为持久指令上下文。二者都只支持各自产品。
复杂 Prompt 如何提高可读性与可维护性?官方 Prompt 指南。REF-011 建议使用清晰、具体的指令,并把复杂 Prompt 拆成更简单的组件;REF-013 建议将输出格式、约束和步骤说清,并用结构化标签区分指令、上下文、示例与输入。它们是各产品的 Prompt 建议,不是正确性的保证。
输出契约何时需要独立于自然语言 Prompt?官方结构化输出文档。REF-011 建议复杂 JSON Schema 使用结构化输出特性;REF-012 说明语法正确 JSON 仍需在应用中验证值和业务语义。具体 API 形态与支持的 Schema 子集是动态信息。
为什么 Prompt 需要版本化和回归测试?官方 API 行为说明。REF-014 明确模型快照之间的 Prompt 行为可能变化,并建议固定模型版本和运行评估;该建议只适用于其公开 API 语境,但可作为本章建立 Prompt 回归检查的来源背景。

已核验来源与可用陈述

ID本章允许使用的陈述来源类型与访问日期不可外推范围
REF-010OpenAI Model Spec 2025-10-27 将指令放入带权威级别的链中,高级别覆盖低级别。页面同时说明生产模型未必完全反映公开 Spec。OpenAI 公开 Spec,2026-07-15 访问;文档版本日期 2025-10-27。不写成所有供应商、所有模型、所有消息 API 或所有运行时的真实优先级。
REF-005Codex 可组合全局与目录层级的 AGENTS.md,靠近当前目录的文件在组合提示中覆盖更早指导。Codex 官方手册,2026-07-15 访问。不作为 Claude Code、其他 Agent 或模型消息层级的实现说明。
REF-006Claude Code 文档将 CLAUDE.md 描述为用户编写的持久指令上下文,并与自动记忆区分。Anthropic 官方文档,2026-07-15 访问。不作为 Codex 加载、强制执行或权限机制的证据。
REF-011Gemini API 文档建议清晰、具体指令;复杂 Prompt 可拆成组件;复杂 JSON Schema 建议采用该产品的 structured output。Google 官方文档,2026-06-10 更新,2026-07-15 访问。不保证其他模型相同表现,也不保证响应语义正确。
REF-012Gemini structured output 文档说明语法正确的 JSON 仍必须由应用验证值;Schema 合规结果也可能不满足业务逻辑。Google 官方文档,2026-07-07 更新,2026-07-15 访问。不将该产品的 Schema 支持范围、SDK 或 API 字段写成通用 JSON 契约。
REF-013Anthropic Prompting best practices 建议清晰、明确地表达输出与约束;可用 XML 标签将指令、上下文、示例和输入分开。Anthropic 官方文档,2026-07-15 访问;页面未显示稳定发布日期。不把标签当成安全边界、通用语法或跨模型性能承诺。
REF-014OpenAI API 文档说明模型快照之间的 Prompt 行为可能变化,并建议固定模型版本、使用 evals 保持一致性。OpenAI API 文档,2026-07-15 访问;页面未显示稳定发布日期。不保证固定版本消除输出变化,也不把某一评估 API 作为本章的唯一实现。

本书的工程扩展

以下是本书为可维护 Harness 提出的内容模型,不是任何来源给出的统一产品协议:

  1. 平台或系统约束: 由运行平台或部署方规定的不可由任务文本随意改变的规则。该层是否可见、名称为何、是否存在,必须由具体产品核验。
  2. 项目规则: 仓库、团队或服务的稳定约定,例如允许的目录、审查标准、验证命令和禁止事项。它应被版本控制、可审查且可定位。
  3. 任务请求: 当前目标、输入、范围、验收条件和停止条件。它应随任务变更,不能覆盖更高层已声明的约束。
  4. 上下文数据: 文档、日志、网页、代码片段和工具结果。它们用于解决任务,但不能仅因被包含在 Prompt 中就获得指令权威。
  5. 输出契约: 需要返回的字段、格式、证据和失败表示。格式契约应与业务验证分开;Schema 通过不等于任务通过。

本章会明确“项目规则”在具体产品中可能被装配为不同角色或不同上下文位置。因此它不在书中预设绝对优先级,而是要求 Harness 在装配时写明来源、作用范围、冲突策略和验证方式。

计划叙述与工件

  1. 用“同一段代码审查要求被复制到五个 Prompt,规则修正后仍有一处漏改”的教学场景解释 Prompt 碎片化。
  2. 给出稳定规则、项目规则、任务请求、上下文数据和输出契约的分层表,并说明它是本书工程模型。
  3. 建立冲突处理流程:识别来源与作用范围 → 按已声明的产品或 Harness 规则裁决 → 记录拒绝或降级的内容 → 验证输出,而不是继续叠加指令。
  4. 解释“清晰、具体、可分段”与“内容必须更长”不同;将复杂 Prompt 拆成可独立审查的组件。
  5. 解释输出格式、JSON Schema、业务验证的边界,并用 Prompt 回归样例说明版本化的必要性。

计划图示、案例与示例

计划图示: chapter-05-instruction-assembly.mmd 将展示项目规则、任务请求、数据上下文和输出契约如何被 Harness 装配;数据进入时标记为数据而不是规则;最终由冲突处理和验证返回可观察结果。图不描绘任何特定产品的内部提示词、隐藏指令或真实消息顺序。

计划案例: “代码审查 Agent 的规则化重构”。将散落在聊天 Prompt 中的稳定审查规则收敛为项目规则,将本次 diff、测试输出和问题描述放入任务与数据层,将 must_fixshould_fixsuggestion 和证据字段定义为输出契约。案例是教学设计,不是本仓库或外部团队的真实审查记录。

计划示例: 一个纯内存的 assembleInstructionPacket 接口:输入为已命名的项目规则、任务 Brief、数据片段和输出契约;输出为组件清单、来源清单、冲突结果与待验证的结构化请求。它不会调用模型、网络、真实文件、环境变量、凭证或外部工具,也不验证任何供应商的消息优先级。

研究风险与待核验项

  • TODO(verify): 正文写作当天重新访问 REF-005、REF-006、REF-010 至 REF-014;其中产品加载规则、模型指令行为、结构化输出限制和 API 说明可能变化。
  • TODO(verify): 若正文展示任何产品 SDK、请求字段、模型名、模型快照、Schema 子集或版本,必须使用当日官方 API 参考重新建立字段级证据,不得从本 Brief 推断。
  • TODO(verify): 若案例加入 Prompt injection、敏感数据、权限或工具调用细节,必须引入第 11、12、41 章所需的一手安全与协议资料;本 Brief 不将标签、分层或输出 Schema 当作安全控制。
  • 当前没有声明可运行示例、Mermaid 导出、产品 API 调用或 Prompt 性能基准已经实现或验证。

Research 完成检查

  • [x] 明确了本章的读者问题、范围、非范围和相邻章节边界。
  • [x] 重新核验了七项一手来源,并为每项限定允许与禁止用途。
  • [x] 将系统/项目/任务/数据/输出契约写为本书工程模型,而不是统一产品层级。
  • [x] 建立了计划图示、教学案例、纯内存示例边界和待核验项。
  • [x] 未提前写入正文、产品 SDK、性能主张、真实工具行为或未验证的安全结论。

从同一套 Markdown 书稿生成。