
## Trigger

- Using Codex / Claude Code / any coding agent on a **learning-oriented project** (or one you have explicitly marked as a learning project): the multi-GPU MaaS serving platform, SafeSteer reproduction, any resume/skill project — where the goal is that *you* learn it, not just that it ships.
- Symptom (the thing to kill): code runs and the PR merges, but you cannot read, explain, or debug it without the AI — "纯 AI 在做，我没学到东西".

## Fix

Frame: **AI types; you own the 思路 / 算法 / 理解.** Split the labor so the *thinking* stays with you; use the AI to teach, not to replace the struggle.

**1. Split labor — own the design, delegate the typing**
- YOU produce first, before prompting: problem framing, architecture, the interface, the algorithm choice + why-not-the-alternatives, and the test cases.
- AI produces: implementation of *your* design, boilerplate, syntax, API lookups.
- Heuristic: a decision needing a tradeoff judgment is yours; anything mechanical is the AI's.

**2. Productive struggle BEFORE the answer (the evidence-backed differentiator)**
- Attempt the core yourself (or at least a precise written plan) before asking the AI. The struggle must come *before* the answer: delegating code-gen correlates with far lower comprehension; conceptual-inquiry-first / attempt-then-check correlates with much higher comprehension.
- Run the AI in **explain / Socratic mode**, not generate-only: ask it to teach the concept, quiz you, and justify "why this and not X". (Claude Code Explanatory mode, ChatGPT Study Mode.)

**3. Review like a senior, read every line**
- Most professional developers read every line of AI code and review every change. Treat the AI as a junior whose PR you must approve — interrogate each decision.
- Never run or merge code you cannot explain line by line (= the 每行都懂 discipline).

**4. Gate = closed-book reconstruction (this card's verify)**
- Per module: closed-book, explain each function + redraw the flow + name the algorithm and a rejected alternative. Can't → not learned → **do not merge**.
- Periodically: a **no-AI rebuild** — reimplement the module's core from a blank page; what you can't reproduce, you didn't learn.

**5. Make it stick**
- Turn each new concept into an active-recall question in the Obsidian vault (周报 / 学习日志) and review it spaced. Feynman: can't explain it plainly → don't understand it yet.
- Keep one **no-AI sprint** per week (one small feature built without AI) to keep the muscle.

## Mode

- Applies in both **engineering** (MaaS serving platform) and **research** (SafeSteer) work — it is a standing working discipline, hence `principle`.
- Loading: principle → 1–2 line essence near-always; open this full card when starting any AI-delegated build on a learning project. The essence line may be mirrored into user `AGENTS.md` principle cards.

## Sources

- Anthropic skill-formation study, via InfoQ: https://www.infoq.com/news/2026/02/ai-coding-skill-formation/
- Addy Osmani, "Avoiding Skill Atrophy in the Age of AI": https://addyo.substack.com/p/avoiding-skill-atrophy-in-the-age
- "Professional Software Developers Don't Vibe, They Control" (arXiv 2512.14012): https://arxiv.org/abs/2512.14012
- Andrej Karpathy "vibe coding" + Simon Willison caveat, summarized: https://www.nxcode.io/resources/news/what-is-vibe-coding-complete-guide-ai-development-2026
- Active Recall + Feynman Technique: https://www.intellecs.ai/blog/active-recall-feynman-technique-the-ultimate-study-method

## Reuse Rule

- **Default OFF — not every project.** Apply only when the project is **learning-oriented** (a skill / resume project whose whole point is that you learn it — multi-GPU MaaS platform, SafeSteer) OR one you **explicitly designate as a learning project** for the task at hand.
- For ship-only / throwaway / pure-delivery work, skip it — let the AI run; there, speed beats your personal understanding.
- Within an active learning project the gate is per-module and **blocking**: a failed reconstruction check stops the merge until the gap is closed.
