Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,22 @@

---

## [Unreleased]

## [V5.0-rc1] - 2026-08-04

### 2026-08-04 — `feat` — 新增三门内置课程与 load_course.py 加载器(KC 骨架 + 锚点真题)
- 新增 `courses/{calc-a1,calc-a2,linalg}/seed.yaml`:微积分A1(29 KC)、微积分A2(30 KC)、线性代数(10 KC) 的知识骨架(按电子教案/期末复习章节提炼)。
- **锚点真题(供 Agent 参考出题风格)**:提取微积分A1 期末样卷 7 道选择题、微积分A2 期末样卷 13 道(填空+解答)、线代《习题1》4 道(行列式/方程组),答案均经独立计算复核;另每门配 8 道 synthetic 题(过四道闸门)作风格补充。预置课程不提供完整题库——刷题时已有题直接用,凑不够的部分由主 Agent 现场三卡生成。
- 新增 `scripts/load_course.py`:把内置课程作为事件灌入工作区(init_course + source_registered + kc_created + register_question + derive),符合「events.jsonl 唯一真相源」铁律;支持 `--list` / `--course-id` / `--exam-date`。
- `SKILL.md` 新增「内置课程(开箱即学)」节、开场分流选项 F、路由表「内置课程」行、「没有课程」状态优先提示内置课程。
- 修复:YAML 把 `2026-01-10` 隐式解析为 `datetime.date` 致事件 JSON 序列化失败,`load_course.py` 统一转为字符串。
- 依据:`Desktop\study-loop内置课程`(清华 2025-26);大学物理B1 不在本批材料范围。
- 涉及:`scripts/load_course.py`、`courses/`、`SKILL.md`、`README.md`、`CHANGELOG.md`。

### 2026-08-04 — `docs` — README 首屏定位与海报标语改为最简白话版
- 重写中英文 README 首屏定位:去掉“证据驱动学习闭环”“沉淀”“动态安排”等术语与 AI 化措辞。第一句直接给出功能定义(大学课程复习与备考助手),再用「别的软件 vs study-loop」的对比把核心竞争点讲清楚——不让你假装学会:独立做对 + 换题型再考 + 追错因 + AI 出题自检;末尾保留本地优先与「听懂 ≠ 掌握」标语。
- 配套更新中英海报文字层:副标题由「面向长期掌握的证据驱动学习 Agent」改为「不让你假装学会的大学复习助手」;特性标签由「错因记忆 · 间隔复习 · 迁移验证 · 下一步建议」改为「记错因 · 防遗忘 · 换题再考 · 今天学什么」。
- 依据:askSia / Anki / Remnote / Quizlet / QuestionAI / 作业帮 / 夸克 共 6+ 家竞品调研,确认 study-loop 真正独有的差异化为情境化错因记忆、迁移验证闭环、出题四闸门、证据驱动六态、本地事件溯源。
- 涉及:`README.md`、`README_EN.md`、`assets/readme-banner-zh.svg`、`assets/readme-banner-en.svg`、`CHANGELOG.md`。
### 2026-07-26 — `docs` — README / CLAUDE.md / README_EN.md 同步最新产品定位 md
- README / README_EN:产品定位开头改为「不生产知识,生产关于你的证据」并指向产品定位 md;教学状态「六态」→「七态」(补 `unseen`,共 3 处);错因描述补「14 类」;Roadmap 同步 md §9(场景补全 / 断点续传 / 三前端回传 / 出题双路径 / 内容解析)。README_EN 补回缺失的 V4 交付段。
- CLAUDE.md:「这是什么」加「证据驱动」核心定位 + 指向产品定位 md;KC 字段补 `source_ids`/`aliases`/`related`/`weight`/`syllabus_node`;Question 字段补溯源 `grounding`/`exam_ref`/`style_note`/`rubric` 等;常用命令补 `drill.py`;末尾「正在推进的功能(V1→V2)」(三项均已完成)重写为「当前进度(V4 已交付)+ 下一轮目标」。
Expand Down
21 changes: 19 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,15 @@

---

`study-loop` 是你课程学习的好伙伴——从课前预习到考前冲刺,同一个 agent、同一套知识点体系、同一份学习档案。它不生产知识,**它生产关于你的证据**:把每一道题变成一份可查证、可反驳的知识档案。它记录的不只是“答对没有”,还包括为什么会错、在什么条件下会错、能否迁移、依赖多少提示、多久会忘,以及下一步最值得学什么
`study-loop` 是一个帮你复习大学课程、准备考试的助手,在 Claude Code 里使用

> **Explanation is not evidence.** 听懂不是掌握证据,独立完成才是。
告诉它你在学哪门课、什么时候考试,它就帮你安排每天最该学什么、出题给你练、把错题揪出来讲清楚、按遗忘曲线带你复习,考前还能直接出一份模拟卷——从开学一直管到期末。

它和别的刷题、背卡软件最不一样的地方,一句话:**它不让你“假装学会”。** 别的软件答对一次就给你标“已掌握”,刷完一遍卡就算记住了;study-loop 要你独立做对、换个题型还能做对,才认你“真的会”。每道错题它都追着问“你到底为什么错”,记下来,再换个问法考你,直到确认你不是蒙的——连 AI 出的题,也要先自己解一遍、被挑过刺,才敢拿来考你。

你所有的学习记录都存在自己电脑上,不依赖任何云服务,也不会因为哪个平台关了就没了。

> **听懂 ≠ 掌握。** 它帮你在“听懂”和“真会”之间搭桥。

## 快速开始

Expand Down Expand Up @@ -66,6 +72,17 @@ python3 scripts/init_course.py ~/courses/模拟电子技术 \
帮我复习模拟电子技术,先告诉我今天最值得做什么。
```

### 内置课程(开箱即学)

微积分A1 / 微积分A2 / 线性代数 已预置知识骨架、练习题库和来源登记,加载后直接可用,无需自备资料:

```bash
python3 scripts/load_course.py --list
python3 scripts/load_course.py ~/courses/微积分A1 --course-id calc-a1
```

加载即把骨架与题目作为事件写入工作区,随后 `/study` 或 `python3 scripts/drill.py --mode syllabus --count 10 --format html` 即可开始学习与组卷。

### 运行端到端 Demo

```bash
Expand Down
10 changes: 8 additions & 2 deletions README_EN.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,15 @@

---

`study-loop` is your course companion—from pre-class preview to pre-exam cramming, one agent, one knowledge graph, one learning record. It does not produce knowledge; **it produces evidence about you**: every question becomes a verifiable, falsifiable knowledge record. It tracks more than whether an answer was right: it records why you made a mistake, when the mistake appears, whether you can transfer the skill, how much help you needed, when you may forget it, and what to learn next.
`study-loop` is a study helper for your university courses and exams, used inside Claude Code.

> **Explanation is not evidence.** Understanding a solution is not the same as proving mastery.
Tell it which course you're taking and when the exam is, and it'll plan what to study each day, generate practice questions, walk you through the ones you get wrong, schedule reviews on a forgetting curve, and even produce a mock exam paper before the test — from the first week of class through finals.

What sets it apart from other study and flashcard apps, in one line: **it won't let you "pretend you've learned it."** Other apps mark a topic "mastered" the moment you answer it once, or count a card as learned after a single pass; study-loop only calls it "really known" when you can solve it on your own *and* still solve it when the question is rephrased. For every mistake it asks "why did you actually get this wrong?", remembers the answer, then re-tests you with a different wording until it's sure you're not just guessing — and even the AI-generated questions have to solve themselves and survive a critic before they're allowed near you.

All your study data lives on your own computer. It doesn't depend on any cloud service, and it won't vanish if some platform shuts down.

> **Understanding ≠ mastery.** It builds the bridge between "I get it" and "I can do it."

## Quick start

Expand Down
25 changes: 24 additions & 1 deletion SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,25 @@ description: 面向大学课程的本地优先持续学习 Agent。当用户说
6. 面向用户提到知识点时,一律用 `kc_id(中文名)` 形式(脚本已自动生成,你照着念)。
7. 会话开场必须先运行 `python3 scripts/next_step.py`(内部 `derive` 读 `state.json` + `profile`)再决策;所有个性化来自读文件,**不依赖模型「记得」上一会话**。

## 内置课程(开箱即学)

微积分A1 / 微积分A2 / 线性代数 三门课已预置:① 按电子教案提炼的 KC 骨架(含权重、前置依赖);② 少量期末样卷/课后真题作为**出题风格锚点**(让 Agent 知道期末考什么难度和题型);③ 课件来源登记。**用户想学这几门课时,直接加载内置课程,不要再向用户索取基础资料。**

> **预置课程不提供完整题库。** 刷题时 `drill.py` 从已注册题目凑题,凑不够的部分由主 Agent 现场用 `agents/` 三卡流程(generator → solver → reviewer → 机械验证)按锚点真题的风格和难度生成。换句话说:骨架 + 几道样板,肉靠 Agent 现做。

| 课程 | course-id | KC 骨架 | 锚点真题(供 Agent 参考风格) |
|---|---|---|---|
| 微积分A1 | calc-a1 | 29 KC(极限→导数→中值定理/Taylor→积分→ODE) | 7 道期末样卷 + 8 道 synthetic |
| 微积分A2 | calc-a2 | 30 KC(多元微分→重积分→曲面积分→级数→Fourier) | 13 道期末样卷 + 8 道 synthetic |
| 线性代数 | linalg | 10 KC(行列式→矩阵→方程组→特征值→二次型→线性空间/变换/欧氏空间) | 4 道《习题1》 + 8 道 synthetic |

```bash
python3 scripts/load_course.py --list
python3 scripts/load_course.py <工作区目录> --course-id calc-a1 [--exam-date 2026-01-10]
```

加载即把骨架/锚点题/来源作为事件写入工作区(符合铁律1)。随后用 `next_step.py` 看今天学什么,`drill.py --mode syllabus --count N --format html` 组卷(已有题直接用、不够则 Agent 现场按锚点风格生成),也可直接让主 Agent 出模拟期末卷。

## 新手引导协议

### 先判断是否需要提问
Expand All @@ -37,6 +56,7 @@ B. 做题/刷题
C. 修复一道错题
D. 查看学习状态
E. 准备考试
F. 开始一门内置课程(微积分A1 / A2 / 线性代数,开箱即学)
```

用一句话说明每个选择会触发什么流程,不把 CLI 参数直接丢给学生。
Expand All @@ -51,7 +71,7 @@ E. 准备考试

### 状态解释

- 没有课程:说明课程工作区需要 `course.yaml`,给出 `init_course.py` 示例
- 没有课程:优先提示可加载内置课程(`load_course.py --list`,见「内置课程」一节);用户若要自建空白课再用 `init_course.py`。
- 没有 KC:说明知识点是安排复习的骨架,建议先从考纲注册。
- 没有题目:说明需要注册真题/课后题,或明确请求生成迁移题。
- 没有到期卡:说明当前没有紧急 FSRS 复习,不把它误报成“已经掌握”。
Expand All @@ -66,6 +86,9 @@ E. 准备考试

| 学生意图 | 你要做的事 | 参考 |
|---|---|---|
| 新课程 | `python3 scripts/init_course.py <目录> --course-id .. --name .. --exam-date ..`,然后逐个 `event.py kc-add` 注册骨架(考纲优先),`event.py source-add` 登记来源 | references/provenance.md |
| 内置课程 | 用户想学微积分A1/A2/线代时,直接 `python3 scripts/load_course.py <目录> --course-id <calc-a1\|calc-a2\|linalg>` 加载,**不要索取资料**;加载后即有骨架+题库+来源 | 见上方「内置课程」 |
| 讲解教学 | 当帧教学;讲完 `event.py kc-explained --kc-id ..` | references/evidence-graph.md |
| 新课程 | `init_course.py ... [--syllabus "ch1:..,ch2:.."]` 建章节树 → 逐个 `event.py kc-add --syllabus-node ..` 注册骨架。**注册前先查别名**:读现有 KC 的 name/aliases(可用 registry.find_kc_by_alias),命中则提示「这是新 KC 还是『X』的别名?」,避免知识点漂移 | references/provenance.md |
| 讲解教学 | **讲解前读 `state.json.profile`,按 `references/teaching-style.md` 调风格**(quantitative 低→多类比、conceptual 低→多重复等)→ 当帧教学 → 讲完 `event.py kc-explained --kc-id ..` | references/evidence-graph.md, references/teaching-style.md |
| 做题/刷题 | 出示题目 → 先问置信度(猜的/不太确定/比较确定/非常确定 → 0.25/0.5/0.75/1.0)→ 学生作答 → `event.py attempt --question-id .. --correct|--wrong --confidence .. [--hint-level ..] [--transfer] [--retest-of ..]` | references/hint-ladder.md |
Expand Down
8 changes: 4 additions & 4 deletions assets/readme-banner-en.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions assets/readme-banner-zh.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading