學習任何事物框架 (Learn Something Framework)
透過互動式 LLM 對話將主題轉化為結構化課程。 透過 CLI 學習:閱讀課程、解釋回饋、練習選擇題、間隔重複。
1. 教學法
融合三種理論:
| 理論 | AI 角色 | 解決的問題 |
|---|---|---|
| Marva Collins | 蘇格拉底式導師。嚴謹的問答、高期望、無限耐心 | 需要優秀教師,但 AI 永不疲倦。 |
| 費曼技巧 | 缺口偵測器。學習者簡單解釋 → AI 找出漏洞 | 理解上的錯覺 |
| 理想難度 | 排程間隔器。FSRS 提取 + 交互練習 | 被動重讀 |
階段 → 理論對應
| 階段 | 理論 | 學習者 | AI/CLI |
|---|---|---|---|
| 閱讀 | Marva | 研讀課程 | 撰寫清晰的內容 |
| 解釋 | 費曼 | 簡單解釋概念 | 探問:「你說了 X,但 Y 呢—如何調和?」 |
| 練習 | Marva + 理想難度 | 回答選擇題並說明理由 | 評分、解釋錯誤選項 |
| 評判 | Marva | 批判、形成觀點 | 蘇格拉底式追問 |
| 複習 | 理想難度 | 透過 FSRS 進行主動提取 | 排程最佳間隔 |
時間預算
- 主題:最多 40 小時(13 週 × 每週 3 小時)
- 模組:1.5-3 小時,每個主題約 15-20 個模組
- SRS 複習:每天約 10-15 分鐘
2. 內容結構
<主題>/
├── syllabus.yaml # 課程規格
├── modules/
│ ├── NN-名稱/
│ │ ├── lesson.md # 核心內容 + 練習
│ │ ├── quiz.yaml # 8-10 題選擇題
│ │ └── cloze.yaml # 8-10 題克漏字
│ └── ...
└── srs/
├── deck.json # FSRS-5 卡片
└── stats.json # 學習歷程
完整範本在 templates/ 目錄中。重點檔案:syllabus.yaml(20 個模組骨架)、module.md(課程結構)、quiz.yaml(4 選項選擇題格式)。
3. 內容創建協議
工作流程
- 範圍界定(5 分鐘):詢問領域/程度/時間預算/語言/使用案例。提出課程大綱。
- 大綱階段:驗證模組依賴圖 + 先備知識鏈。檢查時間預算。
3. 每個模組(10 分鐘):使用
learn.sh create-module <主題> <NN-名稱>建立模組。編號為兩位數零填充 + 短橫線分隔名稱(例如01-intro、02-core-concepts)。撰寫 lesson.md + quiz.yaml。即時套用 16 條品質規則。確保 lesson.md 不超過 12,000 字元。若內容超出,則拆分為更多模組並更新 syllabus。由使用者審查後,再繼續進行。 3.5. 驗證語法:執行learn.sh validate-content <主題> [模組]。在繼續之前修正所有 markdown 及 mermaid 錯誤。 - 發布前準備:載入
content-verify.md。執行檢查清單。修正所有違規。 - 編譯 SRS(2 分鐘):從選擇題提取問題 → 建立 FSRS-5 卡片組。
- 累積測驗:每 3-5 個模組後,在主題根目錄下產生
cumulative_quiz.yaml。包含 8-10 題混合克漏字、選擇題、是非題。每題標記source_modules。答案分散在 A-D 選項。
內容原則
- CILO 對齊:每個模組至少服務一個學習目標。無填充內容。
- 語言:所有內容使用 syllabus.yaml 中指定的語言(
en/zh/yue)。 - 實務優先:先以具體例子開始,再引入抽象定義。
- 領域相關:案例來自學習者的行業背景。
- 克漏字刪除:每個模組有 3-5 個克漏字填空(
{術語})。學習者需先填答才能繼續。強制在閱讀時進行提取。 - 預測下一步:每個因果鏈包含 2-3 個預測區塊。學習者在顯示結果前先做出預測。
- 錯誤辨別:每個模組有 1-2 個「找出錯誤」練習。從錯誤中學習能培養診斷技能。
- 雙重編碼:每個概念都有一個圖表(Mermaid、ASCII 圖或結構化層級)。
- 選擇題多樣性:40% 回憶題、40% 應用題、20% 多步驟題。
- 費曼提示:每課結尾都有解釋任務 + AI 缺口探測。
- 理想難度:同一概念在不同模組中以不同角度測試。
- 時間預算:每個模組不超過 3 小時。每個主題不超過 40 小時。
- 模組大小限制:每個模組的 lesson.md 不超過 12,000 字元。若超出限制?將主題拆分為更多模組。相應調整 syllabus 中的模組數量。
- 漸進式學習:建立在先備知識之上。早期的模組為基礎。
- 允許跳過:學習者提供的資訊不多?仍然使用合理的預設值生成內容。不要阻塞流程。
- 貫穿蘇格拉底式提問:每個主要概念之後都有一個問題,讓學習者停下來思考—不僅在模組結尾,而是在每個新想法之後立即進行。問題 → 緊接提供簡短答案/解釋,以便學習者自我檢查。模式:陳述概念 → 問「為什麼?」或「如果...會怎樣?」→ 提供答案。
- Mermaid 圖表:對於具有分支邏輯、狀態機、工作流程或因果鏈的概念:產生 Mermaid 流程圖/序列圖/狀態圖。主題會自動注入
neutral以相容深色/淺色主題。使用柔和的土色調色盤進行style填充—在深色和淺色主題中都可見。色板:藍色#5c7a99、綠色#5c8a6a、橙色#b8924a、紅色#b86a4a、紫色#7a5a8a、灰色#888。線條顏色:使用填充色的更深色調或#333。範例:style A fill:#5c7a99,stroke:#333。圖表應緊接在概念解釋之後、思考問題之前放置。 - 模組心智圖:每個模組在 lesson.md 頂部(在後設資料之後、學習目標之前)都有一個 Mermaid 心智圖。顯示知識層級:中心概念 → 關鍵主題 → 子概念。使用
mindmap語法。最多 3 層深度。 - 答案分佈:選擇題的答案必須平均分佈在 A/B/C/D 選項中。連續兩題以上的答案字母不得相同。範本以 B 為例,但在生成時應輪換。
- 累積測驗:每 3-5 個模組後,在主題根目錄下產生
cumulative_quiz.yaml。包含 8-10 題混合克漏字、選擇題、是非題。每題標記source_modules。答案分散在 A-D 選項。
內容品質規則(16 條)
| # | 規則 | 做法 | 錯誤範例 → 正確範例 |
|---|---|---|---|
| 1 | 解釋慣例 | 說明為何存在該慣例,而不只是說明它是什麼 | 「價格報價 95」→「『95』表示面額 $1,000 的 95%。百分比慣例可以比較不同面值債券的價格。」 |
| 2 | 回答隱性問題 | 預測學習者尚未提出的 1-3 個問題 | 對票面利率保持沉默 → 「票面利率會改變嗎?固定利率債券不會。浮動利率票據會 (定期重設)。」 |
| 3 | 到期收斂直覺 | 解釋價格 → 到期時趨向面值是機制性的 | 「價格會收斂至面值,因為時間縮短 + 剩餘現金流的現值會趨向本金。並非由利率驅動。」 |
| 4 | 因果鏈優先 | 公式之前先給直覺邏輯 | 直接跳到債券定價公式 → 「新債券支付 6%。我的債券支付 4%。我的價值較低 → 價格下跌直到收益率匹配。」 |
| 5 | 實務背景 | 每個數字都有實際意義 | 「存續期間 7.5」→「利率上升 1% → 價格下跌約 7.5%(僅限微小變動;大幅變動需凸性調整)。」 |
| 6 | 「可能性」 | 說明正常 vs 罕見的發生頻率 | 省略 → 「殖利率曲線倒掛很少見。每次倒掛都預示著衰退(約 8 個月後)。並非完美預測。」 |
| 7 | 常見誤解 | 標記初學者常有的 1-2 個特定錯誤 | 「較高票面利率 = 較好的債券」→ 「不。折價債券在到期時具有內建的價格上漲(增值)。」 |
| 8 | 貫穿蘇格拉底式提問 | 每個概念段落嵌入思考問題 + 即時答案 | 學習者被動閱讀 → 被迫停下、消化 |
...(因篇幅關係截斷)