# KDNA 评估方法

> [English](./evaluation.md) · 参见：[元认知](./meta-cognition.zh.md)

KDNA 声称能改善 Agent 的判断力。本文档定义如何检验这一主张。

## 核心原则

> **KDNA 生效的标志是推理路径改变，而不只是措辞优化。**

一个被 KDNA 塑造过的回答，应该在诊断结构上与通用回答不同——不是措辞更好，而是判断方式不同。

## 评分维度

每个维度评分 1–5。加载 KDNA 的回答应在大多数维度上高于无 KDNA 的基线。

| # | 维度 | 检查什么 |
|---|---|---|
| D1 | **诊断深度** | 回答是否识别了根本原因而非表面症状？ |
| D2 | **术语一致性** | 是否使用了领域首选术语，避免了禁用词？ |
| D3 | **误解检测** | 是否发现用户问题中隐含的误解？ |
| D4 | **公理对齐** | 推理是否遵循领域公理而非通用常识？ |
| D5 | **场景分类** | 是否正确分类了情境类型？ |
| D6 | **可操作的具体性** | 给出的建议是否具体且有领域特征，而非泛泛而谈？ |
| D7 | **边界意识** | 回答是否知道不该做什么或不该声称什么？ |
| D8 | **自查通过率** | 领域自查项中有多少比例被答案满足？ |

## A/B 测试设计

为每个领域定义测试用例。对比同一输入在有无 KDNA 时的回答差异。

### 测试用例格式

```json
{
  "id": "sales_price_objection_01",
  "domain": "sales",
  "input": "客户说我们的服务太贵了，怎么办？",
  "without_kdna_expected": {
    "likely_response_pattern": "建议打折或解释产品价值",
    "failure_mode": "将价格异议当作定价问题处理，而非确定性缺失"
  },
  "with_kdna_expected": {
    "likely_response_pattern": "先诊断是哪个确定性维度缺失（价值、匹配、风险、社会认同），再回应",
    "success_signal": "识别出这是确定性信号，而非价格谈判触发点"
  },
  "scoring_weight": {
    "D1_diagnostic_depth": 5,
    "D3_misunderstanding_detection": 5,
    "D4_axiom_alignment": 4,
    "D5_scenario_classification": 3
  }
}
```

### 测试套件结构

```
evals/
├── sales/
│   ├── price_objection.json
│   ├── trust_deficit.json
│   └── urgency_trap.json
├── communication/
│   ├── conflict_escalation.json
│   └── emotional_deflection.json
└── management/
    ├── execution_failure.json
    └── delegation_avoidance.json
```

每个领域至少 3 个测试用例，覆盖其核心判断维度。

## 最小可行评估

从最简单的测试开始：

1. 选定一个领域和一个测试用例。
2. 让 Agent 对同一输入回答两次：一次不加载 KDNA，一次加载 KDNA。
3. 比较推理路径——不只看最终答案，看假设、诊断动作、术语使用。
4. 在 D1–D8 上分别打分。
5. 如果加载 KDNA 的回答在加权维度上不高于基线 2 分以上，该 KDNA 领域没有生效。

## 自查清单作为自动评估

每个领域的 `KDNA_Patterns.json` 包含 `self_check` 自查项。这些可以作为自动评估：

| 自查类型 | 评估用途 |
|---|---|
| "回答是否使用了[指定术语]？" | 术语一致性 |
| "回答是否避免了[禁用词]？" | 负面模式检测 |
| "回答是否先诊断再建议？" | 公理对齐 |
| "回答是否识别了[某维度]类型？" | 场景分类 |

对输出运行自查项，可以给出来自机器的质量信号，无需对每个测试都做人工判断。

## 质量分级

| 得分范围 | 标签 | 含义 |
|---|---|---|
| 8–8（D1–D8 全部满分） | 卓越 | KDNA 正在改变判断方式，领域高度有效 |
| 6–7 | 有效 | 相比基线有明显改善，领域运行良好 |
| 4–5 | 勉强 | 有改善但不稳定，未在多个维度体现 |
| 1–3 | 无效 | KDNA 未改变推理路径，领域需要修订 |

## 领域评估失败时

如果领域持续得分低于 5：

1. 检查公理是否太模糊，无法引导推理。
2. 检查误解是否太泛泛，无法被检测到。
3. 检查自查项是否真的可以用是/否回答。
4. 检查禁用词是否真的出现在 Agent 输出中。
5. 考虑领域边界是否过宽——收窄它。

一个无法被评估的领域不是领域——只是一份文档。

## 路线图

| 阶段 | 做什么 |
|---|---|
| 现在 | 每个领域添加 3 个测试用例到 `evals/` 目录 |
| 近期 | 编写脚本：同一 prompt 加载/不加载 KDNA，对比输出差异 |
| 中期 | 将自查项集成到自动化评分中 |
| 远期 | 社区贡献新领域的评测集 |
