聚焦单次请求里的规则组织、上下文拼装与输出约束,回答 LLM 怎样被“喂得更对”而不只是“调得更多” (2025-2026)
| 层级 | 核心职责 | 典型问题 | 关键关注 |
|---|---|---|---|
| 系统规则 | 定义角色、边界和优先级 | 指令冲突、约束模糊、风格漂移 | 系统 Prompt 结构、规则优先级、边界表达 |
| 动态上下文 | 补充当前任务所需信息 | 信息过多、顺序混乱、噪声夹带 | 上下文选择、排序、去重、可信度 |
| 历史与记忆 | 保持连续任务认知 | 上下文污染、遗忘关键事实、历史膨胀 | 滑动窗口、摘要记忆、长期记忆策略 |
| 约束与输出 | 稳定回答形式与协议 | JSON 失效、格式飘逸、工具参数错误 | 结构化输出、Schema、停止条件 |
| 评测与回归 | 验证 Prompt 改动的真实效果 | 小改动引起回归、效果靠感觉判断 | 回归集、A/B、Judge、人工评审 |
角色、语气、输出约束、拒答条件、工具使用规则和安全边界,都更适合在系统层显式声明,而不是散落在用户输入里。
清晰的章节、编号、优先级和少量示例,往往比把所有要求无差别塞进一大段文本更稳定。
系统规则越关键,越要明确告诉模型“什么时候该遵守、什么时候该拒绝、什么时候该暴露不确定性”。
RAG 结果、用户历史、工具输出、配置项、用户画像和业务约束如何排序、如何裁剪、如何去重,会直接影响模型最终判断。
关键信息太后、噪声过多、相互冲突的上下文并列、引用关系不清楚,都会导致模型注意力被分散。
不是所有可用信息都应该放进去,很多时候“少而准”比“多而杂”更有效。
历史里混入错误判断、临时指令、失效偏好和过期状态后,模型可能在后续任务里持续沿着错误路径走下去。
短期任务状态、长期用户偏好、可验证事实和临时工作区不适合混成一个大文本块。
摘要、滑动窗口、阶段清理和显式重置点,往往比一味保留全部历史更稳健。
当输出要进入 API、前端组件、数据库或工具调用时,格式稳定性本身就是工程质量的一部分。
如果平台支持 JSON Schema、Tool Use 或结构化输出,通常更适合直接使用,而不是完全依赖自然语言约束。
协议稳定不仅取决于格式约束,还取决于上下文噪声、任务复杂度和模型是否被要求同时做太多事情。
| 类别 | 定位 | 典型能力 | 关键关注 |
|---|---|---|---|
| Prompt 模板层 | 组织系统规则与变量 | 模板版本、条件片段、Few-shot、优先级结构 | 可读性、复用性、回滚 |
| 上下文组装层 | 拼接任务所需信息 | RAG 结果、工具结果、用户画像、业务规则、排序裁剪 | 噪声控制、顺序、上下文预算 |
| 记忆层 | 维持跨轮或跨任务连续性 | 摘要记忆、用户偏好、长期事实、工作记忆 | 污染、更新频率、失效策略 |
| 输出约束层 | 稳定格式与协议 | JSON Schema、结构化输出、停止词、工具参数约束 | 协议稳定、错误恢复、可解析性 |
| 实验评测层 | 验证 Prompt 改动 | A/B、回归集、Judge、人工评审、线上反馈 | 漂移检测、样本覆盖、成本 |
| 治理层 | 控制边界与风险 | 注入防护、规则优先级、安全策略、审计记录 | 误伤率、可解释性、团队协作 |
| 方式 | 强项 | 代价 | 适合场景 |
|---|---|---|---|
| 全量历史 | 原始信息最完整、实现直观 | 成本高、污染风险大、注意力分散 | 短会话、调试阶段、小规模交互 |
| 摘要记忆 | 更节省上下文预算,适合长链路任务 | 摘要错误会被持续放大,需要校验机制 | 长会话、Agent 任务、用户长期偏好管理 |
很多“模型不行”的判断,最后都能追溯到规则冲突、上下文噪声或记忆污染。
它既是给模型的控制面,也是给工程系统的协议层,而不只是自然语言润色。
越长不一定越好,真正关键的是把最重要、最可信、最相关的信息放进正确位置。
| 证据节点 | 必须记录字段 | 用来排查什么 |
|---|---|---|
| request_trace | request_id、trace_id、tenant_id、user_intent、model_id、model_version | 这次输出问题属于哪个请求、租户、任务和模型版本 |
| prompt_asset | prompt_id、prompt_template_id、template_version、system_prompt_hash、developer_prompt_hash、prompt_layout_id | 线上行为变化到底来自哪一次提示词、模板、布局或指令层级改动 |
| context_pack | context_pack_id、context_snapshot_id、included_sources、source_authority、token_budget、truncation_reason、authority_order | 哪些信息被拼进请求,哪些被裁掉,优先级和可信度是否正确 |
| permission_boundary | acl_snapshot_id、tenant_scope、user_role、data_classification、redaction_policy_id | 上下文里是否混入了用户无权访问、跨租户或需要脱敏的材料 |
| output_contract | schema_id、schema_version、tool_schema_hash、parser_error_id、retry_policy_id | 格式漂移、工具参数错误和解析失败来自模型输出,还是协议约束不清 |
| attack_regression | injection_test_set_id、conflict_case_id、regression_eval_id、failure_slice、eval_case_id | Prompt 注入、指令冲突、RAG 伪指令和格式漂移是否被回归覆盖 |
| release_gate | owner、reviewer_id、approval_record、release_gate_id、rollback_prompt_id、fix_version | 提示词资产是否像代码一样可审查、可发布、可回滚,并能把坏例沉淀为下次门禁 |
| 事故现象 | 先看哪段证据 | 常见根因 | 修复动作 |
|---|---|---|---|
| 系统规则被用户或文档覆盖 | system_prompt_hash、developer_prompt_hash、authority_order、conflict_case_id | 指令层级没有显式表达,不可信文本没有隔离成证据 | 补指令层级测试,给 RAG / 用户文本加边界包装,接入注入回归集 |
| 答案引用了无权或跨租户信息 | tenant_id、acl_snapshot_id、tenant_scope、included_sources、redaction_policy_id | 上下文组装绕过权限过滤,或摘要记忆混入其他租户状态 | 权限过滤前置到 context pack,记录 ACL 快照,和访问控制证据包联动 |
| Prompt 小改后结构化输出漂移 | prompt_template_id、template_version、schema_id、parser_error_id、eval_case_id | 模板字段名、分隔符或示例顺序改变了输出协议倾向 | 把格式样本纳入 release gate,失败时回滚 prompt 版本或收紧 schema |
| 长会话把过期假设带到新任务 | context_snapshot_id、included_sources、truncation_reason、failure_slice | 历史、摘要、偏好和临时任务状态混在同一上下文块里 | 拆分工作记忆和长期记忆,设置显式重置点,把污染样本进入回归切片 |
| RAG 证据和 few-shot 示例互相诱导 | context_pack_id、source_authority、prompt_layout_id、regression_eval_id | 证据材料、示例和规则排列混乱,模型把事实材料当成输出示例 | 分区组装上下文,标注证据/示例/规则角色,和 ICL 证据包做交叉回放 |
Context Engineering 会继续独立成层: 团队会越来越把规则、上下文、记忆和输出协议分开设计,而不是混成一大段 Prompt。
结构化输出更常态化: JSON Schema、工具协议和更稳定的输出约束会持续进入主流工程实践。
记忆治理成为长会话重点: 长任务、长期用户交互和 Agent 系统会更依赖明确的记忆分层与清理机制。
上下文压缩与摘要质量: 如何在缩短上下文的同时保留关键事实,会越来越影响成本和效果平衡。
Prompt 资产平台化: 版本、实验、片段复用和回归测试会更像配置治理,而不是个人技巧。
规则不断堆叠: 当系统 Prompt 变成“规则垃圾场”时,模型和工程师都会越来越难理解真实控制面。
上下文污染持续积累: 会话越长、工具越多、状态越复杂,污染和漂移风险就越大。
只看 Demo 不做回归: Prompt 改动最容易在 Demo 里看起来更好,却在边界样本上悄悄退化。
ICL 页解释上下文为什么会临时改变模型行为;本页解释工程系统怎样选择、排序、压缩和约束上下文;指令层级、权限边界、请求 Trace、证据包与 LLMOps 则负责把一次请求变成可审计、可回归、可发布和可回滚的生产链路。