# AMusA Piano · Ethan 的考官知识库

> 为 **AMEB AMusA（Associate in Music, Australia）Piano** 文凭考试 **Section II（General Knowledge）**
> 构建的、**可直接喂给 AI agent** 的知识库 + 模拟考官。
>
> **来源**：课程站点 <https://amus.taolab.dev>（含其自身的 `07-errata` 准确性复核）+ 联网核查。
> **曲目**：Haydn Hob. XVI:20（A）· Bach BWV 875（B）· Chopin B. 56 / CT 222（C）· Bartók Sz. 56（D）

---

## 🚀 最快的用法

### A. 想用语音练（推荐）
打开 **`agents/chatgpt-voice-examiner.md`**，把里面「====」之间的内容整段复制，粘贴进 ChatGPT（或任何支持语音的 AI），发送。
它**自带全部事实**，不需要读任何文件，粘完就能开口考。

### B. 想让能读文件的 agent 来考（Copilot CLI / Claude / Cursor 等）
把 **`agents/examiner.md`** 作为 system prompt，并让 agent 能访问 `kb/` 和 `questions/`。

### C. 想自己刷题（交互版）
双击打开 **`practice/index.html`** —— 164 题的离线练习页，**双击即用，不需要联网也不需要开服务器**。

> **默认全英文** —— 真考场是英语口试，这里练的就是**说得出来**。
> 右上角可切 **中文**对照；展开答案后还有一个按钮可以临时看另一种语言。

按范围 / 难度筛选，<kbd>空格</kbd> 显示答案，<kbd>1</kbd> 不会 / <kbd>2</kbd> 会，进度存在浏览器里。
选「trap · the ones people fail」就是 38 道易错题的专项训练。

### D. 课程站自带的在线练习
| 页面 | 内容 |
|---|---|
| <https://amus.taolab.dev/resources/AMusA-Revision-Cards-2.html> | 96 题，3D 翻卡 + 进度谱表 |
| <https://amus.taolab.dev/resources/AMusA-Revision-Cards.html> | 66 题，要点式答案，可按作曲家筛选 |
| <https://amus.taolab.dev/06-practice.html> | 4 组完整模拟口试，点 Reveal answer 对答案 |
| <https://amus.taolab.dev/05-together.html> | 迷你模拟口试（3 题综合） |

> ⚠️ 站点说这两套卡片"已按准确性复核修正过"，但 **`kb/99` 的 G 节列出的 12 条源站自身错误，卡片里可能仍然存在**。卡片与 `kb/` 冲突时，**以 `kb/` 为准**。

### E. 想读原文
- **`questions/bank-en.md`** —— **英文版，练习用这一份**。每个 `A` 都按**出声说 70–90 词**写。
- **`questions/bank.md`** —— 中文版，对照和理解用。

两份**一一对应**，ID 相同，共 164 题。

---

## 📁 目录结构

```
amusa/
├── README.md                          ← 你在这里
├── agents/
│   ├── chatgpt-voice-examiner.md      ★ 单文件、自带知识、可粘进 ChatGPT 语音聊天
│   ├── examiner.md                      考官 agent 系统提示词（需能读 kb/）
│   └── rubric.md                        评分标准 + 常见扣分模式
├── kb/
│   ├── 00-exam-format.md                考试规则、五大提问领域、起飞前清单
│   ├── 01-bach-bwv875.md
│   ├── 02-haydn-hob-xvi-20.md
│   ├── 03-chopin-waltz-b56.md
│   ├── 04-bartok-sz56.md
│   ├── 05-programme-wide.md             跨曲目的三个秘密 + 拉远镜头问题
│   └── 99-myths-and-errata.md         ★ 23 条辟谣 —— 冲突时以此为最高权威
├── questions/
│   ├── bank-en.md                     ★ 英文版 —— 练习用这一份
│   ├── bank.md                          中文版 —— 对照用
│   ├── bank-en.jsonl                    机器可读版
│   └── bank.jsonl                       机器可读版
├── practice/
│   └── index.html                     ★ 离线交互练习页（英文默认，双击即用）
└── tools/
    ├── build_bank.py                    bank{,-en}.md → bank{,-en}.jsonl
    └── build_practice.py                两个 jsonl 合并 → practice/index.html
```

改完任一个 bank 之后，跑这三条：

```bash
python3 tools/build_bank.py en     # 英文版
python3 tools/build_bank.py zh     # 中文版
python3 tools/build_practice.py    # 重建练习页
```

---

## 📊 题库构成

| 分组 | 题数 |
|---|---|
| 考试规则与节目单 | 20 |
| Bach BWV 875 | 30 |
| Haydn Hob. XVI:20 | 30 |
| Chopin B. 56 | 25 |
| Bartók Sz. 56 | 30 |
| 谱面记号（指着谱子问） | 12 |
| 乐器（补充） | 6 |
| 作曲家（补充） | 5 |
| 跨曲目开放题 | 6 |
| **合计** | **164** |
| 其中**陷阱题**（故意诱错） | **38** |

按考纲五大领域的覆盖：

| 领域 | 题数 |
|---|---|
| 1 Terminology | 38 |
| 4 Structure | 34 |
| 3 Historical & stylistic context | 28 |
| 0 考试规则与节目单 | 22 |
| 2 Composers | 20 |
| 5 The instrument | 16 |
| 跨曲目开放题（不归领域） | 6 |

每题字段：`Q` 提问 · `A` 正确答案 · `Trap` 常见错误 · `Follow-up` 加码追问 · `Fun` 趣味加分料。
标签：`core`（必答）/ `stretch`（拉开差距）/ `trap`（陷阱）。
领域：1 术语 · 2 作曲家 · 3 历史与风格 · 4 结构 · 5 乐器（0 = 考试规则）。

---

## 🎯 设计原则

### 1. 事实不是答案，事实是证据
考纲对 Section II 的原话是：展现 "a **mature understanding**… and to use this **as a basis for
discussing the interpretive choices that they make**."

→ **所以每个答案都必须落在一个演奏决定上。** 知识库里每个范例答案都以「……所以我这样弹」收尾；
考官 agent 被明确要求：如果没落到决定上就追问 *"And what does that mean for how you play it?"*

### 2. 陷阱是工具，不是目标
164 题里有 **38 道陷阱题**。原因是：这四首作品在网上流传着大量**错误但听起来像常识**的说法
（"written first, published last"、"Vivace"、"chromatic fugue"、"knee levers"、
"recapitulation at bar 78"、"mounting of a jewel 出自 1931 年"……）。

> ⚠️ **但辟谣不是最高标准。** 考纲要的是 **musical understanding**，
> 所以最高水准是**用具体的谱面证据加相关背景，为一个诠释选择作出有说服力的辩护**。
> **知道流行说法为什么错，是一种可用的证据，不是独立要求，也不单独加分** ——
> 它只有在**构成那个诠释理由时**才有价值。详见 `agents/rubric.md` 的 L1–L4。

### 2b. 二阶勘误：源站自己也有错
`kb/99-myths-and-errata.md` 的 **G 节**记录了 **12 条连课程站点自己都还错着的内容**
（由 GPT‑6.1 Sol 事实复核发现），例如把羽管键琴和击弦古钢琴合并成"键不控制音量"、
把 ♭VI 定义成"主音下方大六度"、用颤音规则回答 mordent、把 Bartók 的调性中心说成"按四五度走"。
**所以"和源站一致"不能替代"事实正确"。遇到冲突以 G 节为准。**

### 3. 知识性 + 趣味性
每道题都尽量带一个 `Fun` 字段，是真实的、可在考场抛出的细节。例如：

- 写着 Ethan 这首 Bach 前奏曲的那张纸，**曾经属于 Clementi**（就是写小奏鸣曲那位）。
- Haydn 这首的题献者，她们的父亲**发明了医生敲你后背的那个动作** —— 灵感来自**敲酒桶**。
- Bartók 这套开场那支曲调，是在**一件乐器（kontra）首次进入学术记录的那一天**被采集的。
- 整部《平均律》**第二卷比第一卷先出版** —— 连印版号都看得出来。
- Bartók 那句"人民的兄弟情谊"，落款字面写着 **"Between Berlin and Budapest"**。

---

## ⚠️ 时效条件（必须定期重核）

| 项目 | 状态 |
|---|---|
| **已核验到 2026**：曲目归属（四首各自的 List）、节目架构、时长 25–40 分钟、反复与 *da capo* | 核对自 AMEB *Piano Syllabus* **2020** 与 **2026**；课程站点于 **2026‑08‑23** 逐行复核 |
| ⚠️ **未逐条核验到 2026**：Manual **Regulations**（13/17/19/25/26）与成绩措辞 | **沿用 2020 年代版本的 Manual**。这不意味着它们已改变，只意味着**没有被重新确认过** |
| **重核触发条件** | **Ethan 的实际报考年度 ≠ 2026 时**，必须重新核对 |
| 怎么重核 | `ameb.edu.au → Syllabuses → Piano`（免费下载）→ 打开 **Level 3 Associate** 页 → 逐一确认四首作品**仍在列表上**且 **list 字母未变**；Regulations 相关问题直接问所在州办公室 |

> **Regulation 25**：在文凭考试中呈现一首不在列表上的作品 → 该作品 "cannot be heard" →
> "the absence of one or more works will result in **no award** being given."
> **分级考试里弹错曲子损失一个级别；文凭考试里损失整个文凭。** 这是唯一不能省的核对。

此外：`kb/` 里的小节号均已注明版本（Chopin 用 **Henle**；**波兰国家版从 *ff* 段起多 16**）。
**在 Ethan 实际演奏的那个版本上再确认一遍。**

---

## 🔄 建议的练习循环

1. 读一遍对应的 `kb/0X-*.md`。
2. 用 `agents/chatgpt-voice-examiner.md` **出声**做一轮模拟（选"完整模拟"）。
   **全程英语** —— 考官被要求在你说中文时回一句 "In English, please" 并**重问同一题**。
   **开场先告诉它你用的是哪个版本** —— 它看不见你的谱。
3. 看报告，把**答错的和停在 L2（事实对但说不出音乐后果）的**记下来。
4. ⚠️ **先自己核实，再**把新发现的错误回填进 `questions/bank.md`，重跑 `tools/build_bank.py`。
   **AI 的判错本身也可能是错的** —— 别把一次判分错误变成未来的"权威资料"。
5. 改完 `kb/` 或 `bank.md` 后，**回去同步 `agents/chatgpt-voice-examiner.md` 里的事实表**，
   否则语音考官会一直在考旧快照。
6. 一周后做一次"**陷阱专场**"，只打 12 道易错题。
7. 憋不出某个词时**别切中文** —— 说 "How would I say that in English?"，拿到词之后**把整句重说一遍**。

**关键**：**出声回答，用完整的英语句子**。考试考的是流利度，不是认得出来 —— 默读永远练不出来。

---

## 🔍 评审记录

本知识库经过两轮 **GPT‑6.1 Sol** 独立评审（2026‑10‑04），意见已全部落实：

| 评审 | 发现 | 处理 |
|---|---|---|
| **事实准确性**（联网逐条核验） | 12 条，含 **2 条 CRITICAL** | 全部修正。其中 **12 条源站自身也错着**，另列为 `kb/99` 的 **G 节（二阶勘误）** |
| **设计 / 提示词健壮性** | 10 条，含 5 条 blocking | 全部落实 —— 见下表 |

两条 **CRITICAL** 事实错误：
1. 把羽管键琴和击弦古钢琴合并成"键不控制音量"，并推论"羽管键琴上写 f/p 没有意义"
   —— **击弦古钢琴对触键敏感**；**Bach 在《意大利协奏曲》BWV 971 里就标了 forte 和 piano**。
2. 把 **♭VI** 定义成"主音**下方大六度**"—— C 下方大六度是 **E♭**；正确是**主音上方小六度**。

设计评审带来的结构性修改：

| 问题 | 修改 |
|---|---|
| L4 把"知道辟谣"当成最高评价的**必要条件** | 改为"**用谱面证据 + 背景为诠释选择辩护**"；辟谣降为可用证据 |
| 要求**每一题**都落到"所以我这样弹" | 改为**只在涉及诠释、或事实确有演奏后果时**才追问 |
| 考官假装"我正指着第 25 小节" | 它**看不见谱** → 改成 "Please find bar 25 and tell me…"，并**只对有依据的位置计分** |
| 陷阱答错后仍说 "Good" | **禁止**；改为一次固定中性复核 "What evidence supports that?"，仍错则 "Thank you." |
| 0–4 分 × 五领域 = 20 分制**算术是坏的** | 删除，改为**证据画像**（已观察/证据/本轮未测试/待加强）；**未测到的不计分** |
| 报告直接给 Award / Distinction | **禁止** —— 没听到演奏就不能给整体判定 |
| 事实表可能被**念出来或泄露答案** | 交互协议**前置**，事实表标为**静默参考区**并加边界标记 |
| 45 秒当作可测量的扣分项 | 改为**简洁目标**；长范例加注"约 140 词 ≈ 60 秒，是素材库不是背诵模板" |
| 答案被当成**唯一正确措辞** | 加判定规则：区分"我的版本印了什么"vs"作曲家写了什么"；**有谱面依据的不同诠释可以成立** |
| 覆盖缺口（乐器只有 10 题等） | 补 **23 题**：谱面记号 12 / 乐器 6 / 作曲家 5，五大领域覆盖拉平 |
