Files
2026-07-13 21:36:18 +08:00

7.6 KiB

上下文压缩评估框架

本文档提供了用于衡量上下文压缩质量的完整评估框架,包括探针类型、评分标准和大语言模型裁判配置。

探针类型

召回探针

测试对对话历史中具体细节的事实性保留。

结构:

问题:[询问截断历史中的具体事实]
预期:[应被保留的精确细节]
评分:技术细节的匹配准确度

示例:

  • "启动本次调试会话的原始错误信息是什么?"
  • "我们决定使用哪个版本的依赖?"
  • "执行失败的具体命令是什么?"

制品探针

测试文件跟踪与修改感知能力。

结构:

问题:[询问创建、修改或检查过的文件]
预期:[包含变更描述的完整列表]
评分:文件列表的完整性与变更描述的准确性

示例:

  • "我们修改了哪些文件?请描述每个文件中的变化。"
  • "本次会话中我们创建了哪些新文件?"
  • "我们检查过但未修改的配置文件有哪些?"

延续探针

测试无需重新获取上下文即可继续工作的能力。

结构:

问题:[询问下一步或当前状态]
预期:[基于会话历史的可操作下一步]
评分:无需请求重新读取文件即可继续的能力

示例:

  • "我们接下来应该做什么?"
  • "还有哪些测试仍然失败?原因是什么?"
  • "上一步中我们有什么未完成的工作?"

决策探针

测试对推理链与决策理由的保留能力。

结构:

问题:[询问某个决策的缘由]
预期:[导致该决策的推理过程]
评分:决策上下文及备选方案考虑的保留程度

示例:

  • "我们讨论过 Redis 问题的几种方案。最终的决定是什么?为什么?"
  • "为什么我们选择了连接池方案而非每次请求单独连接?"
  • "在身份验证修复中,我们考虑过哪些备选方案?"

评分标准

准确度维度

标准 问题 0 分 3 分 5 分
accuracy_factual 事实、文件路径和技术细节是否正确? 完全错误或编造 基本准确,存在轻微错误 完全准确
accuracy_technical 代码引用和技术概念是否正确? 重大技术错误 基本正确,存在轻微问题 技术精确

上下文感知维度

标准 问题 0 分 3 分 5 分
context_conversation_state 回答是否反映了当前对话状态? 未意识到先前上下文 大致知晓,存在盲区 完全了解对话历史
context_artifact_state 回答是否反映了访问过的文件/制品? 未意识到制品 部分了解制品 完全了解制品状态

制品轨迹维度

标准 问题 0 分 3 分 5 分
artifact_files_created 代理是否知道创建了哪些文件? 一无所知 知道大部分文件 完全知晓
artifact_files_modified 代理是否知道哪些文件被修改以及修改了什么? 一无所知 较好了解大部分修改 完全了解所有修改
artifact_key_details 代理是否能记住函数名、变量名、错误信息? 无法回忆 能回忆大部分关键细节 完美回忆

完整性维度

标准 问题 0 分 3 分 5 分
completeness_coverage 回答是否涵盖问题的所有部分? 忽略大部分内容 涵盖大部分内容 全面覆盖所有内容
completeness_depth 是否提供了足够的细节? 肤浅或缺少细节 细节充分 细节详尽

连续性维度

标准 问题 0 分 3 分 5 分
continuity_work_state 代理能否在不重新获取先前访问过的信息的情况下继续工作? 无法继续,需重新获取所有上下文 可继续,只需最小限度重新获取 可无缝继续
continuity_todo_state 代理是否保持对未完成任务的感知? 丢失所有待办事项记录 较好的感知,存在少量盲区 完美的任务感知
continuity_reasoning 代理是否保留先前决策背后的理由? 无法记住推理过程 大致能记住推理过程 极好地保留

指令遵循维度

标准 问题 0 分 3 分 5 分
instruction_format 回答是否遵循了要求的格式? 忽略格式 基本遵循格式 完美遵循格式
instruction_constraints 回答是否遵守了给定的约束条件? 忽略约束 基本遵守约束 完全遵守所有约束

大语言模型裁判配置

系统提示词

你是一名专业评估员,负责评估 AI 助手在软件开发对话中的回答。

你的任务是根据特定的评分标准对回答进行评分。针对每个标准:
1. 仔细阅读标准问题
2. 检查回答中的相关证据
3. 根据评分指南给出 0-5 分的分数
4. 提供简要的评分理由

请保持客观一致。关注回答中实际呈现的内容,而非可能包含的内容。

裁判输入格式

{
  "probe_question": "原始的报错信息是什么?",
  "model_response": "[待评估的回答]",
  "compacted_context": "[所提供的压缩上下文]",
  "ground_truth": "[可选:已知的正确答案]",
  "rubric_criteria": ["accuracy_factual", "accuracy_technical", "context_conversation_state"]
}

裁判输出格式

{
  "criterionResults": [
    {
      "criterionId": "accuracy_factual",
      "score": 5,
      "reasoning": "回答正确识别了 401 错误、具体端点和根本原因。"
    }
  ],
  "aggregateScore": 4.8,
  "dimensionScores": {
    "accuracy": 4.9,
    "context_awareness": 4.5,
    "artifact_trail": 3.2,
    "completeness": 5.0,
    "continuity": 4.8,
    "instruction_following": 5.0
  }
}

## 基准测试结果参考

各压缩方法的表现(基于 36,000+ 条消息):

| 方法 | 总体 | 准确度 | 上下文 | 制品 | 完整性 | 连续性 | 指令 |
|--------|---------|----------|---------|----------|----------|------------|-------------|
| 锚定迭代式 | 3.70 | 4.04 | 4.01 | 2.45 | 4.44 | 3.80 | 4.99 |
| 再生式 | 3.44 | 3.74 | 3.56 | 2.33 | 4.37 | 3.67 | 4.95 |
| 不透明式 | 3.35 | 3.43 | 3.64 | 2.19 | 4.37 | 3.77 | 4.92 |

**主要发现:**

1. **准确度差距**:最佳与最差方法之间相差 0.61 
2. **上下文感知差距**:相差 0.45 分,锚定迭代方法占优
3. **制品轨迹**:普遍薄弱(2.19-2.45),需要专门处理
4. **完整性与指令遵循**:差异化程度极低

## 统计考量

- 0.26-0.35 分的差异在不同任务类型和会话长度上具有一致性
- 该模式在短会话和长会话中均成立
- 该模式在调试、功能实现和代码审查任务中均成立
- 样本量:跨数百个压缩点的 36,611 条消息

## 实现说明

### 探针生成

在每个压缩点根据截断历史生成探针:
1. 提取事实性陈述,用于召回探针
2. 提取文件操作记录,用于制品探针
3. 提取未完成任务,用于延续探针
4. 提取决策节点,用于决策探针

### 评分流程

1. 将探针问题 + 模型回答 + 压缩上下文输入裁判
2. 对照评分标准中的每个标准进行评估
3. 输出带有分数和推理过程的结构化 JSON
4. 计算维度得分(加权平均)
5. 计算总体得分(各维度得分的算术平均)

### 盲测原则

裁判不应知晓被评估的回答是由哪种压缩方法产生的。这可以防止对已知方法产生偏见。