---
url: https://docs.nemo12.com/reference/depth-engine.md
description: >-
  Depth Engine (SDD-002 §12): thiết kế quyết định học sâu thêm còn đáng không,
  và ghi rõ hiện trạng là chưa xây.
---

# Depth Engine

> "Học sâu thêm ở đây có còn là **next best use of learner time** không?"

Thiết kế: [SDD-002](../architecture/sdd-002-learner-intelligence/models-and-engines.md) §12 · Nguồn: SRC-011 (Learning Depth & Stopping Criteria)

***

## 1. Hiện trạng: **chưa xây**

::: danger Trang này khác các trang khác trong khu Reference
Depth Engine **chưa có dòng code nào**. Kiểm lại bất cứ lúc nào:

```bash
grep -rniE "\bdepth\b|required_depth|desired_mastery|overlearning|diminishing" workers/api/src apps/*/src
```

Hôm nay lệnh này trả về **rỗng**.

Bốn REQ trỏ vào SDD-002 §12 — REQ-INT-11, REQ-LRN-07, REQ-SCH-03, REQ-PAR-06 — đang mang dấu ✔ trong PRD, nhưng ✔ đó nói rằng **yêu cầu đã có thiết kế**, không phải đã thi hành. Trang này tồn tại để khoảng cách ấy không bị hiểu nhầm.
:::

Khu Reference [chỉ mô tả cái đang chạy](index.md). Với Depth, cái đang chạy là **những mảnh thay thế** ở §3 — và chúng không tương đương.

***

## 2. Thiết kế mong muốn (SDD-002 §12)

### Sáu mức độ sâu

```
L0 Exposure · L1 Recognition · L2 Basic Application
L3 Independent Application · L4 Transfer · L5 Deep Mastery
```

Mỗi learning objective có bộ ba **`{required_depth, desired_mastery, required_confidence}`**, khác nhau theo school trên **cùng một kỹ năng**:

| School | Ví dụ target |
| --- | --- |
| Turtle lớp 7 | L3 / 0.80 / 0.80 |
| Shark thi chuyên | L4–L5 / 0.90 / 0.90 |

> **"Học kỹ" = target rõ ràng, không phải cảm giác.**

Đây là điểm cốt lõi: cùng một node "Hằng đẳng thức", đứa trẻ ở Turtle **đã xong** ở mức áp dụng độc lập, còn đứa ở Shark thì chưa — vì kỳ thi chuyên đòi vận dụng sang bài lạ.

### Điều kiện DỪNG

```
STOP khi  mastery ≥ threshold
      AND confidence ≥ threshold
      AND depth ≥ required
      AND evidence diversity ≥ min
```

Bốn điều kiện, thiếu một là chưa xong. **`evidence diversity`** đặc biệt quan trọng: 20 câu cùng một dạng không chứng minh được gì bằng 6 câu ở 6 dạng khác nhau.

### Ba cơ chế bảo vệ

| Cơ chế | Luật |
| --- | --- |
| **Diminishing returns** | `ExpectedLearningGain / TimeCost < threshold` → chuyển sang node có tác động cao hơn |
| **Overlearning protection** | Phát hiện: luyện lặp kỹ năng đã ổn định · mở rộng không phục vụ goal · đào sâu khi còn critical gap khác |
| **Depth Budget** theo goal | `critical` L4/L5 · `important` L3/L4 · `peripheral` L2/L3 |

Nguyên tắc nền: **không tối đa hoá từng node — tối đa hoá tổng thể dưới giới hạn thời gian.**

### Mặt hướng tới phụ huynh (REQ-PAR-06)

Bố mẹ muốn con "học kỹ hơn" thì phải thấy **giá phải trả**:

> *"Nâng Hệ số góc từ L3 lên L4 tốn thêm 4–6 giờ, trong khi Phân tích đa thức đang là critical gap và chưa đạt L3."*

Không có Depth Engine thì câu này không nói được bằng dữ liệu — và cuộc trò chuyện quay về cảm tính.

***

## 3. Những mảnh đang thay thế — và chúng thiếu gì

Bốn thứ đang chạy có họ hàng với Depth, nhưng **không cái nào là Depth Engine**:

| Mảnh đang chạy | Làm được gì | Thiếu gì |
| --- | --- | --- |
| **`required_state` trong `blueprint_weights`** (`chac` 0.8 · `lung_lay` 0.5 · `hong`/`unknown` 0) | Một dạng **required_depth thô**: mỗi node trong một đề có mức cần đạt riêng | Chỉ 2 mức thật, không phải 6. Gắn với **đề thi**, không gắn với **objective** |
| **`blueprints.kind`** (`conditional` / `specialized`) | Phân biệt đề điều kiện và đề chuyên — hiện thân legacy của depth target theo school (FEAT-038) | Chỉ ở cấp cả đề, không xuống từng node |
| **[Readiness Engine](readiness-model.md)** | `clamp01(mastery / threshold)` — vượt ngưỡng không cộng thêm | Đây là **chống lạm phát điểm**, không phải chống overlearning |
| **[Recommendation Engine](recommendation-engine.md)** | Gap đã đạt ngưỡng thì rơi khỏi `gap_map` → không còn được đề xuất | Đây là **hệ quả phụ**, không phải điều kiện dừng có chủ đích. Không đo `depth`, không đo `evidence diversity`, không tính `TimeCost` |

Dòng cuối là điểm cần hiểu đúng: hệ thống hôm nay **có vẻ như** biết dừng — một node đạt mastery cao thì không xuất hiện trong "Hôm nay" nữa. Nhưng đó là vì gap map hết chỗ cho nó, **không** phải vì có ai kết luận *"em đã đạt độ sâu cần thiết"*.

Khác biệt thật:

| | Hôm nay | Với Depth Engine |
| --- | --- | --- |
| Vì sao node biến mất khỏi đề xuất | Có node khác điểm cao hơn | Đã đạt `{depth, mastery, confidence, diversity}` |
| Nói với learner được gì | *(không nói gì)* | *"Phần này con đã đạt mức áp dụng độc lập — xong rồi"* |
| Learner luyện lại node đã vững | Không ai ngăn | Overlearning protection cảnh báo |
| Bố mẹ hỏi "học sâu thêm được không" | Không có dữ liệu để trả lời | Có cost + trade-off cụ thể |

***

## 4. Vì sao chưa xây — và cần gì để xây

Hai thứ chặn, cả hai đều là **dữ liệu**, không phải thuật toán:

**1. Chưa có thang depth trên nội dung.** Muốn đo `depth` của một lần trả lời thì item phải mang mức tư duy. Hiện có `role` (`canonical` / `variant` / `boundary` / `discriminator`) và `difficulty` (0–1) — cả hai đều **không phải** thang Bloom-like L0–L5. [Quality Engine](quality-engine.md) có chiều `cognitive_demand` nhưng đó là **điểm chất lượng**, không phải nhãn mức.

**2. Chưa có `TimeCost` đáng tin.** `diminishing returns` cần biết nâng một node lên mức sau tốn bao nhiêu giờ. `skill_nodes.effort_minutes` có tồn tại nhưng chưa được điền đủ và chưa ai kiểm chứng với thời gian thật.

Thứ tự hợp lý để xây:

```
1. Gắn nhãn depth (L0–L5) cho item      ← dữ liệu, làm ở Coral
2. Điền effort_minutes có kiểm chứng    ← dữ liệu
3. depth = f(item đã làm đúng, diversity) ← engine thuần, test được
4. Stopping criteria 4 điều kiện          ← engine thuần
5. Overlearning protection + depth budget ← nối vào Recommendation
6. Depth trade-off cho phụ huynh          ← REQ-PAR-06
```

Bước 3–4 là phần rẻ nhất. Bước 1–2 là phần thật sự tốn công.

***

## 5. Khi xây thì đặt ở đâu

Theo khuôn đã có của các engine khác ([Goal](goal-model.md), [Retention](retention-model.md)):

| | |
| --- | --- |
| Engine thuần | `modules/depth/engine.ts` — không I/O, không LLM, test hành vi được |
| I/O | `modules/depth/service.ts` |
| Model kind | thêm `depth` vào `MODEL_KINDS` (`shared/runlog.ts`) trước tiên |
| Chạy trong | [WF-04](workflows.md), sau Learner Model (cần mastery) và Retention |
| Tiêu thụ | [Recommendation](recommendation-engine.md) (stopping + overlearning) · [Learning Plan](learning-plan-model.md) (depth budget) · [Parent](parent-model.md) (trade-off) |

Và tuân đúng các bất biến chung: rỗng là hợp lệ, có `confidence` nói rõ đang đoán tới đâu, không bao giờ ghi ngược vào `learner_skill_state`.

## Trace

* REQ-INT-11 (depth levels, stopping criteria, diminishing returns, overlearning, depth budget), REQ-LRN-07 (dừng đúng lúc), REQ-SCH-03 (depth target theo school), REQ-PAR-06 (trade-off cho phụ huynh) · US-08, US-13.
* Nguồn: SRC-011 (Learning Depth & Stopping Criteria), SRC-105 · FEAT-038 (legacy `math_target_blueprint`).
* Thiết kế: [SDD-002](../architecture/sdd-002-learner-intelligence/models-and-engines.md) §12.
* Liên quan: [Readiness](readiness-model.md) · [Recommendation](recommendation-engine.md) · [Quality Engine](quality-engine.md) · [Learning Engine §8](learning-engine.md#8-khoảng-trống-lớn-nhất-chưa-có-difficulty-controller) (Difficulty Controller cũng chưa có).
