feat(AI 提示): 阶梯延到 L3 思路 / L4 示例
Deploy / deploy (push) Waiting to run

- 契约 HINT_LEVELS 加两级,HINT_MAX_LEVEL 2 → 4。前端的等级标签和「再多一点提示」
  按钮本来就跟着契约和 canEscalate 走,不用改
- L3 分步骤讲思路(中文伪代码),沿用 L0~L2 的零代码规则
- L4 是阶梯上唯一放开代码的一级,上限两行:过滤不再「出现代码就拦」,而是把代码块
  非空行、摊平进正文的类代码行、过长的行内代码合起来数,超过 KEY_LINES_MAX 才拦;
  没闭合的围栏按开到结尾算。重生成措辞和兜底话术按级补齐
- prompt 版本沿用 3 / 4:LEVEL_COMMON 拆成三句再拼回,L0~L2 的 system 逐字未变
  (已对照改前逐字核过),新两级靠 ai_hint.level 区分。不需要迁移

老师按班级 / 作业设最高等级拆到 2e,未做。

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-23 09:20:24 +08:00
co-authored by Claude Opus 5.5
parent b16e11e85d
commit 22fc8d63e2
3 changed files with 99 additions and 11 deletions
+9 -3
View File
@@ -130,16 +130,22 @@ export const HINT_MIN_FAILURES = 1
* 和判题状态码一样只能新增、不能改已有含义 —— 教师端「依赖提示」这类风险标签
* 要按它聚合,改含义等于把历史数据一起改了。
*
* 02 是一条阶梯,只能逐级上升:**一条新的失败提交最多解锁一级**,而且要学生自己
* 点「再多一点提示」才升,不会自动往上爬(2.6)。L3 思路 / L4 示例留给 2d
* 04 是一条阶梯,只能逐级上升:**一条新的失败提交最多解锁一级**,而且要学生自己
* 点「再多一点提示」才升,不会自动往上爬(2.6)。所以从第一次失败到 L4 至少要交 5 次
*
* L3 / L4 是 2d 加的。**L4 是阶梯上唯一允许出现代码的一级**(至多两行,见
* `services/hint-filter.ts` 的 `KEY_LINES_MAX`),L0L3 一行代码都不许有。
* 老师按班级 / 作业设最高等级还没做,现在所有题都开到 L4。
*/
export const HINT_LEVELS = [
{ level: 0, name: "反问", summary: "只反问,不给结论" },
{ level: 1, name: "定位", summary: "只说问题在哪,不说为什么" },
{ level: 2, name: "概念", summary: "讲清涉及的概念,不给改法" },
{ level: 3, name: "思路", summary: "分步骤讲解题思路,不写代码" },
{ level: 4, name: "示例", summary: "用相似的例子演示,或给出关键的一行" },
] as const
export const HINT_MAX_LEVEL = 2
export const HINT_MAX_LEVEL = 4
/**
* 编译失败的提示走这个值,**不在阶梯上**(查阶梯的 SQL 一律 `level >= 0`)。