# 11.1 过度压缩与信息丢失

## 11.1.1 现象描述

为了节省 Token 或适应上下文窗口限制，对输入信息进行过度压缩或粗暴截断，导致关键约束、实体名称、数值条件等被丢弃。模型在缺失这些关键信息的情况下生成回答，表面上流畅，实际上与事实或需求严重偏离。

## 11.1.2 反模式示例

### 案例一：客服对话摘要丢失关键限制

> **原始对话**（多轮）：
>
> * 用户：“我想退货，订单号 A20250301。”
> * 客服：“好的，请问商品是否已拆封？”
> * 用户：“已拆封，但有质量问题，屏幕左上角有坏点。”
> * 客服：“了解，质量问题可以退货。注意：**必须在 7 天内寄回**，且需附上 **质检报告照片**。”
>
> **过度压缩后的摘要**：“用户要退货，客服同意了。”
>
> **后续模型回答**：“您可以随时将商品寄回，我们会尽快处理退款。”

**后果**：摘要丢失了 3 项关键信息——订单号、7 天时限、需要质检报告照片。模型基于缺失的上下文给出了错误指引，可能导致用户退货失败并产生投诉。

### 案例二：代码上下文过度精简

> **原始上下文**：
>
> ```python
> def process_payment(amount: float, currency: str = "USD",
>                     max_retry: int = 3,
>                     idempotency_key: str = None) -> PaymentResult:
>     “”“处理支付。amount 必须 > 0 且 <= 10000。
>     currency 仅支持 USD/EUR/CNY。
>     必须提供 idempotency_key 以防重复扣款。“”“
> ```
>
> **过度压缩后**：“有一个 process\_payment 函数用于处理支付。”
>
> **模型生成的调用代码**：`process_payment(-50, "GBP")`

**后果**：函数签名、参数约束（金额范围、支持的币种）和幂等性要求全部丢失，模型生成了违反约束的调用代码，可能触发运行时错误甚至重复扣款。

### 案例三：医疗问答摘要遗漏禁忌症

> **原始知识库片段**： “阿司匹林适用于轻度疼痛和退热。**禁忌**：活动性消化道溃疡患者、对水杨酸类药物过敏者、**妊娠晚期** 禁用。与华法林联用时需监测凝血指标。”
>
> **过度压缩后**：“阿司匹林可用于止痛退热。”
>
> **模型回答**（用户询问孕妇能否服用阿司匹林）：“阿司匹林是常见的止痛退热药物，可以服用。”

**后果**：妊娠晚期禁用这一关键安全约束被压缩掉了，模型回答可能对用户健康造成严重风险。

## 11.1.3 后果总结

* **约束违背**：压缩掉的规则和限制条件不会消失——它们只是从模型的“视野”中消失了，模型会在不知情的状态下违反这些约束。
* **幻觉加剧**：当关键事实被移除，模型倾向于用自身参数知识填补空白，而这些“填补”往往与实际情况不符。
* **安全风险**：在医疗、金融、法律等高风险场景，丢失禁忌症、合规要求或免责条款可能造成严重后果。
* **调试困难**：输出错误的根因在压缩环节，而非模型本身，排查时容易被误导。

## 11.1.4 修正方案

* **分层压缩**：区分“必须保留”和“可以压缩”的信息层级。关键约束（如禁忌、限额、截止日期）放入“不可压缩层”，背景描述和过渡性语句放入“可压缩层”。
* **关键约束锚定**：用显式结构（如 XML 标签、JSON 字段或特殊标记）标记必须保留的约束项。压缩流程跳过这些锚定内容，确保它们始终存在于上下文中。
* **任务导向摘要**：摘要时明确指定保留目标——“请保留所有时间限制、数值约束和禁止事项”，而非简单地说“请总结”。
* **渐进式压缩**：不要一步压缩到极致。先移除明显冗余（重复段落、寒暄），评估效果后再决定是否进一步压缩。每一步都验证关键信息是否保留。

## 11.1.5 检测方法

1. **关键信息保留率测试**：定义一组“必须出现在摘要中的关键信息点”（如实体、数值、约束条件），压缩后检查这些信息点的覆盖率。
2. **压缩前后效果对比**：在相同的测试集上，分别使用压缩前和压缩后的上下文运行任务，对比输出质量。如果质量下降超过阈值，说明压缩过度。
3. **边界约束验证**：专门构造包含禁止条件、数值范围、时间限制的测试用例，检查压缩后模型是否仍能正确遵守这些约束。
4. **人工抽样审查**：定期抽取压缩结果，由领域专家判断是否丢失了业务关键信息。

## 11.1.6 预防清单

* 为每一类重要约束（时间、金额、禁忌、权限等）定义“不可压缩”标签，压缩流程中自动保留
* 摘要提示词中显式要求保留数值、实体和限制条件
* 设置压缩率上限，避免一次性压缩超过 60%-70%
* 压缩后自动运行关键信息保留率检查，低于阈值时告警
* 在高风险场景（医疗、金融、法律）中，使用原文引用模式替代纯摘要模式


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/context_engineering_guide/di-san-bu-fen-jin-jie-ji-shu-yu-jia-gou/11_antipatterns/11.1_over_compression.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
