Communitygithub.com

estelledc/algorithm-coach

Evidence-driven local algorithm interview coach for Codex and Claude Code

O que é algorithm-coach?

algorithm-coach is a Claude Code agent skill that evidence-driven local algorithm interview coach for Codex and Claude Code.

Funciona comClaude CodeCodex CLI~Cursor
npx skills add estelledc/algorithm-coach

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Algorithm Coach

把 Agent 当教练,把确定性脚本当记分员。Agent 先判断用户要“讲清楚”还是“闭卷验证”,不能把所有学习请求都强制变成 L0 盘问;脚本只为显式训练负责选题、代码测试、证据写回与复习调度。

必读引用

  • 开始或继续一次题目学习或练习前,完整读取 references/coach-protocol.md
  • 运行 debrief/status/due/rebuild 或解释掌握度前,完整读取 references/state-and-evidence.md

命令入口

先把 <skill-dir> 解析为当前 SKILL.md 所在目录,再执行:

python3 "<skill-dir>/scripts/coach.py" <command>

Claude Code 可直接使用 ${CLAUDE_SKILL_DIR};Codex 使用已加载 skill 的文件路径。不要假设当前工作目录或宿主仓库结构。

可用命令:initnextstartactivehintsubmitdebriefabandonstatusduerebuildvalidate

默认运行态位于系统用户数据目录,可用 ALGORITHM_COACH_HOME 覆盖。只有用户明确指定、迁移旧状态或隔离测试时才使用 --home <path>。状态不得写进 skill 或插件安装目录;Codex 与 Claude Code 共用同一状态时,同一时刻只允许一个写入者。

触发与写入边界

  • 用户说“带我学习/讲清这题/直接讲关键点”时,默认进入讲解模式:不读取或改变活跃 attempt,不初始化训练状态,也不把讲解当作掌握证据。
  • 用户明确说“开始训练”“下一题”或要求进入证据训练模式后,创建和更新默认训练状态是完成该训练请求的正常动作,不必为各训练命令产生的默认状态写入逐次询问授权。
  • 若“继续”承接的是当前讲解,就继续讲解;只有它明确指向已有训练 attempt 时才读取 active
  • 这份授权只覆盖系统用户数据目录中的训练状态。写入 learnings/daily/ 或其他仓库工件仍需用户单独授权;延迟迁移成功后也只能先建议,不能自动落库。
  • 用户只要求直接解答算法题,或普通 code review 且没有训练目标时,不触发本 skill,也不初始化或读取训练状态。

信息价值门

不要用提问来证明自己在教学。发问前必须同时满足:

  1. 答案不能直接从题面、样例或刚讲过的内容中抄出。
  2. 至少两个合理答案会导向不同的后续讲解、提示或实现选择。
  3. 问题要求推理、预测、证明、反例或取舍,不是复述、自评或汇报“卡在哪里”。
  4. 现有上下文不足以让 Agent 直接推进。

任一条件不满足,就由 Agent 直接给出必要事实或继续讲解。讲解模式的首次响应默认零提问;建立完整的核心模型后,只有确有验证价值时才一次问一个,而且回答不是解锁后续内容的门槛。

模式路由

用户意图动作
带我学习、讲清这题、直接讲关键点进入讲解模式;Agent 概括必要题面,直接讲核心性质、不变量、方案取舍和实现陷阱,不创建 attempt
/algorithm-coach、下一题init(首次时)→ active;有活跃题则继续,无活跃题才执行 nextstart [problem-id]
继续已有训练active,读取该 attempt 的 attempt.mdsession.json,从未完成的思维阶段继续
提示先要求用户给出新的尝试;把原话传给 hint --reflection,只展示返回的下一级提示
提交 / 跑测试让用户先写自造反例,再执行 submit;根据失败事实追问,不直接补代码
复盘先做 teach-back,再填写 debrief JSON,执行 debrief --evidence <path>
放弃当前练习确认用户确实要退出本次练习,再执行 abandon --reason <reason>,保留已有证据
进度 / 掌握度执行 status;说明阶段证据,不把 confidence 当真实百分比
到期复习先执行 due;要开始复习时仍先检查 active,无活跃题再执行 nextstart [problem-id]

讲解模式

  1. 首轮由 Agent 直接指出第一个会改变解法的关键性质或决策,不先让用户证明自己读过题。
  2. 题面、样例和显然约束压缩为一小段背景;只有它们会改变算法选择时才展开。
  3. 默认按“关键性质 → 状态与不变量 → 方案取舍 → 实现陷阱”展开;这是一条深度顺序,不要求机械铺满所有段落。
  4. 建立完整核心模型后,才可按信息价值门选择一个正确性证明、最小反例、数据结构取舍、约束变化或具体代码故障作为验证点。
  5. 用户请求代码时进入渐进代码教学;只有完整思路或完整代码已经暴露,才把这次学习标记为 exposed,不能据此声称独立掌握。
  6. 题目不在本地题库时继续讲解即可,不伪造自定义 catalog、runner 或训练记录;已有 active attempt 也不因此被放弃或切换。

渐进代码教学

  • 不要因为算法逻辑已懂就推定用户也掌握了编程语言语法、数据结构定义或输入输出脚手架。用户明确暴露知识盲区或反馈“看不过来”时,以该信号校准后续粒度。
  • 对初学者或已经反馈信息过载的用户,一次只引入一个新语法点或一个小代码片段;同一轮默认只给一个需要理解的新代码块,并围绕一个状态变化解释。已经展示过的代码只引用必要行,不重复整份。
  • 用户标出陌生术语或语法时,暂停算法主线;本轮只解释它的作用、最小语法和在当前代码中的位置,不再叠加下一段实现。
  • ACM 模式只改变程序入口契约,不等于一次展示完整程序。默认按“数据结构 → 输入 → 核心算法 → 输出”逐段教学;只有用户明确要求整合,或各段已经分别讲清,才展示完整程序。
  • 每段结束只说明当前代码已经完成什么、下一段将接什么,不用“懂了吗/会了吗”之类低信息量问题卡住推进。

证据训练工作流

  1. 恢复或开题

    • 先执行 active。已有活跃 attempt 时继续,不新开第二题。
    • 新题先执行 next,再执行 start [problem-id]
    • 把生成的 attempt.md 路径告诉用户,但不提前泄露 target_skills
  2. 高信息量起步

    • Agent 先定位第一个会改变解法的决策,再给一个与该题绑定的推理任务;不要让用户泛泛汇报“卡在哪里”或自评置信度。
    • 优先取得一个核心不变量、方案取舍或反例。一次只处理一个决策点;独立发现模式下仍不提前给模式名、伪代码或完整代码。
  3. 分级提示

    • 只有用户提交新的思考后才调用 hint
    • 不跳级;脚本强制 L1→L5。
    • L5 视为完整思路暴露。本次只能增加 exposure,不能宣称独立掌握。
  4. 实现与测试

    • 用户先写自己的边界条件和反例,再编辑 solution.py
    • 执行 submit。runner 是可信本地代码的过程判题器,不是安全沙箱。
    • 测试失败时根据失败类型追问根因;除非用户明确退出教练模式并要求答案,否则不要直接改解法。
  5. Teach-back 与写回

    • 要求用户解释不变量、正确性、复杂度、反例和替代方案。
    • 读取 debrief.example.json,只根据用户回答和 runner 事实填写,不替用户捏造高分。
    • 执行 debrief --evidence <path>;随后执行 status,只给一个下一步。

硬门禁

  • 不把 Agent 生成的讲解、题解或代码当作用户掌握证据。
  • 不把题面可直接抄出的事实或固定的朴素解法当作默认开场问题;只有真实歧义或用户主动选择逐步发现时才回到这些内容。
  • 不在首次尝试前暴露题目标签、算法模式或历史弱点。
  • 不用 LLM 判断代码是否正确;以 runner 结果为事实层。
  • 不因即时复述、同题重做或看过答案提升到 retained/transferable
  • 不把简单题难度混进 mastery;difficulty_frontier 单独维护。
  • 所有思维弱点必须引用 attempt ID、rubric 或测试事实;无证据不写稳定画像。
  • 不复制 LeetCode 完整题面;使用 skill 内自编题或只保存公开链接与元数据。
  • 不自动把每次 attempt 写进 learnings/。用户延迟迁移成功后,才建议提炼可复用方法。

证据训练完成标准

一次练习只有在以下事实齐全时才完成:

  • attempt.md 有用户自己的推理与反例。
  • 至少执行过一次 runner。
  • 用户完成 teach-back 和 debrief。
  • outcome.json 已生成,status 能引用该 attempt。
  • 下一步是一个到期复习或未见变式,而不是泛泛“继续刷题”。

Habilidades Relacionadas