算法学习 Agent:提示答案之前,先判断卡在哪一步
算法学习 Agent提示答案之前先判断卡在哪一步一、直接给答案会降低训练价值算法学习 Agent 如果用户一问就给完整答案短期效率很高长期学习效果很差。用户可能复制代码通过题目却没有理解题型、状态和证明。下一道变形题仍然会卡住。更好的方式是先诊断卡点。用户是没读懂题意不会建模不会选择数据结构还是代码边界写错。不同卡点需要不同提示。学习 Agent 的目标不是展示自己会做题而是把用户从当前卡点推到下一步。二、诊断流程要分阶段flowchart TD A[用户输入] -- B{是否理解题意} B -- 否 -- C[重述题意] B -- 是 -- D{是否有思路} D -- 否 -- E[提示关键性质] D -- 是 -- F{代码是否通过} F -- 否 -- G[定位反例] F -- 是 -- H[复杂度复盘]诊断阶段不要急着输出最终代码。可以先让用户描述暴力思路再引导发现瓶颈。比如从 O(n²) 到 O(n)重点不是背答案而是找出可维护的单调关系或可复用状态。Agent 也要识别用户已有基础。已经写出接近正确代码的人需要的是边界定位完全没有思路的人需要的是题意拆解和小例子推导。提示粒度要跟当前状态匹配。三、提示要有梯度hints: level_1: 观察窗口右端右移时左端是否只会向右移动 level_2: 尝试维护一个满足条件的最长窗口 level_3: 用两个指针和一个计数表更新窗口梯度提示比一次性答案更适合训练。第一层给方向第二层给结构第三层才接近实现。用户如果能在第一层解决就不要继续喂答案。系统要尊重学习过程。代码提示也要控制量。可以先指出某一行边界错误而不是整段重写。完整代码应放在最后并附上复杂度和反例验证。这样答案不是黑盒而是推理链的终点。def choose_hint_level(attempt_count: int, has_code: bool) - int: if not has_code: return 1 if attempt_count 2: return 2 return 3四、学习记录要沉淀薄弱点Agent 每次诊断都应记录卡点类型。是二分边界、递归终止、图遍历 visited、动态规划状态定义还是复杂度估算。长期看这些数据比刷题数量更重要。学习报告不要只统计做了多少题。应该统计哪些题型反复出错、哪些错误已经减少、哪些知识点需要复盘。刷题效率的核心不是每天多做几道而是减少重复跌倒。Agent 还要避免过度提示。用户刚开始思考时系统如果直接给关键性质会剥夺推理过程。可以设置等待和确认机制先问用户是否需要提示再给第一层线索。训练系统要帮助学习不要把每道题都变成自动补全。对代码错误Agent 可以先生成最小反例。比如用户写了二分边界错误就给一个长度很小的数组让错误显现出来。最小反例比直接指出答案更有记忆点也更容易让用户自己修正。学习路径推荐也要可解释。系统建议复习单调栈时要说明依据最近三道题都没有正确维护栈内含义或者复杂度证明总是漏掉弹栈次数。推荐如果没有证据容易变成新的焦虑来源。还要允许用户选择训练模式。冲刺模式可以更快给提示复盘模式可以更重视证明和反例入门模式则多给图解和小例子。同一套 Agent 不应该对所有人输出同样节奏。五、总结算法学习 Agent 应先诊断卡点再给梯度提示最后才提供完整题解。诊断结果要沉淀成薄弱点数据。真正有训练价值的 Agent不是替用户做题而是让用户下一次更接近自己做出来。