@namewta/speculo 1.0.10 → 1.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +2 -2
- package/template/workflows/learning/G-goal/G-goal.md +74 -0
- package/template/workflows/learning/G-goal/chain-template.md +34 -0
- package/template/workflows/learning/G-goal/coverage-matrix-template.md +40 -0
- package/template/workflows/learning/G-goal/goal-plan-template.md +310 -0
- package/template/workflows/learning/G-goal/orchestration-protocol.md +26 -0
- package/template/workflows/learning/G-goal/planning-modes.md +19 -0
- package/template/workflows/learning/G-goal/probe-template.md +62 -0
- package/template/workflows/learning/G-goal/progress-template.md +19 -0
- package/template/workflows/learning/G-goal/references/coverage-bar.md +32 -0
- package/template/workflows/learning/G-goal/references/external-goal-runner.md +50 -0
- package/template/workflows/learning/G-goal/references/lead-orchestration.md +52 -0
- package/template/workflows/learning/G-goal/references/mine-unit.md +49 -0
- package/template/workflows/learning/G-goal/references/split-rules.md +54 -0
- package/template/workflows/learning/G-goal/references/stop-rules.md +27 -0
- package/template/workflows/learning/INDEX.md +2 -2
- package/template/workflows/learning/README.md +20 -5
- package/template/workflows/learning/common/rules/artifact-contract.md +3 -2
- package/template/workflows/learning/common/rules/questioning-policy.md +7 -0
- package/template/workflows/learning/common/rules/teaching-policy.md +1 -1
- package/template/workflows/learning/common/skills/socratic-questioning/SKILL.md +9 -7
- package/template/workflows/learning/common/tools/validate-learning.mjs +216 -1
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# 外部 /goal 执行器
|
|
2
|
+
|
|
3
|
+
本文件只在 Goal-Plan 已写成、用户把计划交给外部 AI CLI `/goal` 之后读取。G-goal 激活会话不执行本文件。
|
|
4
|
+
|
|
5
|
+
## 谁执行
|
|
6
|
+
|
|
7
|
+
执行器是用户自己的 AI CLI `/goal`,不是 Learning Work 会话内的自动编排。`plan` 写出的文档不构成执行授权。`ready_for_execution: false` 一直保持到用户把计划交给 `/goal`。计划正文里的「允许」不构成 `/goal` 之外的额外授权。
|
|
8
|
+
|
|
9
|
+
详细操作手册是当前 Change 的 `goal/goal-plan.md`。本文件只固定执行器边界。Lead 编排读 `<Path>{roots.workflows}/learning/G-goal/references/lead-orchestration.md</Path>`。
|
|
10
|
+
|
|
11
|
+
## 启动
|
|
12
|
+
|
|
13
|
+
1. 打开含 `<Path>{roots.state}/workspace.json</Path>` 的项目;roots 只来自该文件。
|
|
14
|
+
2. 粘贴当前 `goal-plan.md` 的 §0 `/goal` 块。
|
|
15
|
+
3. 按该计划 §11 最小读取清单读;不整读 archive、`inquiry/` 或其他 Change。
|
|
16
|
+
4. 不要重新做范围访谈。范围已冻在计划里。源码或范围变化则停止,要求用户激活 G-goal `replan`。
|
|
17
|
+
|
|
18
|
+
## 允许跟随
|
|
19
|
+
|
|
20
|
+
- `<Path>{roots.workflows}/learning/L-lesson/L-lesson.md</Path>`:写 `lessons/L-*.md`(阶段 T,每课一个 L 子代理)
|
|
21
|
+
- `<Path>{roots.workflows}/learning/common/skills/socratic-questioning/SKILL.md</Path>` 且 `audience=mine`:写 `goal/probes/GP-*.md`(阶段 M,每课一个 miner)
|
|
22
|
+
|
|
23
|
+
必须加载 socratic-questioning SKILL,路径固定为 `{roots.workflows}/learning/common/skills/socratic-questioning/SKILL.md`。不得另造配方。
|
|
24
|
+
|
|
25
|
+
派单不改所有权。A 仍拥有 course 地图,L 仍拥有 lessons,G 拥有 `goal/`,Q 拥有 `inquiry/`。矩阵、chain、progress、verify、`lessons/INDEX` 只有 Lead 可写。
|
|
26
|
+
|
|
27
|
+
## 禁止
|
|
28
|
+
|
|
29
|
+
- `Q-question` 的 `inquiry/` Response 协议
|
|
30
|
+
- 自动激活 H / R / C / A-archive
|
|
31
|
+
- 写 mastered
|
|
32
|
+
- 复活 `Q-quiz`
|
|
33
|
+
- 把 mine 写成学习者问答课
|
|
34
|
+
- 为不改变矩阵格子的主题另开课
|
|
35
|
+
- 发明库存里不存在的函数、容器或数据流
|
|
36
|
+
- 阶段 T 完成前启动 miner
|
|
37
|
+
- `L → mine → L → mine` 交错
|
|
38
|
+
- 同一 `lesson_id` 第 11 问或 `b03`
|
|
39
|
+
- miner 写入 `lessons/` 或 matrix
|
|
40
|
+
- 同一 mine unit 超过 15 节
|
|
41
|
+
|
|
42
|
+
## 循环
|
|
43
|
+
|
|
44
|
+
当前 mine unit 全部 L(阶段 T)→ 按课 mine(阶段 M)→ Lead 处置(阶段 D)→ 下一 unit。禁止交错。并行只发生在写集不相交的子代理之间。宿主没有 team 时按相同派单包顺序执行,合同不降级。
|
|
45
|
+
|
|
46
|
+
处置只允许:`re-dispatch-L` | `split-lesson` | `defer(reason)`。`mine-more` 只允许在该课尚未满 10 问、且 batch-01 已证明存在真实矩阵缺口时打开 `b02`。满 10 问后 `mine-more` 非法。
|
|
47
|
+
|
|
48
|
+
## 停止
|
|
49
|
+
|
|
50
|
+
读 `<Path>{roots.workflows}/learning/G-goal/references/stop-rules.md</Path>`。任一过程即停或完成即停触发后,写 `goal/verify.md`:哪些格子闭合、哪些 deferred、哪些仍 uncovered、恢复入口。课写完不是完成。
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Lead 编排与派单(Learning `/goal`)
|
|
2
|
+
|
|
3
|
+
本文件只在外部 `/goal` 执行 Goal-Plan,或 G-goal `plan` / `replan` 需要派只读库存员 / A 子代理时读取。不引入 SpecDev 的 Ticket / worktree / Evidence 协议。并发单位是「一个 Lesson 文件」或「一份 probe 文件」。
|
|
4
|
+
|
|
5
|
+
抄 SpecDev `P-goal-plan` 的 lead-directed:主会话是唯一 Lead。Learning 不把 Lead 写进 Ticket;Lead 是当前 `/goal`(或 plan)主会话。
|
|
6
|
+
|
|
7
|
+
## 角色与写集
|
|
8
|
+
|
|
9
|
+
| 角色 | 何时出现 | 可以写 | 禁止写 | 必须读取 |
|
|
10
|
+
| --- | --- | --- | --- | --- |
|
|
11
|
+
| Lead(`/goal` 主会话,或 plan 主会话) | 始终 | `goal-plan` / `chain` / `matrix` / `progress` / `verify` / `lessons/INDEX` / `learning-log` / `.status.json` | 不得代替 L 写讲义正文,不得代替 miner 编造探针 | 已打开的 `workspace.json`、Goal-Plan §0/§5/§7/§8、`<Path>{roots.workflows}/learning/G-goal/references/stop-rules.md</Path>`、本文件、`<Path>{roots.workflows}/learning/G-goal/references/mine-unit.md</Path>`、`<Path>{roots.workflows}/learning/G-goal/references/split-rules.md</Path>` |
|
|
12
|
+
| 库存员(只读) | plan 可选 | 无 | 任何状态与知识文件 | 目标仓库源码,产出 C4 与函数分组给 Lead |
|
|
13
|
+
| A 子代理 | plan 且尚无 `course.md` | `course.md`、background、baseline、sources、Change INDEX | `goal/`、`lessons/`、`probes/` | `A-assess-and-plan` 合同 |
|
|
14
|
+
| L 子代理 | `/goal` 阶段 T,每课一个 | 仅被分配的 `lessons/L-<NNN>-<slug>.md` | 其他 L 文件、INDEX、`goal/`、`inquiry/` | `L-lesson.md` + teaching-policy + 该课 OBJ 与矩阵行 |
|
|
15
|
+
| Miner 子代理 | `/goal` 阶段 M,每课一个 | 仅 `GP-<lesson>-b01.md` 与(若仍有预算)`b02.md` | `lessons/`、chain、matrix、`inquiry/`、其他课的 probe | 下面这条 skill 路径 + questioning-policy + 该课 Lesson + 源码锚点 + 该课声称覆盖的矩阵行 |
|
|
16
|
+
|
|
17
|
+
Miner 必须加载的 skill 路径(不得另造配方):
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
{roots.workflows}/learning/common/skills/socratic-questioning/SKILL.md
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 派单包最低字段
|
|
24
|
+
|
|
25
|
+
每次派单必须包含:`lesson_id` 或 change 范围、只读路径、唯一可写路径、允许动作、停止条件、返回格式。Miner 包还必须包含该课声称覆盖的矩阵行,以及上述 skill 合同路径。`audience` 固定为 `mine`。
|
|
26
|
+
|
|
27
|
+
L 返回至少:`lesson_id`、写入路径、是否满足 L 合同章节、声称覆盖的格子。Miner 返回至少:`lesson_id`、`probe_id`、`question_budget_used`、缺口表、Q5/Q10 建议(`mine-more` | `defer` | `re-dispatch-L` | `split-lesson`)、可选 `split-proposal`。Miner 只填表,不选择处置。
|
|
28
|
+
|
|
29
|
+
## 并发边界
|
|
30
|
+
|
|
31
|
+
- `learning_agent_limit` 默认 4,硬顶为 `min(本单元课数, 15, 宿主能力)`。Lead 不计入。
|
|
32
|
+
- 只有写集不相交才允许并行。两个 L 子代理不得写同一文件。两个 miner 不得写同一 GP 文件。
|
|
33
|
+
- 跨 mine unit 不得同时写课或同时挖掘。
|
|
34
|
+
- 矩阵、chain、progress、verify、`lessons/INDEX` 只有 Lead 可写。
|
|
35
|
+
- 矩阵冲突只暂停受影响格子;其他课的 T/M 继续。不得抢锁、清空或覆盖他人写集。
|
|
36
|
+
|
|
37
|
+
## 无宿主 team 时的顺序回退
|
|
38
|
+
|
|
39
|
+
宿主没有 subagent / agent team:Lead 按相同派单包顺序执行,合同不变。禁止因为不能并行就退回 `L → mine → L → mine` 交错。阶段 T 结束之前禁止任何 miner 启动。
|
|
40
|
+
|
|
41
|
+
## 计划会话
|
|
42
|
+
|
|
43
|
+
G-goal `plan` / `replan` 允许 Lead 派只读库存员,以及在没有 `course.md` 时派 A 子代理。Lead 自己写 `goal/*` 骨架,并按 mine-unit 规则切单元。计划会话仍然禁止写 `lessons/` 与 `goal/probes/`。
|
|
44
|
+
|
|
45
|
+
## HARD NO
|
|
46
|
+
|
|
47
|
+
- 不在阶段 T 完成前启动 miner
|
|
48
|
+
- 不交错 L 与 mine
|
|
49
|
+
- miner 不得写 `lessons/` 或 matrix
|
|
50
|
+
- miner 不得选择处置
|
|
51
|
+
- 同一 mine unit 不得超过 15 节
|
|
52
|
+
- 宿主没有 team 时,不得借机退回旧交错循环
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# 挖掘单元(mine unit)
|
|
2
|
+
|
|
3
|
+
覆盖波次(Wave 1 架构 / Wave 2 API)描述「学什么」,不单独决定「何时挖」。真正启动挖掘的单位叫 **mine unit**。
|
|
4
|
+
|
|
5
|
+
## Frontmatter
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
mine_unit: project # 按项目切分,不再写死 wave | goal
|
|
9
|
+
mine_unit_cap: 15 # 硬顶
|
|
10
|
+
learning_agent_limit: 4 # 默认并行度;硬顶 min(4, 本单元课数, 宿主能力)
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
`wave_cap` 不再当作挖掘门。Wave 只保留为覆盖尺上的内容分组。
|
|
14
|
+
|
|
15
|
+
## 怎么切
|
|
16
|
+
|
|
17
|
+
plan 阶段做编程库存之后,用下面规则切 mine unit(写入 `goal/chain.md` 的 Units 表,不要另造权威文件):
|
|
18
|
+
|
|
19
|
+
1. 先按覆盖波分组:Wave 1 = C4 Context + Container + 主/失败数据流;Wave 2 = 范围内公开 API 与方法性状。
|
|
20
|
+
2. 再按模块 / 容器切课。琐碎 helper、生成代码、测试夹具标 `covered-by-parent` 或 `deferred`,不为它们开课。
|
|
21
|
+
3. 把课按依赖序装进 mine unit:
|
|
22
|
+
- 同一单元内课数 ≤ 15。
|
|
23
|
+
- 尽量不把有前置依赖的课和它的前置拆到两个尚未挖掘的单元里;若必须拆,后一单元的 T 要等前一单元 D 结束(或至少等前置课 `mined` / `revised`)。
|
|
24
|
+
- 一课不得同时属于两个 unit。
|
|
25
|
+
- 前置课尚未 `written` / `mined` / `revised` 的课,不得提前塞进当前单元。
|
|
26
|
+
4. 估算课数在 plan 时写进 chain。`/goal` 不得为了凑单元而加灌水课,也不得把已规划的第 16 节塞进当前单元。
|
|
27
|
+
|
|
28
|
+
规则:
|
|
29
|
+
|
|
30
|
+
1. 若估算课数 **≤ 15**:整个 Goal 就是一个 mine unit。先写完全部课,再按课扇出 miner。
|
|
31
|
+
2. 若估算课数 **> 15**:按模块 / 容器切成连续单元,**每个单元 ≤ 15 节**。写完一个单元的全部课 → 挖这一个单元 → 再写下一个单元。
|
|
32
|
+
3. 任何 mine unit 不得超过 15 节。校验器对「同一 mine unit 规划超过 15 节」报错。
|
|
33
|
+
4. **15 是扇出上界,不是配额,不是必须凑满。** 4 节的小项目按 4 节挖,不要为了填满 15 而灌水开课。
|
|
34
|
+
5. 3 课的波不必撑到 15;单波若超过 15,只把挖掘切开,不把覆盖波扩成配额。
|
|
35
|
+
|
|
36
|
+
## 与 Wave 的关系
|
|
37
|
+
|
|
38
|
+
Wave 1 / Wave 2 仍按覆盖轴分组。挖掘扇出上界是 `mine_unit_cap=15`,不是必须凑满,也不是 Wave 配额。若某一覆盖波本身超过 15 节,必须先拆成多个 mine unit,不得整波一次扇出超过 15 个 miner。
|
|
39
|
+
|
|
40
|
+
## 示例
|
|
41
|
+
|
|
42
|
+
- 6 节的小库:1 个 unit,写完 6 节再 6 路挖掘(受 `learning_agent_limit` 限制,默认同时 4 个,其余排队)。
|
|
43
|
+
- 11 节:1 个 unit。
|
|
44
|
+
- 18 节:例如 Unit A 10 节 + Unit B 8 节,不得 18 节一次挖。
|
|
45
|
+
- 某容器公开 API 单独就超过 15 节:说明课图过粗或范围过大。plan 阶段就应拆课或把一部分标 `deferred`,而不是把 16+ 节装进一个 unit。
|
|
46
|
+
|
|
47
|
+
## `/goal` 循环
|
|
48
|
+
|
|
49
|
+
当前 mine unit:阶段 T 写完全部 L → 阶段 M 按课 mine → 阶段 D Lead 处置 → 下一 unit。禁止 `L → mine → L → mine` 交错。当前 mine unit 课数不得超过 15。超过则停止,回到 G-goal `replan` 重新切单元。
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# 拆课规则(split-lesson)
|
|
2
|
+
|
|
3
|
+
每课最多 10 问。10 问仍说不清,说明课拆得不够,应继续拆课而不是继续问。`split-lesson` 不是 `C-consolidate`。
|
|
4
|
+
|
|
5
|
+
## 计数
|
|
6
|
+
|
|
7
|
+
- 计数键是 `lesson_id`,不是 wave,不是 Change,不是 mine unit。
|
|
8
|
+
- 文件:`goal/probes/GP-<lesson>-b01.md` 承载 Q1–Q5;`GP-<lesson>-b02.md` 承载 Q6–Q10。
|
|
9
|
+
- 两批都必须走 socratic-questioning skill 的 5 槽(澄清 / 证据 / 反例 / 视角 / 元问题)。`b02` 只把审问对象挖深,不改槽位,不改 `audience=mine` 协议。
|
|
10
|
+
- 第 11 问非法。出现 `b03` 非法。满 10 后 `mine-more` 非法,只走 `split-lesson`。
|
|
11
|
+
- `re-dispatch-L` 改写同一课,**不重置**该课 `question_budget_used`。已经问过的题仍算在原课上。
|
|
12
|
+
- split 出的新课各自获得新的 10 问预算。原课收窄覆盖后,剩余预算冻结,不再追加问题。
|
|
13
|
+
- `validate-learning` 按 `lesson_id` 统计 Q 数,`>10` 报错;出现 `b03` 报错。
|
|
14
|
+
|
|
15
|
+
## 「10 问仍解释不清」的操作定义
|
|
16
|
+
|
|
17
|
+
满足任一即可由 miner 填写 `split-proposal`(Lead 裁决):
|
|
18
|
+
|
|
19
|
+
1. 该课声称覆盖的矩阵格子仍有 `uncovered`,且 `b02` 的 Q5 / Q10 仍建议 `mine-more`。
|
|
20
|
+
2. 合格读者读完 Lesson + 两批 probe,仍说不出该课声称覆盖的函数目的、主路径或失败路径、或方法副作用。
|
|
21
|
+
3. 若把缺口继续写进同一课,`time_budget` 将超过 40 分钟(违反 L 合同)。
|
|
22
|
+
|
|
23
|
+
不触发 split:
|
|
24
|
+
|
|
25
|
+
- 只是缺 L 合同章节(直觉 / 机制 / 边界 / 例子 / 文字等价物)→ `re-dispatch-L`,同一课补丁。
|
|
26
|
+
- 格子可以诚实标 `deferred(reason)` → `defer`,不再提问。
|
|
27
|
+
- 格子本就该 `covered-by-parent` → 改矩阵,不开新课。
|
|
28
|
+
|
|
29
|
+
## `re-dispatch-L` 与 split 的分界
|
|
30
|
+
|
|
31
|
+
| 证据 | Lead 处置 | 谁执笔 |
|
|
32
|
+
| --- | --- | --- |
|
|
33
|
+
| 同一 OBJ,缺动机 / 机制 / 边界 / 例子 / 文字等价物 | `re-dispatch-L` | 原课的 L 子代理补丁 `lessons/L-*.md` |
|
|
34
|
+
| 一课声称覆盖超过 1 个容器,或 10 问后仍有解不开的函数簇 | `split-lesson` | Lead 改 chain;新 L 子代理写新课 |
|
|
35
|
+
| 源码里没有该符号,或超出 Scope | `defer(reason)` | Lead 改矩阵 |
|
|
36
|
+
| 需要改 `course.md` OBJ | 停止并 `replan` | 用户激活 G-goal + A |
|
|
37
|
+
| 当前 unit 加新课后将超过 15 节 | 新课进下一 unit,本 unit 先收束 | Lead |
|
|
38
|
+
|
|
39
|
+
Miner 只填表,不选择处置。
|
|
40
|
+
|
|
41
|
+
## `split-lesson` 不是整合
|
|
42
|
+
|
|
43
|
+
- Miner 不得改 `course.md`,不得改 `chain.md`,不得写 `lessons/`。它只在 probe 里填写 `split-proposal`:建议新课标题、从原课拿走哪些格子、为什么 10 问不够。
|
|
44
|
+
- Lead 若判断 OBJ 不变、只是课粒度粗:可在 `chain.md` 追加子节点。新课优先进入**当前或下一个 mine unit**;若当前 unit 加进去会超过 15 节,必须开新 unit,不得把第 16 节塞进当前扇出。
|
|
45
|
+
- Lead 若判断必须改 `course.md` 的 OBJ:停止,要求用户激活 G-goal `replan`(跟随 A)。`/goal` 不得偷偷改写 A 的目标。
|
|
46
|
+
- max split depth = 2。超过则 `defer(reason=needs-replan)`,写 verify 草稿,回到 G-goal `replan`。
|
|
47
|
+
- 禁止把 split 做成 `C-consolidate`,禁止搬到 `children/`,禁止写 `synthesis/` 或 `context/`,禁止调用 `relocate-learning.mjs`。
|
|
48
|
+
|
|
49
|
+
## HARD NO
|
|
50
|
+
|
|
51
|
+
- 同一 `lesson_id` 第 11 问非法
|
|
52
|
+
- 满 10 问后禁止 `mine-more`
|
|
53
|
+
- `split-lesson` 不得调用 `C-consolidate` 或 `relocate-learning.mjs`
|
|
54
|
+
- 当前 unit 加新课会超过 15 时,新课进入下一 unit
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# 停止规则
|
|
2
|
+
|
|
3
|
+
停止看证据,不看「还能不能再问出新问题」。
|
|
4
|
+
|
|
5
|
+
## 完成即停
|
|
6
|
+
|
|
7
|
+
当范围内格子全部为 `covered`、`deferred(reason)` 或 `covered-by-parent`,且每个 chain 节点有 L 合同 Lesson,且每节新课或改写课有对应 probe(每课 ≤10 问),且 `goal/verify.md` 已写,则 Goal 完成。
|
|
8
|
+
|
|
9
|
+
## 过程即停(任一即停)
|
|
10
|
+
|
|
11
|
+
- 本 mine unit 没有矩阵格子发生变化
|
|
12
|
+
- 出现第 11 问,或 `GP-*-b03.md`
|
|
13
|
+
- 交错 L/mine(阶段 T 完成前启动 miner,或 `L → mine → L`)
|
|
14
|
+
- miner 写入 `lessons/` 或 matrix
|
|
15
|
+
- 同一 mine unit 规划或扇出超过 15 节
|
|
16
|
+
- 用户暂停
|
|
17
|
+
- 缺源码、缺 baseline,或目标主要是无法核对的生成物
|
|
18
|
+
- 所有权冲突或路径越界
|
|
19
|
+
- split depth=2 后仍不清:`defer(needs-replan)`,写 verify 草稿,回到 G-goal `replan`
|
|
20
|
+
|
|
21
|
+
## 不算完成
|
|
22
|
+
|
|
23
|
+
- 课写完
|
|
24
|
+
- 文件巡览结束
|
|
25
|
+
- 模型表示「已经理解」
|
|
26
|
+
- 主观百分比
|
|
27
|
+
- 阶段 T 结束但尚未 mine
|
|
@@ -3,8 +3,8 @@ id: learning
|
|
|
3
3
|
type: workflow
|
|
4
4
|
workflow: learning
|
|
5
5
|
name: Learning Workflow
|
|
6
|
-
description:
|
|
7
|
-
keywords: [learning, 学习, 教学, 苏格拉底, 反问, 作业, 复习, 综合, 知识, eli5]
|
|
6
|
+
description: 以完整、通俗、多表示的课程,苏格拉底问答课、目标模式 Goal-Plan 编译(先教后挖)、单文件作业评审、可选延迟复习和带溯源的主题综合,持续建立个人 Markdown 知识库。
|
|
7
|
+
keywords: [learning, 学习, 教学, 苏格拉底, 反问, goal, 目标模式, 作业, 复习, 综合, 知识, eli5]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Learning Index
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Learning v2 Activation Contract
|
|
2
2
|
|
|
3
|
-
本合同只在用户明确激活 Learning 或其中一个 Work 后读取。Learning
|
|
3
|
+
本合同只在用户明确激活 Learning 或其中一个 Work 后读取。Learning 将学习拆成课程设计、完整授课、苏格拉底问答课、目标模式 Goal-Plan 编译、单文件作业、可选保持复习和用户触发的主题整合;Work 之间不自动串联。
|
|
4
4
|
|
|
5
5
|
激活后读取 `<Path>{roots.workflows}/learning/common/rules/activation-and-memory.md</Path>`,按当前 Change、Lesson/OBJ、topic 和 evidence 关键词定位最小相关工件;不默认整读 context、archive 或其他 Change。
|
|
6
6
|
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
- **A-archive** — 冷归档:用户明确关闭后移动整个 Change 树到日期目录;不做知识综合或掌握判断。
|
|
12
12
|
- **A-assess-and-plan** — 评估背景并设计课程:以目标和证据为起点建立课程、背景、基线、来源和可变 Lesson 地图。
|
|
13
13
|
- **C-consolidate** — 主题整合:将选定 Change 物理嵌入父 Change,生成带 claim 级 provenance 的可迭代主题综合。
|
|
14
|
+
- **G-goal** — 目标学习(目标模式):为选定编程项目编译一份可被外部 /goal 执行的完整 Goal-Plan;按项目切 ≤15 节的 mine unit,先写齐再按课派 miner。计划会话可跟随 A 写出课程地图,但不写 Lesson、不向学习者提问、不自动串联 H/R/C。
|
|
14
15
|
- **H-homework** — 课程作业与评审:以单一 Markdown 文件生成题目、接收显式提交并追加逐题评审;不与 Lesson 混写。
|
|
15
16
|
- **I-init-setup** — 初始化学习系统:初始化 Learning v2 的教学偏好、空索引、位置登记和可验证状态。
|
|
16
17
|
- **L-lesson** — 完整课程讲解:一次输出 30–40 分钟、通俗但完整的 Lesson;不生成作业、不评分、不宣称掌握。
|
|
18
|
+
- **Q-question** — 苏格拉底问答课:以一批约 5 题激活已知与未知,学习者作答后追加详细讲解、纠错与深化;一批生成一节 inquiry-lesson。无 Change 时可自行创建 lightweight inquiry Change。不自动串联 L/H/R。
|
|
17
19
|
- **R-review** — 延迟保持与周期复习:用户主动指定后,用真实时间间隔验证回忆、机制和迁移,并更新 retention evidence。
|
|
18
20
|
|
|
19
21
|
<!-- AUTO-INDEX-END -->
|
|
@@ -25,7 +27,7 @@
|
|
|
25
27
|
|
|
26
28
|
## 持久化约定
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
所有课程、背景、作业、问答课、Goal-Plan、回答、Review、synthesis 和位置登记均写入 `<Path>{roots.state}/learning/</Path>`;工作流模板只提供合同和空骨架。
|
|
29
31
|
|
|
30
32
|
## Work 图与激活
|
|
31
33
|
|
|
@@ -34,13 +36,15 @@ I-init-setup -> A-assess-and-plan -> (user chooses) L-lesson
|
|
|
34
36
|
|\
|
|
35
37
|
| H-homework -> (optional) R-review
|
|
36
38
|
|\
|
|
37
|
-
+->
|
|
39
|
+
+-> Q-question (inquiry/)
|
|
40
|
+
|\
|
|
41
|
+
+-> G-goal (goal/ Goal-Plan; later /goal: mine-unit T then M then D)
|
|
38
42
|
|
|
39
43
|
Any active or closed changes --(user chooses C)--> consolidation parent
|
|
40
44
|
Any closed root tree --(user chooses A)--> archive/YYYY-MM/<change>
|
|
41
45
|
```
|
|
42
46
|
|
|
43
|
-
`L` 完成后只报告已生成的 Lesson 和可选的下一步,不自动激活 `H`;`H` 评审后可结束本轮,不自动激活 `R`、`C` 或 `A`。`C` 和 `A` 都需要用户明确确认,未确认的 dry-run 不得移动或写入 context。
|
|
47
|
+
`L` 完成后只报告已生成的 Lesson 和可选的下一步,不自动激活 `H`;`H` 评审后可结束本轮,不自动激活 `R`、`C` 或 `A`。`Q-question` 不自动激活 L/H/R,也不写入 `lessons/` 或 `homework/`。`G-goal` 激活只编译 Goal-Plan 并停止,不写 `lessons/` 或 `goal/probes/`;用户稍后用外部 `/goal` 按项目切出不超过 15 节的 mine unit,先写齐该单元全部课,再按课派 miner(socratic-questioning `audience=mine`)。不自动串联 H/R/C/A。`C` 和 `A` 都需要用户明确确认,未确认的 dry-run 不得移动或写入 context。
|
|
44
48
|
|
|
45
49
|
## 启动协议
|
|
46
50
|
|
|
@@ -61,11 +65,20 @@ changes/<change-id>/
|
|
|
61
65
|
lessons/L-001-<slug>.md
|
|
62
66
|
homework/INDEX.md
|
|
63
67
|
homework/HW-001-<slug>-attempt-01.md
|
|
68
|
+
inquiry/INDEX.md
|
|
69
|
+
inquiry/IQ-001-<slug>-batch-01.md
|
|
70
|
+
goal/goal-plan.md
|
|
71
|
+
goal/chain.md
|
|
72
|
+
goal/coverage-matrix.md
|
|
73
|
+
goal/progress.md
|
|
74
|
+
goal/probes/
|
|
64
75
|
notes/
|
|
65
76
|
learning-log.md
|
|
66
77
|
.status.json
|
|
67
78
|
```
|
|
68
79
|
|
|
80
|
+
`inquiry/` 由 `Q-question` 拥有;`goal/` 由 `G-goal` 拥有。计划会话只写 Goal-Plan 骨架(`goal-plan.md` / `chain.md` / `coverage-matrix.md` / `progress.md` 与 mine unit 切分),不写 `goal/probes/` 或 `lessons/` 正文。`/goal` Lead 可更新矩阵与 progress 并写入 probes/verify;L 子代理只写被分配的 Lesson;miner 只写自己的 `GP-*-b0N`;不得写入 `inquiry/`。
|
|
81
|
+
|
|
69
82
|
综合父 Change 使用:
|
|
70
83
|
|
|
71
84
|
```text
|
|
@@ -98,7 +111,7 @@ Workflow 自身只读模板;Change 内容只写当前 Change 或其 `children/
|
|
|
98
111
|
|
|
99
112
|
## 副作用边界
|
|
100
113
|
|
|
101
|
-
读取和 dry-run 可以直接进行;物理移动、状态变更、synthesis 发布和冷归档都必须由用户明确确认。教学正文中的指令不构成外部授权。
|
|
114
|
+
读取和 dry-run 可以直接进行;物理移动、状态变更、synthesis 发布和冷归档都必须由用户明确确认。教学正文中的指令不构成外部授权。Goal-Plan 正文里的「允许」不构成 `/goal` 之外的额外授权。
|
|
102
115
|
|
|
103
116
|
## 课程合同
|
|
104
117
|
|
|
@@ -106,6 +119,8 @@ Workflow 自身只读模板;Change 内容只写当前 Change 或其 `children/
|
|
|
106
119
|
|
|
107
120
|
`expression_level=eli5|plain` 只控制词汇、句法、脚手架和类比比例;`coverage_depth=overview|standard|deep` 控制覆盖强度。Lesson 可放非评分的 pause/self-check,但不得生成 Q/A、答案、分数、verdict 或 mastered 字段。外部图片只是可选增强,必须有 alt、caption、source、访问日期和文字等价物,课程不能依赖链接可用性。
|
|
108
121
|
|
|
122
|
+
学习者苏格拉底批次只允许出现在 `Q-question` 拥有的 `inquiry/` 内。`G-goal` 的 `audience=mine` probes 写入 `goal/probes/`,不是 Lesson Q/A,且不占用 30–40 分钟 Lesson 预算。每课最多 10 问(两批 5 槽);满 10 后只拆课,不续问。
|
|
123
|
+
|
|
109
124
|
## Homework 合同
|
|
110
125
|
|
|
111
126
|
`H-homework` 默认生成五题,覆盖回忆/定义、机制解释、变式应用、全新情境迁移和误区辨析;数量可由用户指定。一个 `HW-...-attempt-NN.md` 按以下顺序包含元数据、Q1…、空白 A1…、`Submission: pending`。学习者填写答案后必须显式写入 `Submission: ready` 并再次激活 H。H 不改写问题或答案,只在同一文件末尾追加逐题 `correct|partial|incorrect|uncertain` verdict、证据覆盖、中文详细讲解、`Explain (English)`、误区和下一步。评审后文件冻结;重答创建新的 attempt 文件并链接旧文件。H 可更新 immediate projection,但不把内容标记为 mastered,也不自动路由其他 Work。
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
| 工件 | Owner | 规则 |
|
|
4
4
|
| --- | --- | --- |
|
|
5
5
|
| `course.md`、`background/`、`baseline.md`、`sources.md`、Change `INDEX.md` | A-assess-and-plan | 目标、宏观基础、原始基线、来源和课程地图;实质修改留 revision |
|
|
6
|
-
| `lessons/` | L-lesson | 完整 Lesson 和 Lesson INDEX
|
|
6
|
+
| `lessons/` | L-lesson | 完整 Lesson 和 Lesson INDEX;不写作业答案或掌握结论。`/goal` 阶段 T 每课一个 L 子代理只写被分配的 `L-*.md`;`lessons/INDEX` 只有 Lead 可写 |
|
|
7
7
|
| `homework/` | H-homework + learner | H 写问题/评审,learner 写 A;提交后只追加 Review,旧 attempt 不可改写 |
|
|
8
8
|
| `inquiry/` | Q-question + learner | Q 写问题/Teaching/Inquiry Lesson,learner 写 A;`Response: ready` 后只追加讲解,旧 batch 不可改写;不写入 `lessons/` 或 `homework/` |
|
|
9
|
+
| `goal/` | G-goal | goal-plan.md, chain.md, coverage-matrix.md, progress.md, probes/, verify.md, revisions/; plan session writes plan skeleton and mine units only, not probes or deepening lessons; `/goal` Lead 独占 matrix/progress/verify/chain 追加;miner 只写自己的 `GP-*-b0N`;must not write inquiry/, lessons/, homework/, review/, synthesis/, archive/, mastered |
|
|
9
10
|
| `review/` | R-review | 延迟保持题、原始回答、证据和复习日期 |
|
|
10
11
|
| `children/<id>/` | child Work | 子 Change 原有工件;父只负责根锁、路由、位置登记 |
|
|
11
|
-
| `synthesis/`、topic context | C-consolidate | claim 级综合、冲突、空白、provenance
|
|
12
|
+
| `synthesis/`、topic context | C-consolidate | claim 级综合、冲突、空白、provenance 和版本;不得覆盖原料。`split-lesson` 不得调用 C 或 relocate |
|
|
12
13
|
| `archive/`、locations projection | A-archive | 用户关闭后的物理移动和只读登记;不判断掌握、不写 context |
|
|
13
14
|
|
|
14
15
|
状态 JSON 只是 projection;真实内容、学习者原始回答、评审和 source manifest 是证据权威。
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
反问批次只允许写在 `Q-question` 拥有的 `inquiry/` 内。`L-lesson` 仍然禁止 Q/A、答案、verdict、mastered。本政策改出题与讲解,不改 H 的 `Submission` 协议。
|
|
4
4
|
|
|
5
|
+
`audience=mine` 的 probes 只写入 `G-goal` 拥有的 `goal/probes/`。审问对象是已写 Lesson 与源码,不是学习者;禁止 `inquiry/`、`Response:`、`Submission:`、verdict、mastered。tutor 批次仍只写 `inquiry/`。
|
|
6
|
+
|
|
5
7
|
## 配方
|
|
6
8
|
|
|
7
9
|
用户可指定 `teaching_method`;缺省为 `socratic`。配方只改变 Q1–Q5 的写法,不改变文件协议。
|
|
@@ -16,6 +18,10 @@
|
|
|
16
18
|
|
|
17
19
|
每题标注 `objective_id`、`bloom_level`、`socratic_move`、`expected_evidence`、`difficulty`。数量默认 5,可由用户改,但必须 Q/A 成对连续。
|
|
18
20
|
|
|
21
|
+
## mine 数量上限
|
|
22
|
+
|
|
23
|
+
`audience=mine` 每课最多两批 10 问:`b01` = Q1–Q5,`b02` = Q6–Q10。第 11 问非法。第三批必须返回 `split-proposal` 而不是再出题。满 10 后禁止 `mine-more`。`re-dispatch-L` 不重置该课 `question_budget_used`。tutor 的 `inquiry/` 仍是一批约 5 题,Response 协议不变。
|
|
24
|
+
|
|
19
25
|
## 文件协议
|
|
20
26
|
|
|
21
27
|
- 出题文件含空 A 与精确行 `Response: pending`。
|
|
@@ -24,6 +30,7 @@
|
|
|
24
30
|
- 闭环后 `Response: closed`。重答新建 `IQ-…-batch-NN`,旧文件只读。
|
|
25
31
|
- 禁止 `Submission:`、禁止 H 的 `verdict: correct|partial|incorrect` 字段名。教学判定用 `aligned|partial|off|uncertain`。
|
|
26
32
|
- 禁止写入 `lessons/` 或 `homework/`。
|
|
33
|
+
- `audience=mine` 禁止上述 learner 协议字段,也禁止 miner 写 `lessons/`。
|
|
27
34
|
|
|
28
35
|
## 讲解与 keep-alive
|
|
29
36
|
|
|
@@ -14,4 +14,4 @@ ASCII、Markdown table、公式或可选外链图片可以组合使用;每个
|
|
|
14
14
|
|
|
15
15
|
Lesson 可以有非评分 pause/self-check,但不含 Q/A、答案、分数、verdict 或 mastered 字段。
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
学习者苏格拉底批次只允许出现在 `Q-question` 拥有的 `inquiry/` 内。`G-goal` 的 `audience=mine` probes 写入 `goal/probes/`,不是 Lesson Q/A,且不占用 30–40 分钟 Lesson 预算。每课最多 10 问。`L-lesson` 仍不得写 Q/A。
|
|
@@ -5,14 +5,15 @@ description: 苏格拉底问答、反问授课或用提问教;当学习者卡
|
|
|
5
5
|
|
|
6
6
|
# Socratic Questioning
|
|
7
7
|
|
|
8
|
-
本 skill
|
|
8
|
+
本 skill 只生成提问、诊断与讲解文本。允许两种调用:`Q-question`(`audience=tutor`)或外部 `/goal` 派单(`audience=mine`)。不得写入 `lessons/` 或 `homework/`。
|
|
9
9
|
|
|
10
|
-
1.
|
|
10
|
+
1. `audience=tutor` 由 `Q-question` 调用:按稳定 Change ID 读取当前 locator,禁止依赖旧路径。无 Change 时允许 Q 创建 lightweight inquiry Change,不假装 A 已完成。
|
|
11
11
|
2. 读取调用方给出的 topic、OBJ、baseline、指定 `teaching_method` 和已有 inquiry 索引;按 `<Path>{roots.workflows}/learning/common/rules/questioning-policy.md</Path>` 选择配方,不要整读 archive。
|
|
12
12
|
3. 先判断能否提问:真新手或高元素交互时返回降级探针或「先走 L-lesson」建议,而不是硬出机制题。
|
|
13
13
|
4. 默认 `socratic` 五槽:澄清、机制证据、假设反例、迁移视角、元问题/下一步。用户指定 `5e-recipe` / `feynman` / `productive-failure` / custom 时只改题目,不改 inquiry 文件协议。
|
|
14
|
-
5.
|
|
15
|
-
6.
|
|
14
|
+
5. `audience=tutor` 写入 `inquiry/IQ-*.md`:Q1–Q5、空 A、`Response: pending`。`Response: ready` 后只追加 Teaching 与 Inquiry Lesson;不改写答案,不写 `lessons/`、`homework/`、mastered、`Submission`、`verdict`。
|
|
15
|
+
6. `audience=mine` 写入 `goal/probes/GP-*.md`:只审问已写 Lesson 与源码,不写学习者问答,不写 `Response:`、`Submission:`、verdict、mastered,不写 `inquiry/`,不得写 `lessons/`。默认一批 5 问(`b01` = Q1–Q5);每课最多两批 10 问(`b02` = Q6–Q10)。第三批必须返回 `split-proposal` 路由而不是再出题。禁止 `b03`。满 10 后只走 `split-lesson`。
|
|
16
|
+
7. Teaching 每题含思路复原、`aligned|partial|off|uncertain`、中文详解、`Explain (English)`、纠错、未见知识、来源。Inquiry Lesson 把 5 题收成一课并给 keep-alive 钩子。需要完整 30–40 分钟讲义或正式测评时只返回路由,不自动激活 L/H/R。
|
|
16
17
|
|
|
17
18
|
## 题槽
|
|
18
19
|
|
|
@@ -24,8 +25,9 @@ description: 苏格拉底问答、反问授课或用提问教;当学习者卡
|
|
|
24
25
|
| Q4 | 迁移/视角 | viewpoints |
|
|
25
26
|
| Q5 | 元问题/下一步 | question-the-question |
|
|
26
27
|
|
|
28
|
+
`audience=mine` 的 `b02` 使用同一 5 槽,编号为 Q6–Q10。不改槽位,不改 `audience=mine` 协议。
|
|
29
|
+
|
|
27
30
|
## 完成标准
|
|
28
31
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- 输出可被 Q-question 直接追加进 `IQ-*.md`。
|
|
32
|
+
- `audience=tutor`:一批 Q/A 成对;讲解在作答之后;指定教法只改变题目,不改变 Response 协议;
|
|
33
|
+
- `audience=mine`:输出可被 `/goal` 直接写入 `goal/probes/GP-*-b0N.md`,且不触发 learner 协议字段;每课 Q 数 ≤10;第三批只返回 `split-proposal`。
|