Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 06:38
· 6 commits to main since this release

版本语义判断(每次发版重做一遍,不照抄上次):本轮未新增契约字段、未改落盘布局、.progress.json 格式不变,存量教材项目照常续写 → 够不上 MAJOR(MAJOR 的判据是老项目的 .progress.json 不能续用)。但阶段 1 多了一轮作者可见的材料征询,且学科档案第 3 节标题改名## 3 认知动词与层级示例## 3 认知动词、层级示例与章内分布)——按 subject-profile-spec.md 第 6 节写过自定义档案的人需同步改标题,否则结构校验会拒绝 → 也不是 PATCH。故定 MINOR。

Changed

  • 章内 Bloom 层级分布从内核下移到各学科档案第 3 节——清的是 [0.4.0] 段末留下的第 1 条待改项,也是学科档案层漏掉的第五个可变点bloom-levels.md 第 7 节此前给的四条经验分布(示范例题落记忆~应用、引导练习"半独立地练刚学的程序"、独立习题应用~分析、评价/创造全书 1–3 题点缀)是按 STEM 写的,却留在学科无关的内核里。eval 7、8 两次独立运行都撞上这一处:eval 8 自行把范例研读放在分析/评价层,eval 7 在梯度备注里写"分析层 35% 是人文社科的自然结果"——两次都是模型现场纠正内核,理由同源。危害不在"建议不准",而在下游动作:一份按内核默认判读的梯度报告会把文科的正常章节读成梯度异常,作者照着告警把分析层的题降级,研读就变成了默写

  • 拆分口径按 subject-profile-spec.md 第 4 节的判断法(换个学科照样成立即属内核)逐句判定:留内核的是三类题「支撑程度」与 Bloom「认知高度」的正交关系(规格第 2 节已明列)、独立习题先低后高的排列纪律、"偏离不是错误"与"梯度以全书为单位检查"两条元规则;下移的是每类题各自落在哪几层。内核第 7 节改为指路 + 说明为什么这件事必须随学科变

  • 三份档案第 3 节据此各写一份分布:stem 沿用原措辞(它本就是按 stem 写的);humanities 整体上移一档(范例研读理解~分析——本学科的"示范"是示范一次材料研读而非一遍可执行程序,压到记忆层就示范不出东西;独立论述分析~评价,评价与创造层是常规而非点缀),并写明"分析层占三成上下是正常结果"以及告警时该先查什么;economics 写成双峰(模型题应用~分析、政策论述题评价层),另记一处最易判错的地方——查出一个统计数值是记忆层,用它检验一个命题是评价层

  • 档案第 3 节标题随之改为 ## 3 认知动词、层级示例与章内分布(原 ## 3 认知动词与层级示例)。标题是写下一份档案的人唯一的路标,名不副实就会漏掉这一块——本轮的教训正是"内容留在内核里,没人发现它是学科相关的"。同步改 validate_skills.pyPROFILE_REQUIRED_SECTIONS、单测 fixture 与缺节负向用例、规格第 3 节的四节表格

  • eval 7 的实测分布(10/15/12/29/13/3,分析层 35%)只作为"stem 分布不适用于文科"的反证,没有写进档案。它是模型自己生成的一本书,拿它反过来定义规范是循环论证;且内核原文本来就是定性描述,不给百分比,档案保持同一形态

  • 连带修好两处引用点:textbook-outline/SKILL.md 阶段 3 例题习题计划的"层级分布参考 bloom-levels.md 第 7 节的经验默认"改指所用档案第 3 节;performance-task-rubric.md 原文把表现性任务与第 7 节"评价/创造常放末章"称作同一件事的两面,而那句正被下移——改写为限定在"评价/创造属少量点缀的学科"并指路档案,否则文科作者会读到一条与本学科档案相反的话

  • 阶段 1 新增条件性材料轮,并把降级纪律落盘固化为要求——清的是 [0.4.0] 段末第 2、3 条待改项,两条本是同一件事的两半(问材料 / 没材料时写下纪律)。第 3 条的病因与原记录不同textbook-outline/SKILL.md 的「写完不停顿直接进阶段 2」与档案第 1 节的「强烈建议作者提供材料」并非字面矛盾——前者说的是产出写盘之后,而阶段 1 本就有一轮 AskUserQuestion 四问。真正的缺口是顺序:四问里第 1 问才问到学科,问完才判定得出档案,届时才知道本学科要不要材料,所以索要材料只能发生在第一轮之后,而内核没有任何动作承接档案里那句话。eval 7 当时靠现场权衡补上了这一步(自行并入提问),规范里始终是空的

  • 新分支写在内核(换个学科照样成立):判定档案 → 该档案第 1 节有「前置输入要求」吗 → 有则追加一轮索要材料,作者给了就把材料清单落 00-教材设计.md「## 一、教学定位」子节、没给就把降级纪律与预期代价落同一子节;无前置输入要求的档案(stem)原样不停顿。明写「这一轮不是 gate」:作者答"没有"、答不全、直接跳过一律照常放行,绝不等待确认——不写死这句,模型很可能把它当第三个停点停死,那就动了双 gate 设计。要什么材料、纪律内容与代价是什么留在档案(humanities:约三分之一的题挂 ⚠️economics:数据类题一律 ⚠️模型题与概念题不受影响,这句要写明,否则作者会以为整本书都待核)

  • 落盘而非只在对话里说一句,理由是上下文隔离:各章在不同会话里独立写成,00-教材设计.md 是唯一能传到阶段 4 的载体,只说过没写下的纪律,写第 3 章时等于不存在。没有给契约新增「材料」字段——落在「## 一」子节即可被下游读到,加字段要牵动全部 5 个 skill,超出这三条的范围;handoff-contract.md 只改了重入规则表里的措辞(current_stage=1 由「一轮提问」改为「一至两轮提问」)

  • 题内局部 ⚠️ 的合法边界写进内核exercise-design.md 第 3 节,作为第 4 条的无编号补充段——第 6 条被 textbook-exercises/SKILL.md 按编号引用,插入新编号会打断它)。eval 8 自发出现「整题 ✅、题面内某数据标 ⚠️ 且声明不参与结论」这种档案未规定的形态,它合理但危险:不写死条件就会变成漂白手段(把核不实的材料都标成"不参与结论",整题照打 ✅)。定的硬条件是把这一项整个删掉、题目与答案依然完全成立——成立才可 ✅,不成立说明结论其实依赖它,整题必须 ⚠️humanities 第 2 节补本学科最常见的那种形态与一句自查

  • 两份档案的台账落位一起补齐humanities 的引文台账与 economics 的数据来源台账此前都只写了「附在两节之后」,没说 textbook-chapter 独立触发(无项目目录、无 术语表.md)时落哪。两份各补一句:被调度时并入 术语表.md 逐章追加,独立触发时随章附在「本章小结」之后。原待改项只点了 humanitieseconomics 是这次读文件时撞见的同构缺口——档案是复制同一套结构长出来的,一份有的毛病另一份多半也有,改一份就得回头扫一遍相邻档案

  • 至此 [0.4.0] 段末的五条遗留待改项全部清空(第 5 条 README 文科成本预期实际已随 1dabea0 做掉,本轮核对时才发现)

  • evals 断言 77 → 90,补的是本轮四项新规范的验证位:核对后发现现有断言对本轮改动一条都验不到——阶段 1 的材料轮与降级落盘在 eval 7/9 零覆盖,章内 Bloom 分布在 eval 7/9 只查了动词不查分布,题内局部 ⚠️ 在 eval 8/10 只查了「状态只有两种」,台账落位则完全没查。不补就跑,八个用例只能证明没回归,证明不了改动生效。新增 13 条:eval 1 一条反向断言(stem 无前置输入要求,阶段 1 不得追加材料轮——锁住条件分支不退化成无条件);eval 7/9 各四条(材料轮触发、该轮不是 gate、降级纪律真落进「## 一」子节、章内分布取自档案);eval 8/10 各两条(台账在独立触发时随章附章末、题内局部 ⚠️ 须满足「删掉该项设问仍成立」)

  • 其中「材料轮不是 gate」与「局部 ⚠️ 的硬条件」两条是防退化断言:前者若失守就多出第三个停点、破坏双 gate 设计,后者若失守局部标注就成了给核不实材料换 ✅ 的漂白手段。判定时都必须查产物取证,不能采信会话自述

Eval 预检(2026-08-31,宿主 Claude Code 2.1.251,claude -p 独立进程)

  • 跑了 5 个用例(1、7、8、9、10),48 条断言:46 通过、2 未触发、0 不通过。 成本 $26.15 / 183 turns。判定记录在 evals/workspace/(gitignored)各用例 outputs/judgment.md性质必须说清:每个用例由 claude -p 起独立进程、全新上下文、只喂 prompt 原文,「新开会话」这条满足;但判定人是本轮改动的作者本人,非独立第三方——因此是预检,不是正式验收,README 里程碑表不据此回填
  • 第五个可变点(章内 Bloom 分布下移档案)拿到直接证据:eval 1 产出的原文写着「层级分布依据 stem 档案第 3 节」——它去档案查分布,不再查 bloom-levels.md 第 7 节。三份档案实测分布分别是 stem 应用 50.0%/分析 25.6%、humanities 应用 6.7%/分析 44.2%、economics 应用 26%/分析 37%(双峰);逐类型对照更清楚:同是「引导练习」,stem 下应用 10/15、humanities 下分析 11/21 而应用仅 2;同是「评价+创造」,stem 下 3 题(档案写「1–3 题点缀」)、humanities 下 14 题(档案写「常规非点缀」)。同一套内核跑出三种分布,说明这一层差异确实属于档案而非内核
  • 材料轮四条断言全部实测通过,其中两条是压测出来的:① eval 9 被拿「没有」去撞 gate 时主动拒绝放行——「你这句「没有」我读作是回答材料征询,不能替代五件套的确认,按 gate 纪律我不能自行判定放行」,证明新增的一轮没有稀释双 gate;② eval 1 的反向断言通过——stem 下材料轮未出现(索要材料关键词命中 0、无降级子节、全程 3 轮 vs humanities/economics 的 4 轮),条件分支没有退化成对所有学科都问
  • 降级纪律落盘两个用例都到位,economics 侧原样写出了档案里那句「模型题与概念题不受影响」,并自行补了「待核范围仅限实证数据题,不是整本书」;两份台账各自落位(## 引文台账 / ## 数据来源台账 均随章附在小结之后)
  • 未触发的 2 条是两个单章用例的「题内局部 ⚠️ 硬条件」:逐题检查确认题干内均无局部标注,按判定口径记未触发、不计入不通过。但 eval 8 暴露了一个规范缺口线索:局部标注的真实落点是台账行✅ 已核归属;⚠️ 页码转引待核原书),而本轮写进 exercise-design.md 的边界只覆盖「题干某项核不实、整题仍 ✅」。台账「核对状态」列本就该表达这种精度差异,不算违规,但规范对它一个字没写——下一轮值得考虑给台账行的混合状态定个写法
  • 未跑 eval 2、3、4(纯回归位,本轮无新增断言落在其上),欠账如实留着