agentleFS
limpidweilimpidwei/final-exam-review/SKILL.md

final-review

Skill5 starsChanged 4 months agoMITView on GitHub

期末一键复习。考前72小时,把课件(PPT)、课堂笔记、阅读材料、PDF、图片、扫描件等多模态资料自动发现→多模态归一化→逐章分类整合→生成可打印的逐章期末复习稿PDF。面向期末突击党和中英双语课程学生。Use when user mentions anything about organizing or generating final-exam review materials — "期末复习", "考前冲刺", "考前72小时", "期末突击", "整理复习资料", "一键复习", "帮我整理XX课复习", "生成XX课复习", "把课件整理成复习", "把笔记整理成复习", "PPT转复习", "PDF复习", "扫描件复习", "中英双语复习", "整理下载", "从微信整理", "从QQ整理", "复习资料", "备考材料", "考试复习", "生成复习", "笔记转复习", "一键整理资料", "期末重点整理", or any similar request about organizing or reviewing course study materials. Skill name for direct invocation: /final-review

  • Installs packages

6 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions6 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 6

    1. DanMcInerney/architect-loop★ 626same name
    2. aromanarguello/roman-skills★ 18same name
    3. normalled/apijack★ 7same name
    4. jsuvic/agent-profile★ 3same name
    5. andeeplus/aplus★ 2same name
    6. MrD-Lt/codex-final-review★ 2same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

Files
SKILL.md

期末一键复习

设计理念

零配置启动:用户告知文件来源(微信/QQ/指定路径/不知道),skill 自动完成从多模态文件发现到逐章复习稿 PDF 输出的全过程。面向期末突击党和中英双语课程学生,无需任何技术背景。

环境依赖分层

Tier 0: 零依赖(模型原生能力)                Tier 1: pip install          Tier 2: + 系统依赖
──────────────────────────────────    ────────────────────────    ────────────────────
• 模型视觉能力 → 图片/扫描件理解      • .docx → python-docx        • OCR 扫描件(EasyOCR)
• .md / .txt / .html 直接读取         • .pptx → python-pptx        • PDF 输出(WeasyPrint)
• 资料类型分类(模型推理)             • .pdf (文本) → PyPDF2
• 课程命名(用户对话)                • .epub → ebooklib
• 目录创建 (bash mkdir)               • 大文件分段 (chunk_manager)
• Markdown 输出 (Write tool)          • 多格式输出 (output_writer)
• 章节拆分+内容整合(模型推理)         • PDF (WeasyPrint→pdfkit→fpdf2三引擎降级)
• 复习生成(模型推理)
• 关键词建议(模型文本分析)

PDF 三引擎保证:WeasyPrint (最佳) → pdfkit (备选) → fpdf2 (纯Python,零系统依赖,全平台永久保证)。任何平台、任何配置,最终一定能出 PDF。

启动时自动检测:模型支持 vision?→ 优先使用视觉能力。不支持?→ 检测 Python+OCR 引擎。都没有?→ 标记 [待OCR],不跳过。


触发

"期末复习"、"考前冲刺"、"考前72小时"、"期末突击"、"一键复习"、"帮我整理XX课复习资料"、"生成复习材料"、"把课件整理成复习"、"把笔记整理成复习"、"PPT转复习"、"生成复习 for {课程名}"等。


完整决策树(6 Phase)

用户触发 /final-review
│
├─ PHASE 0: 路径发现 + 偏好设置
│  │
│  ├─ [0.1] 用户提供了具体路径?
│  │  ├─ YES → 验证路径 → [0.5]
│  │  └─ NO → [0.2]
│  │
│  ├─ [0.2] 用户提示了来源平台?
│  │  ├─ "微信" → file_finder.py --platform wechat
│  │  │  ├─ 找到 → 列出路径+文件数 → 用户选择 → [0.5]
│  │  │  └─ 未找到 → 回退到 [0.3]
│  │  ├─ "QQ" → file_finder.py --platform qq
│  │  │  ├─ 找到 → 用户选择 → [0.5]
│  │  │  └─ 未找到 → 回退到 [0.3]
│  │  └─ 不知来源 → [0.3]
│  │
│  ├─ [0.3] 通用扫描(bash find/ls,无需 Python)
│  │  ├─ Downloads / Desktop / Documents / D:\大学\ / D:\课程\
│  │  ├─ 文件类型过滤 + 课程关键词初筛 → 最多 50 个候选
│  │  └─ 找到?→ 分组展示 → 用户确认 → [0.5]
│  │     └─ 未找到 → 请用户手动指定路径
│  │
│  ├─ [0.4] 扩展扫描(可选)
│  │
│  ├─ [0.5] 文件初筛清单
│  │  ├─ 排除:系统文件(~$) 临时文件(.tmp) 空文件(<1KB) 安装程序(.exe)
│  │  └─ 按修改时间倒序 → 用户逐文件勾选确认【确认点①】
│  │
│  ├─ [0.6] 语言偏好设置
│  │  │
│  │  │  四种模式,精准对标不同学生群体:
│  │  │
│  │  │  [1] 中文主体 + 英文关键表达标注
│  │  │      正文中文(快速理解)。在影响考试阅读和答题的关键位置标注英文:
│  │  │      • 缩写 → 标注全称+中文(CISG = United Nations Convention on
│  │  │        Contracts for the International Sale of Goods, 国际货物销售合同公约)
│  │  │      • 关键词 → 括号标注英文(对价 consideration、允诺禁反言 promissory estoppel)
│  │  │      • 关键短语 → 标注英文(注意义务 duty of care、举证责任 burden of proof)
│  │  │      • 关键句 → 双语引用判例法标准表述
│  │  │      分层标注:首次完整标注,后续可仅保留英文关键词
│  │  │      适合:英语阅读慢、中文理解快、但必须应考英文的学生
│  │  │
│  │  │  [2] 英文主体 + 中文难词标注
│  │  │      正文英文(原生复习语言)。仅标注超常规的难词:
│  │  │      • 拉丁文/法语词(force majeure → 不可抗力, res judicata → 既判力)
│  │  │      • 难词生词(promulgate → 颁布, encumbrance → 权利负担)
│  │  │      • 不直观短语(ratio decidendi → 判决理由, obiter dicta → 附带意见)
│  │  │      常见法律术语不标注(如 contract, negligence 基础词汇不需要中文)
│  │  │      适合:英语好、用英文复习、遇到超纲词汇需要中文辅助的学生
│  │  │
│  │  │  [3] 纯中文 — 国内考试
│  │  │  [4] 纯英文 — 英文论文/国际期刊
│  │  │
│  │  └─ 默认 [1]。语言偏好写入 session context,贯穿全部 Phase
│  │
│  └─ [0.7] 源材料优先级确认
│     ├─ "你有没有教材?" → 有 / 没有
│     ├─ "笔记和教材以哪个为准?"
│     │   ├─ 教材为准 → 教材定章节结构,笔记补充
│     │   ├─ 笔记为准 → 笔记定章节结构,教材补充
│     │   └─ 自动 → 以 syllabus/key_points 为框架判断
│     └─ 优先级写入 session context,影响 Phase 7 章节整合
│
│  ├─ [0.8] 复习密度选择
│  │  │
│  │  │  根据剩余备考时间和个人偏好选择输出密度。写入 session context,作为 Phase 7 硬性总量约束。
│  │  │
│  │  │  [1] 精简版 —— 3–4万字
│  │  │      适合:只剩1–2天、只看框架和考点
│  │  │      每章基准定额:必考 7000–9000字 / 重点 4500–6500字 / 了解 1500–2500字
│  │  │
│  │  │  [2] 标准版 —— 6–8万字(默认,考前72小时急救)
│  │  │      每章基准定额:必考 13000–17000字 / 重点 9000–13000字 / 了解 3500–5500字
│  │  │
│  │  │  [3] 详细版 —— 10–12万字
│  │  │      适合:时间充裕、需要深入论证和案例细节
│  │  │      每章基准定额:必考 22000–28000字 / 重点 15000–20000字 / 了解 6000–9000字
│  │  │
│  │  │  默认 [2]。若章节数明显偏离 6–8 章,主 agent 可按比例上下调整单章定额,
│  │  │  但全稿总字数必须严格落在所选 tier 区间内。
│  │  │
│  │  └─ 选择结果写入 session context:`review_density = concise|standard|detailed`
│
├─ PHASE 1: 多模态格式归一化
│  │
│  │  原则:模型视觉能力 > OCR > 标记待处理。不可用的文件不跳过。
│  │
│  ├─ [1.0] 能力检测
│  │  │
│  │  ├─ 检测 1:当前模型是否支持多模态(vision)?
│  │  │   └─ 判断:能否读取图片文件并理解内容
│  │  │   ├─ 支持 → vision_mode = true
│  │  │   │   图片/扫描件/PPT截图 → 直接使用模型视觉能力理解
│  │  │   │   优势:零依赖、上下文内直接理解、无需额外安装
│  │  │   └─ 不支持 → vision_mode = false → 进入 OCR 降级
│  │  │
│  │  ├─ 检测 2:Python 环境?
│  │  │   ├─ Python ≥ 3.9 可用?→ python_ok = true
│  │  │   │   ├─ 检测 OCR 引擎(按优先级):EasyOCR → Tesseract → PaddleOCR
│  │  │   │   │   引擎版本 vs Python 版本兼容性:
│  │  │   │   │   • EasyOCR: Py 3.6-3.11+, 瓶颈在 PyTorch, 中文~92%
│  │  │   │   │   • Tesseract: Py 3.6+ (无上限), C++引擎不受Python限制, 中文~85%
│  │  │   │   │   • PaddleOCR: Py 3.7-3.11, 瓶颈在PaddlePaddle, 中文~96%
│  │  │   │   │   → 安装第一个兼容的引擎
│  │  │   │   ├─ 检测文档依赖:python-docx / python-pptx / PyPDF2 / ebooklib
│  │  │   │   └─ 任一不可用 → 标记 [待安装: pip install X]
│  │  │   └─ Python 不可用 → python_ok = false
│  │  │      └─ 提示安装 Python 3.9+(winget/brew/apt 一键指令)
│  │  │
│  │  └─ 能力组合写入 session context
│  │
│  ├─ [1.1] 文本模态(零依赖,Claude 原生)
│  │  ├─ .md / .txt → 直接 Read,自动检测 UTF-8/GBK 编码
│  │  ├─ .html → 读取后去除标签,保留标题层级
│  │  └─ .json(幕布导出)→ 解析 JSON 节点树 → 层级 MD
│  │
│  ├─ [1.2] 文档模态(需 Python)
│  │  ├─ python_ok?
│  │  │  ├─ YES → format_converter.py
│  │  │  │  ├─ .docx → docx2md(含内嵌图片提取 → 走 [1.3] 视觉/OCR)
│  │  │  │  ├─ .pptx → pptx2md(文本 + 图片分离 → 图片走 [1.3])
│  │  │  │  ├─ .pdf (文本) → pdf2md
│  │  │  │  └─ .epub → epub2md
│  │  │  └─ NO → 标记 [待转换: .docx/.pptx/.pdf 需要 Python]
│  │  │
│  │  └─ PPT 增强策略:
│  │     ├─ vision_mode → 直接理解 PPT 截图/导出图片(含布局+图表理解)
│  │     ├─ python_ok → python-pptx 提取文本 + 分离内嵌图片
│  │     └─ 都不可用 → 标记 [待转换]
│  │
│  ├─ [1.3] 视觉/OCR 模态
│  │  │
│  │  ├─ vision_mode = true?
│  │  │  ├─ YES → 直接让模型读取图片/扫描件
│  │  │  │   优势:零依赖,上下文内理解,不丢失排版信息
│  │  │  └─ NO → 进入 OCR 降级
│  │  │
│  │  ├─ OCR 降级链:
│  │  │  ├─ EasyOCR 可用?→ ocr_tool.py --engine easyocr
│  │  │  ├─ EasyOCR 不可用 → Tesseract 可用?→ ocr_tool.py --engine tesseract
│  │  │  ├─ Tesseract 不可用 → PaddleOCR 可用?→ ocr_tool.py --engine paddleocr
│  │  │  └─ 全部不可用 → 标记 [待OCR] + 保留原文件
│  │  │     └─ 不跳过!生成占位符,后续补装后重跑
│  │  │
│  │  └─ OCR 错误处理(增强):
│  │     ├─ 引擎未安装 → pip install → 重试
│  │     ├─ Python 版本不兼容 → 降级到下一个引擎 → 重试
│  │     ├─ 图片质量差 → 图像增强预处理 → 重试
│  │     │   └─ 增强后仍失败 → 标记 [OCR失败: 图片质量过低]
│  │     ├─ 网络问题(模型下载失败)→ 重试 3 次,间隔递增
│  │     └─ 未知错误 → 收集完整错误日志 → 标记 + 汇总报告
│  │
│  └─ [1.4] 上下文窗口估算
│     ├─ 中文 ≈ 字数 × 1.5, 英文 ≈ 词数 × 1.3
│     ├─ token < 80% 上下文 → 直接全量处理
│     └─ token ≥ 80% 上下文 → 按章节边界拆分,分段处理
│
├─ PHASE 2: 资料类型分类(8 维逐层检视)
│  │
│  │  每层独立给分,按 `config/material_types.json` 优先级仲裁。
│  │  移除了"法条"维度——法条内容在笔记/教材章节中自然包含,不单独分类。
│  │
│  ├─ [2.1] 考纲/大纲?
│  │  ├─ 含"课程目标"+"学时"+"考核方式"?含学时分配表?
│  │  └─ YES → syllabus(最高优先级)→ 提取考点权重,写入 topic_map 骨架
│  │
│  ├─ [2.2] 重点/考点标记?
│  │  ├─ 含【★重点】【必考】【历年真题】【高频】?含"不考""了解即可"?
│  │  └─ YES → key_points → 提取标记项 + 与 topic_map 交叉验证
│  │
│  ├─ [2.3] 往年试题?
│  │  ├─ Q&A交替结构?题号+分值?含"简答题""论述题""名词解释"?
│  │  └─ YES → past_exams → 题型分类+年份标注+分值→考点频次统计
│  │
│  ├─ [2.4] 案例材料?(增强)
│  │  ├─ 含"原告""被告""法院认为""判决如下"?含案号?
│  │  ├─ YES → case_materials → 六段式结构化提取:
│  │  │  ① 案情事实  ② 当事人诉求/辩护  ③ 争议焦点归纳
│  │  │  ④ 裁判结果  ⑤ 关键论证  ⑥ 确立原则/后续影响
│  │  │
│  │  └─ 案例归属判断(关键):
│  │     ├─ 案例在笔记/课件某个章节内被引用?→ 嵌入该章节
│  │     ├─ 案例是单独文件?
│  │     │   ├─ 仅涉及单一章节 → 嵌入对应章节
│  │     │   ├─ 涉及多章节,但后文章节非核心 → 嵌入主要涉及章节
│  │     │   └─ 涉及多章节,且后文章节为核心 → 放笔记最后(综合性案例)
│  │     │      判断标准:案例在笔记/课件中是章节内引用 vs 独立综合案例文件
│  │     └─ 案例后附Q&A?→ 逐题解答分析(案情仍六段式提供)
│  │
│  ├─ [2.5] 教材还是笔记?
│  │  ├─ 教材特征:层级标题规整、含"学习目标""课后习题""本章小结"
│  │  ├─ 笔记特征:非正式编号、含"老师""上课""PPT""→""ps:"
│  │  └─ 按 [0.7] 用户确认的优先级标记 primary/secondary
│  │
│  ├─ [2.6] 术语表/名词解释?
│  │  └─ YES → glossary → 术语-定义对拆分,按语言模式标注
│  │
│  ├─ [2.7] 学术论文/阅读材料?
│  │  └─ YES → reading_materials → 提取摘要+论点
│  │     └─ 注意:论文和阅读材料不区分,统一归入文献
│  │
│  └─ [2.8] 都不是 → 默认 lecture_notes
│
├─ PHASE 3: 课程归属 + 质量评估 + 去重
│  │
│  ├─ [3.1] 课程命名(用户主导,关键词辅助)
│  │  ├─ 先问:"这些资料是关于哪门课/哪个考试的?"
│  │  ├─ 同时跑关键词轻量扫描 → "💡 看起来跟XX相关。是这个课吗?"
│  │  └─ 用户一句话决定 → 写入 course 字段
│  │
│  ├─ [3.2] 内容质量评估
│  │  ├─ 完整性:缺章节/缺上下文/缺附件 → 标记
│  │  ├─ 格式一致性:编号跳跃/表格残缺 → 标记
│  │  └─ 可信度:教材/课件=高, 个人笔记=中, 来源不明=低
│  │
│  └─ [3.3] 去重
│     ├─ 文件名相似度 > 85% + 文件大小相同 + 前800字相似 > 90%
│     └─ ≥2 项命中 → 重复,建议跳过
│
├─ PHASE 4: 项目目录结构创建
│  │
│  │  按用户命名的课程动态生成。法条嵌入章节,案例仅综合性独立案例单独列。
│  │
│  └─ 目录结构:
│     ```
│     复习资料/
│     └── {课程名}/
│         ├── 笔记/                   ← 各章节整合后的笔记
│         ├── 重点与考纲/             ← key_points + syllabus
│         ├── 试题/                   ← past_exams
│         ├── 案例/                   ← 仅综合性独立案例时创建
│         ├── 术语/                   ← glossary(如果有)
│         ├── 文献/                   ← 论文/阅读材料
│         ├── review/                 ← Phase 7 生成
│         │   ├── section_01.md
│         │   ├── ...
│         │   └── 复习材料_终稿.pdf
│         ├── _原始文件/              ← 原始文件只读保留
│         └── {课程}概述.md           ← MOC 索引
│     ```
│
├─ PHASE 5: 输出生成 + 进入复习判断
│  │
│  ├─ [5.1] 用户选择输出格式
│  │  ├─ PDF(默认,推荐打印装订)
│  │  ├─ MD / HTML / DOCX / ALL
│  │  └─ 用户未选 → 默认 PDF
│  │
│  ├─ [5.2] 上下文窗口分段
│  │  ├─ 单文件 token < 80% → 直接处理
│  │  └─ 单文件 token ≥ 80% → 按章节边界拆分 → 分段处理 → 合并
│  │
│  ├─ [5.3] 格式生成器(MD/HTML/PDF/DOCX)
│  │
│  └─ [5.4] 是否进入复习生成?
│     ├─ 含 syllabus / key_points / past_exams → "检测到备考材料,建议立即生成复习资料"
│     │   └─ 默认 YES → Phase 7
│     └─ 仅有 notes / textbook → "导入完成。是否需要生成复习资料?"
│         ├─ YES → Phase 7
│         └─ NO → 完成,输出导入摘要
│
├─ PHASE 7: 复习资料生成
│  │
│  │  设计原则:按章节逐个处理。每个章节先析出所有源材料内容,
│  │  再按优先级整合,产结构化内容,终检后进入下一章。
│  │
│  ├─ [7.1] 源材料盘点
│  │  ├─ 按资料类型分组展示 + 覆盖评估 + 缺源标记
│  │  ├─ 用户确认考试范围:哪些章不考?有额外考点?
│  │  └─ 为每份源材料生成来源索引(文件名 + 可定位的页/段/节),写入该章 source_index,供 Chapter Agent 引用。
│  │
│  ├─ [7.2] 建立考点映射(topic_map)
│  │  ├─ syllabus → 考点+权重(【必考】【★重点】【了解】)
│  │  ├─ key_points → 补充重点标记
│  │  ├─ past_exams → 高频考点+题型分布
│  │  ├─ 无 syllabus 降级:从笔记 H1/H2 自动生成
│  │  └─ topic_map 表格给用户确认调整【确认点②】
│  │
│  ├─ [7.3] 多 Agent 并行生成(核心)
│  │  │
│  │  │  原则:单 agent 上下文窗口有限 → 每章一个独立 sub-agent 并行启动。
│  │  │  每个 agent 独享上下文窗口,全量源材料,不跨章挤占 token。
│  │  │
│  │  │  Agent 数量 = Phase 2/3 确认的章节数(动态,非硬编码)。
│  │  │  **并发上限 8 个**(保证生成质量)。超过 8 章 → 分批:
│  │  │  Batch 1 前 8 章 → 全部完成 → Batch 2 剩余章节。
│  │  │
│  │  ├─ [7.3a-prep] 源材料 100% 提取 + 验证(硬阻塞,不可跳过)⚠️
│  │  │
│  │  │  此步骤是对源材料的**纯分发**,不做任何整合、摘要、过滤。
│  │  │  分发 = 把该章节在每个源文件中的对应内容**原样**打包给 Agent。
│  │  │  不达 100% → 阻塞 → 回退重做提取。不可以降低标准继续。
│  │  │
│  │  │  对每个章节,主 agent 必须逐项执行并输出验证结果:
│  │  │
│  │  │  验证项 1:英文笔记 — 该章节全部段落已提取?
│  │  │    检查:英文笔记中该章段落总数 = {N} | 已提取 = {M}
│  │  │    {M} = {N}? → ✅ 继续 | ❌ BLOCKED → 回退重新提取英文笔记
│  │  │
│  │  │  验证项 2:中文笔记/教材 — 该章节全部段落已提取?
│  │  │    检查:中文笔记中该章段落总数 = {N} | 已提取 = {M}
│  │  │    {M} = {N}? → ✅ 继续 | ❌ BLOCKED → 回退重新提取中文笔记
│  │  │
│  │  │  验证项 3:每个 PPT/PDF — 逐页文本已全部提取?
│  │  │    检查:PPT 总页数 = {N} | 已逐页提取 = {M}
│  │  │    检查:PDF 总页数 = {N} | 已逐页提取/全文提取 = {M}
│  │  │    {M} = {N} 且每页有内容? → ✅ | ❌ BLOCKED → 回退重新逐页提取
│  │  │
│  │  │  验证项 4:每个阅读材料/论文 — 全文或关键段落已提取?
│  │  │    检查:材料总数 = {N} | 已提取 = {M}
│  │  │    {M} = {N}? → ✅ | ❌ BLOCKED → 回退重新提取
│  │  │
│  │  │  验证项 5:每个案例 — 六段式完整结构化?
│  │  │    检查:案例总数 = {N} | 已六段式完整结构化 = {M}
│  │  │    每个案例的六段中是否有空段? → 有空段 ❌ BLOCKED
│  │  │    {M} = {N} 且全部完整? → ✅ | ❌ BLOCKED
│  │  │
│  │  │  全部 5 项验证通过 → 进入 [7.3b] 启动 Agent
│  │  │  任一项 BLOCKED → 输出阻塞报告 → 回到对应源文件重新提取 → 再次验证
│  │  │  禁止在 BLOCKED 状态下启动 Agent。禁止"先启动再说后面补"。
│  │  │
│  │  ├─ [7.3b] 启动:全部 Chapter Agent 并行执行
│  │  │  │
│  │  │  │  使用 Agent 工具同时启动 N 个 sub-agent(N ≤ 8):
│  │  │  │
│  │  │  │  Agent_Ch1 → 生成 section_01.md(≥ 密度要求)
│  │  │  │  Agent_Ch2 → 生成 section_02.md
│  │  │  │  ...
│  │  │  │  Agent_ChN → 生成 section_NN.md
│  │  │  │
│  │  │  │  每个 Agent 使用以下标准指令模板:
│  │  │  │
│  │  │  ├─ [7.3c] Chapter Agent 标准指令模板
│  │  │  │
│  │  │  │  每个 Chapter Agent 收到完全相同的指令结构,仅源材料不同:
│  │  │  │
│  │  │  │  ┌──────────────────────────────────────────────────────┐
│  │  │  │  │  你是期末复习材料撰写专家。你的任务是独立完成        │
│  │  │  │  │  **第X章:[章节名]** 的期末复习稿。                  │
│  │  │  │  │  你有独立的上下文窗口,不需要考虑其他章节。         │
│  │  │  │  │                                                      │
│  │  │  │  │  ## 源材料(全量)                                   │
│  │  │  │  │  [粘贴该章节全部源材料]                              │
│  │  │  │  │                                                      │
│  │  │  │  │  ## 内容规则                                         │
### 必须保留(精简版)                                │
│  │  │  │  │  - 概念的定义、构成要件、法律后果——每考点1-3段      │
│  │  │  │  │  - 核心论证逻辑(一句话点明,不堆砌背景)            │
│  │  │  │  │  - 比较法差异——用对比表格呈现,不逐国叙述          │
│  │  │  │  │  - 学术争议——双方各1句核心论点,不铺陈论据链       │
│  │  │  │  │  - 老师明确强调的观点/立场                           │
│  │  │  │  │  - 核心标准要素——用表格/清单列出+简短说明          │
│  │  │  │  │  - 案例——每个1-2段(不必六段式,除非极重要)       │
│  │  │  │  │  - 往年真题关联——标注哪些考点考过                  │
### 必须删除                                            │
│  │  │  │  │  - 长法条原文 -> 仅保留"构成要件+法律效果"          │
│  │  │  │  │  - 同一观点反复表述 -> 保留最精炼版本                │
│  │  │  │  │  - 冗余过渡句("首先""如上所述"等)                │
│  │  │  │  │  - 背景知识拓展、课堂逸事、个人经历                │
│  │  │  │  │  - 每个考点前面的长篇引言                           │
│  │  │  │  │  - 大段论文原文引用 -> 改为1-2句概括核心结论        │
## 输出规范                                             │
│  │  │  │  │                                                      │
│  │  │  │  │  1. 四段式结构:定义->构成要件->法律后果->评价       │
│  │  │  │  │  2. 表格格式——使用干净管道表格,:---:对齐:         │
│  │  │  │  │     | 概念 | 构成要件 | 法律效果 |                    │
│  │  │  │  │     |:----|:--------|:--------|                       │
│  │  │  │  │     | XX  | A+B+C   | YY      |                       │
│  │  │  │  │  3. 对比/分类表>=1个,替代流程图/层级图              │
│  │  │  │  │  4. 案例1段话:案名->要点->结论(极重要用2段)      │
│  │  │  │  │  5. 语言模式:按 session 中 language_mode 执行      │
│  │  │  │  │  6. 末尾 ## 考点速记,2列(考点|考查方式),<=15行   │
│  │  │  │  │  7. 禁止废话(综上所述/由此可见等)                   │
│  │  │  │  │  8. 禁止每个考点前加序号(一、二、三)               │
│  │  │  │  │  9. 末尾必须输出 ## 本章源索引 表格:                │
│  │  │  │  │     | 源编号 | 源文件 | 位置 | 本章使用要点 |        │
│  │  │  │  │     |:------|:------|:----|:------------|            │
│  │  │  │  │     | 源1   | 《笔记》 | 第X章第Y段 | 概念定义 |      │
│  │  │  │  │                                                      │
│  │  │  │  │  ### 反幻觉与来源引用规则(不可违反)               │
│  │  │  │  │  1. 源材料边界:所有定义、构成要件/要素、法律后果、   │
│  │  │  │  │     测试标准、案例结论、数据、引用句必须直接来自本    │
│  │  │  │  │     Chapter Agent 收到的源材料。禁止引入未提供的     │
│  │  │  │  │     背景知识。                                       │
│  │  │  │  │  2. 强制标注:凡出现关键信息,必须紧跟来源标注:      │
│  │  │  │  │     • 概念定义、构成要件、核心公式、测试标准          │
│  │  │  │  │     • 案例名称/要点/结论                             │
│  │  │  │  │     • 老师明确强调的观点                             │
│  │  │  │  │     • 数值、年份、比例、阈值                         │
│  │  │  │  │     格式:`(来源:《文件名》第X页/第X段)`;无页码   │
│  │  │  │  │     时用最近层级标题:`(来源:《文件名》·第X章/第X节)`│
│  │  │  │  │     图片/扫描件/PPT截图:`(来源:图片《文件名》)`   │
│  │  │  │  │  3. 信息不足:源材料缺失或仅一笔带过,不得编造,      │
│  │  │  │  │     应标注 `【源材料未涉及 / 待核实】` 并跳过细节。   │
│  │  │  │  │  4. 冲突处理:不同源材料表述冲突时,列出各方表述并    │
│  │  │  │  │     分别标注来源,不可自行调和为单一答案。           │
│  │  │  │  │  5. 禁止措辞:禁用"一般来说"、"普遍认为"、"众所周    │
│  │  │  │  │     知"等无来源支持的概括。                          │
│  │  │  │  │  6. 视觉材料:由模型视觉读取的图片/扫描件/PPT截图,   │
│  │  │  │  │     只描述可见内容,不推断未明确出现的文字或数字。   │
│  │  │  │  │  7. 不伪造页码:无法定位具体位置时,只标注到文件    │
│  │  │  │  │     层级即可。                                       │
## 总量约束(按 session 中 review_density,硬性)        │
│  │  │  │  │  当前选择:`{review_density}`。全稿总字数必须落在对应区间,单章定额按本章权重执行。│
│  │  │  │  │                                                      │
│  │  │  │  │  **精简版(3–4万字)**                               │
│  │  │  │  │  | 权重 | 中文字目标 | 约合行数 |                   │
│  │  │  │  │  |------|:----------:|:--------:|                   │
│  │  │  │  │  | 必考 | 7000–9000  | 230–300 |                   │
│  │  │  │  │  | 重点 | 4500–6500  | 150–220 |                   │
│  │  │  │  │  | 了解 | 1500–2500  | 50–80   |                   │
│  │  │  │  │                                                      │
│  │  │  │  │  **标准版(6–8万字)**                               │
│  │  │  │  │  | 权重 | 中文字目标 | 约合行数 |                   │
│  │  │  │  │  |------|:----------:|:--------:|                   │
│  │  │  │  │  | 必考 | 13000–17000 | 430–560 |                  │
│  │  │  │  │  | 重点 | 9000–13000  | 300–430 |                  │
│  │  │  │  │  | 了解 | 3500–5500   | 120–180 |                  │
│  │  │  │  │                                                      │
│  │  │  │  │  **详细版(10–12万字)**                             │
│  │  │  │  │  | 权重 | 中文字目标 | 约合行数 |                   │
│  │  │  │  │  |------|:----------:|:--------:|                   │
│  │  │  │  │  | 必考 | 22000–28000 | 730–930 |                  │
│  │  │  │  │  | 重点 | 15000–20000 | 500–660 |                  │
│  │  │  │  │  | 了解 | 6000–9000   | 200–300 |                  │
│  │  │  │  │                                                      │
│  │  │  │  │  超出定额意味其他章被压缩;不足则必须补充源材料细节,禁止灌水。│
│  │  │  │  │  生成后对照源材料逐条核实:该章涉及的核心概念/        │
│  │  │  │  │  测试/要件是否全部出现在复习稿中?                    │
│  │  │  │  │  如有遗漏 → 补充后再输出。                           │
│  │  │  │  └──────────────────────────────────────────────────────┘
│  │  │
│  │  └─ [7.3d] 分批策略
│  │     │
│  │     │  章节数 N ≤ 8 → 全部 Agent 在同一轮并行启动
│  │     │  章节数 N > 8 → 分批:
│  │     │    Batch 1: 前 8 章并行 → 全部完成
│  │     │    Batch 2: 剩余章节并行
│  │     │    Merge Agent 合并所有批次输出
│  │     │
│  │     └─ 主 agent 等待全部 Agent 完成 → 收集所有 section 文件
│  │
│  └─ [7.4] Merge + Quality Review
│     │
│     ├─ [7.4a] Merge Agent
│     │  ├─ 输入:所有已完成 section_NN.md
│     │  ├─ 合并为 `{课程}/review/复习材料_终稿.md`
│     │  ├─ 添加总目录(含各章链接)
│     │  ├─ 添加尾页:考点覆盖统计 + 源材料完整清单 + 全局 ## 源材料索引 表格
│     │
│     └─ [7.4b] Review Agent(独立 sub-agent,fresh eyes)
│        ├─ 总字数落在所选 density tier:精简版 3–4万 / 标准版 6–8万 / 详细版 10–12万
│        ├─ 每章密度达标(按 tier 下界核查):
│        │    精简版:必考 ≥7000 / 重点 ≥4500 / 了解 ≥1500
│        │    标准版:必考 ≥13000 / 重点 ≥9000 / 了解 ≥3500
│        │    详细版:必考 ≥22000 / 重点 ≥15000 / 了解 ≥6000
│        ├─ 课程知识点清单 100% 通过——逐章核对源材料中的核心概念/测试/要件
│        ├─ 每章 ≥ 2 个结构化图表
│        ├─ 每章末尾有考点速记表格
│        ├─ 每章末尾有 ## 本章源索引 表格
│        ├─ 交叉验证:各章之间的引用一致性
│        ├─ 源引用审计:每章所有定义、要件、结论性陈述均含来源标注;随机抽查 5 处,验证标注文件真实存在且 claim 未夸大源材料
│        ├─ 无 AI 幻觉:抽查 5 处关键判断 vs 源材料原文
│        └─ 不通过 → 标注问题章节与具体违规项 → 回到 [7.3b] 单独重做该章
│
│  [7.5] 输出:PDF 三引擎降级链(Phase 7 完成的必要条件)
│     │
│     ├─ [7.5a] 格式生成
│     │  ├─ 默认 PDF——不可降级,不可跳过
│     │  │  └─ `python tools/output_writer.py --input review/ --format pdf`
│     │  ├─ 同步生成 MD(保留单章文件用于后续修改)
│     │  └─ PDF 生成失败? → 不是"降级到 MD 了事"
│     │     └─ 诊断原因 → 修复 → 重试
│     │     └─ 3 次重试仍失败 → 阻塞 + 报告错误详情给用户
│     │
│     └─ [7.5b] 完成条件(全部满足才算 Phase 7 完成)
│        ├─ ✅ PDF 文件存在且可打开
│        ├─ ✅ 全稿行数达标(精简版 ≥ 9000 行 / 标准版 ≥ 18000 行 / 详细版 ≥ 28000 行)
│        ├─ ✅ 全稿总字数落在所选 density tier 区间
│        ├─ ✅ 每章密度达标(按 tier 下界)
│        ├─ ✅ 每章包含 ## 本章源索引
│        ├─ ✅ Review Agent 全部检查项通过
│        └─ 任一 ❌ → 不视为完成 → 回到对应步骤重做
│
│  [EXIT GATE] Phase 7 完成验证(任何情况下不可跳过)⚠️
│     │
│     │  在向用户报告"Phase 7 完成"之前,必须逐项验证:
│     │
│     ├─ □ section 文件数:topic_map 章节数={N} | review/ 中 section_*.md={M}
│     │     {M}={N}? → ✅ | ❌ 缺失章节 → 回 [7.3b] 重做缺失章
│     │
│     ├─ □ PDF 存在:复习材料_终稿.pdf 存在且 > 0 字节? → ✅ | ❌ → 回 [7.5a]
│     │
│     ├─ □ 密度:全稿落在所选 tier(精简版 3–4万 / 标准版 6–8万 / 详细版 10–12万)?
│     │     必考章达到 tier 下界? 重点章达到 tier 下界? 了解章达到 tier 下界?
│     │     (精简版:必考≥7000 重点≥4500 了解≥1500)
│     │     (标准版:必考≥13000 重点≥9000 了解≥3500)
│     │     (详细版:必考≥22000 重点≥15000 了解≥6000)
│     │     全部达标 → ✅ | 任一不达标 → 标注不足章 → 回 [7.3b] 重做
│     │
│     ├─ □ 源索引:每章均包含 ## 本章源索引 表格且非空?
│     │     全部达标 → ✅ | 任一不达标 → 回到 [7.3b] 重做该章
│     │
│     ├─ □ Review Agent:[7.4b] 已执行且全部 ✅? → ✅ | ❌ → 先执行 [7.4b]
│     │
│     └─ 全部 ✅ → 允许报告"Phase 7 完成" | 任一 ❌ → 禁止报告 → 回对应步骤
│
└─ ERROR PATHS(降级不崩溃)
   ├─ Phase 0 路径不存在 → 重输
   ├─ Phase 1 格式不支持 → 标记"需手动处理"
   ├─ Phase 1 OCR 引擎未安装 → pip install → 重试
   ├─ Phase 1 Python版本不兼容 → 降级下一引擎 → 重试
   ├─ Phase 1 图片质量差 → 增强预处理 → 重试
   ├─ Phase 1 OCR 全链路失败 → 标记 [OCR失败] + 保留原文件 + 占位符
   ├─ Phase 1 大文件无法分段 → 截取前60%
   ├─ Phase 2 类型无法确定 → 默认 lecture_notes
   ├─ Phase 3 课程不明 → "待分类"
   ├─ Phase 4 目录创建失败 → 检查权限
   ├─ Phase 5 格式生成失败 → 降级到 MD
   ├─ Phase 7 无考纲 → 从笔记标题自动生成 topic_map
   ├─ Phase 7 源材料不足 → 仅生成已有章节 + 标记 [缺源]
   ├─ Phase 7 全稿过短 → 不灌水,标记"建议补充源材料"
   └─ 全局:单文件失败 → 跳过 + 继续其余 + 汇总报告列出全部失败项

独立调用 Phase 7(已有资料,直接生成复习)

如果用户已有整理好的课程目录(不管是之前导入的还是手动整理的):

用户:"帮我生成国际经济学复习资料" / "期末了,帮我整理XX课"

Claude:
  1. 扫描 {课程} 目录下所有 .md 文件
  2. 识别 syllabus(含"考纲/大纲")→ topic_map 骨架
  3. 识别 key_points(含【★重点】)→ 权重补充
  4. 识别 past_exams → 频次统计
  5. 无 syllabus → 从笔记 H1/H2 自动生成 topic_map
  6. 进入 Phase 7.3 → 逐章生成复习稿 + 考点速记

安全原则

  1. 只读原始文件:绝不移动/删除/修改。导入 = 复制+转换。
  2. 新增不覆盖:同名文件自动加 _2 _3 后缀。
  3. 来源可追溯:每个输出文件记录原始路径。
  4. 失败安全:单文件失败不中断整体流程。
  5. 确认门禁:Phase 0 文件选择 + Phase 7 topic_map 两次确认。
  6. OCR 本地处理:不上传图片到任何云端服务。

依赖

# Tier 1: 文档提取
pip install python-docx PyPDF2 python-pptx markdownify ebooklib chardet

# Tier 2: OCR(至少一个)
pip install easyocr       # 推荐:GPU加速,中文~92%,MIT许可
# 或 pip install pytesseract  # 轻量:需系统安装 Tesseract 引擎
# 或 pip install paddleocr    # 中文最强~96%,安装最重

# Tier 2: PDF 输出 (三引擎自动降级)
pip install fpdf2         # 纯Python零依赖PDF — 全平台永久保证 (核心)
pip install weasyprint    # 更佳排版 — 可选 (Windows需GTK3)

开源分发清单

final-review/
├── SKILL.md                    # 唯一源文件 — 完整工作流
├── README.md
├── LICENSE                     # MIT
├── requirements.txt
├── install.py                  # 多 agent 一键安装
├── setup.py                    # 环境检测引导
├── agents.json                 # agent 路径映射
├── agents/
│   └── codex-plugin.json
├── tools/
│   ├── file_finder.py
│   ├── ocr_tool.py
│   ├── format_converter.py
│   ├── classifier.py
│   ├── chunk_manager.py
│   └── output_writer.py
├── config/
│   ├── material_types.json     # 8 种资料类型 + 双语标注规则
│   ├── subject_keywords.json
│   └── platform_paths.json
├── templates/
│   └── html_template.html
└── examples/
    └── demo_usage.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.