--- name: lecture-to-hw description: 将课程课件、作业文件(PDF、DOCX、Markdown、HTML、图片等)、课堂代码和历史答案格式转成简洁的大学生风格 Markdown 作业答案,并可由主 agent 按模块调度子代理解题与 review。Use when asked to complete course homework, read homework files in varied formats, match homework to lectures/slides/code, use methods taught in class, imitate previous hw*_solution Markdown style, create solution folders, decompose assignments across subagents, or generate necessary scripts, figures, or data files for homework submissions. --- # Lecture to HW ## 工作流 1. 扫描当前课程目录。 - 优先用 `rg --files`,必要时配合 `find`、`ls` 和定向 `rg`。 - 找出作业文件、课件、课堂代码、notebook、HTML demo、数据、图片和历史 solution。 - 作业题目可能是 PDF、DOCX、DOC、Markdown、HTML、notebook、纯文本、图片或压缩包中的文件。 - 根据 hw 编号、课件编号、文件名关键词和目录结构推断对应关系,不假设命名一定规范。 2. 读取作业要求。 - PDF 作业优先用 `pdftotext -layout` 提取。 - DOCX/DOC 作业不要只信纯文本提取;优先读取正文结构,并尽量转换成 PDF 或渲染页面检查公式、表格、图片和版面。可用 LibreOffice、pandoc、系统预览/打印、或现有文档工具链,选择当前环境可用且不破坏原文件的方法。 - Markdown、HTML、notebook 和纯文本可以直接读取;图片题目需要 OCR 或视觉识别,并保留不确定处。 - 如果公式、图、表格或版面可能被误读,用 `pdftoppm` 渲染页面或做视觉检查。 - 提取每道题的任务、给定数据、输出要求、方法限制、保留小数规则,以及是否需要代码或图片。 - 如果题目识别不完整、公式/表格无法确认、多个文件可能都是作业要求,先向用户说明不确定点并请求确认,不要一气乱写。 3. 匹配课件和代码。 - 用题目关键词搜索课件和代码,例如搜索、CSP、博弈、线性回归、逻辑回归、MLP、CNN、强化学习等。 - 优先采用匹配课件里的术语、公式、算法、记号和解题粒度。 - 如果课堂代码、HTML demo、实验报告、notebook 或数据能直接支持答案,优先复用。 - 除非题目要求,不引入明显超出课程范围的高级方法。 4. 学习历史答案风格。 - 读取最近或最相关的历史 Markdown,例如 `作业/hw*_solution/*.md`。 - 只提取格式习惯,不照抄内容:标题、姓名/学号/班级行、标题层级、公式写法、表格风格、图片引用和答案长度。 - 默认写成认真大学生提交作业的口吻:简洁、只踩采分点、有必要中间步骤、不写废话。 5. 决定单 agent 还是并行模式。 - 先由主 agent 充当 controller,负责读题、拆题、调度、验收和最终组装。 - 如果题目能按独立小问、实验模块、课件章节或数据流程清楚解耦,并且各部分没有强依赖,就可以开启并行模式。 - 默认最多同时 4 个子代理;如果用户明确需要更多,且任务仍然能安全拆分,可少量增加,但不要为了并行而并行。 - 如果题面不清楚、格式识别不稳、题目很短、或多个小问彼此强耦合,就用单 agent 模式。 - 子代理只做边界清楚的任务,例如某道题的草稿、某个实验复现、某份课件对应关系确认、或独立 critic。 - 不要让多个子代理同时改同一个最终 Markdown;主 agent 统一收口、去重和定稿。 6. 解题并验证。 - 符号推导题用手算推导。 - 数值、实验、绘图、模型、搜索或仿真题,在 solution 文件夹里写最小可复现代码。 - 优先使用用户指定环境,例如 `conda run -n PR python ...`;未指定时使用当前可用 Python。 - 代码保持短小,只服务于作业结果。运行后把必要结果写入 Markdown。 7. 生成输出。 - 每次作业创建独立目录,例如 `作业/hw5_solution/`。 - 至少输出一个 Markdown 答案文件,例如 `hw5 姓名.md`,文件名尽量匹配历史习惯。 - 只添加必要附件:脚本、图片、数据或题目要求的文件。 - 不生成无关 README、日志、空模板或没用上的脚手架。 8. 提交前 review。 - 重新阅读作业、对应课件、生成的 Markdown 和支持代码。 - 检查每个小问是否回答完整。 - 检查公式、正负号、维度、索引、小数、表格、图片、文件名和题号。 - 检查代码能运行,Markdown 中的数值来自验证结果。 - 删掉明显 AI 味:长背景、空泛总结、过多小标题、夸张解释、无依据结论。 9. 做组装后 review。 - 先看主 agent 自己的把握:如果工程量大、题目复杂、或仍有不确定点,就再开一个老师/助教视角的 critic 子代理。 - critic 先读作业和对应课件,再检查生成的 Markdown 与代码,重点看是否漏题、是否有逻辑/公式/数值错误、是否用了不符合课件的方法、是否有明显 AI 味。 - 主 agent 根据 critic 意见修正后再交付。 - 最终回复里给出可信度分级(高/中/低)和需要用户手动复核的地方。 ## 答案风格 - 使用 Markdown 和 LaTeX 公式。 - 小标题短而少。 - 优先用直接计算、紧凑表格和必要的最终结论。 - 写必要中间步骤,但不过度解释常规定义。 - 如果历史答案里有姓名、学号、班级,沿用对应格式。 - 语气朴素、认真,像学生自己写的作业。 - 避免“本文将”“综上所述”“作为 AI”、大段背景介绍、动机说明和装饰性总结。 ## 最终回复 简短说明: - 生成了哪些文件、在哪里; - 跑了哪些验证或检查; - review 后修了什么; - 当前作业可信度:高/中/低,并说明原因; - 需要用户手动复核的地方,如果有。