Jutiku_Quiz_Expert
出题专家 (Quiz Expert)
本技能将引导你完成从源文档生成专业题库的全过程。
路径约定
在开始执行任务前,先确定关键路径:
- $WORK_DIR:当前工作目录。执行
pwd(Linux/macOS) 或Get-Location(Windows) 获取,作为所有相对路径的基准。 - $SKILL_DIR:本 skill 所在目录。根据 skill 名称
Jutiku_Quiz_Expert定位:- Windows:
Get-ChildItem -Path . -Filter "SKILL.md" -Recurse | Where-Object { $_.FullName -like "*skills\Jutiku_Quiz_Expert*" } - macOS/Linux:
find . -ipath "*/skills/Jutiku_Quiz_Expert/SKILL.md" - 获取到 SKILL.md 文件路径后,取其所在目录作为 $SKILL_DIR
- Windows:
- 源文件目录:
$WORK_DIR/(用户上传的文件直接放在工作目录根部) - 转换文件目录:
$WORK_DIR/source/(存放 markitdown 转换后的 .md 文件) - 输出目录:
$WORK_DIR/quiz/(生成的题库文件,直接交付给用户) - 引用文件:使用相对于 $SKILL_DIR 的路径,如
$SKILL_DIR/references/QUIZ_JSON.md
路径结构示意:
$WORK_DIR/ # 当前工作目录
├── 2023年度报告.pdf # 用户源文件
├── source/ # 转换后的 markdown 文件
│ └── 2023年度报告.md
├── quiz/ # 输出目录(直接交付)
│ └── 2024-01-29_100000.json # 或 .md(根据用户指定)
└── temp/ # 存放其他临时处理文件
$SKILL_DIR/ # skill 所在目录
├── SKILL.md # skill 文件,即本文件
└── references/
├── QUIZ_JSON.md
└── QUIZ_MARKDOWN.md
工作流程 (Workflow)
0. 初始化路径
-
确定工作目录:
- Linux/macOS: 执行
pwd获取当前工作目录,设为$WORK_DIR - Windows: 执行
Get-Location或cd获取当前工作目录
- Linux/macOS: 执行
-
定位 skill 目录:
- Linux/macOS:
SKILL_PATH=$(find . -ipath "*/skills/Jutiku_Quiz_Expert/SKILL.md" 2>/dev/null | head -1) SKILL_DIR=$(dirname "$SKILL_PATH") - Windows PowerShell:
$skillFile = Get-ChildItem -Path . -Filter "SKILL.md" -Recurse | Where-Object { $_.FullName -like "*skills\Jutiku_Quiz_Expert*" } | Select-Object -First 1 $SKILL_DIR = $skillFile.DirectoryName
- Linux/macOS:
-
创建必要的子目录:
- Linux/macOS:
mkdir -p "$WORK_DIR/source" "$WORK_DIR/quiz" - Windows:
New-Item -ItemType Directory -Force -Path "$WORK_DIR\source", "$WORK_DIR\quiz"
- Linux/macOS:
1. 文件定位与准备
-
定位源文件:在
$WORK_DIR/根目录下查找用户指定的文件。- 使用
ls $WORK_DIR/列出可用文件。 - 如果用户提供的是模糊名称,查找最匹配的文件。
- 使用
-
格式转换:
- 如果文件不是
.md格式(例如 .doc, .docx, .pdf):- 环境检查:检查是否已安装
python(或python3) 和pip。- 如果未安装 Python:
- 主动询问安装:向用户说明缺少 Python 环境无法转换文件,询问:“是否允许我为您尝试自动安装 Python?”
- 若用户同意:
- Windows: 尝试运行
winget install -e --id Python.Python.3(需管理员权限)。 - macOS: 尝试运行
brew install python(需已安装 Homebrew)。 - Linux: 尝试运行
sudo apt update && sudo apt install -y python3 python3-pip。
- Windows: 尝试运行
- 若用户拒绝或自动安装失败:
- 暂停任务。
- 输出手动安装指南,建议用户访问 python.org 或使用系统包管理器安装,完成后再次触发。
- 如果未安装 Python:
- 工具检查与安装:
- 运行
markitdown --version检查是否已安装。 - 如果未安装:
- Linux:
pip install markitdown --break-system-packages - macOS/Windows:
pip install markitdown
- Linux:
- 运行
- 转换:
- 使用
markitdown命令行工具将文件转换为 Markdown 格式。 - 命令格式:
- Linux/macOS:
markitdown "$WORK_DIR/{源文件名}" > "$WORK_DIR/source/{同文件名}.md" - Windows:
markitdown "$WORK_DIR\{源文件名}" > "$WORK_DIR\source\{同文件名}.md"
- Linux/macOS:
- 注意:使用双引号包裹文件名以处理空格。
- 使用
- 环境检查:检查是否已安装
- 如果已经是
.md文件,复制到$WORK_DIR/source/{文件名}.md进行处理。
- 如果文件不是
2. 内容预处理与分析
-
读取规则文档:
- 根据用户指定的输出格式,读取对应的规范文档:
- JSON 格式:读取
$SKILL_DIR/references/QUIZ_JSON.md了解 JSON Schema 规范 - Markdown 格式:读取
$SKILL_DIR/references/QUIZ_MARKDOWN.md了解 Markdown 模板规范
- JSON 格式:读取
- 根据用户指定的输出格式,读取对应的规范文档:
-
读取与分块检查:
- 读取
$WORK_DIR/source/中转换后的.md文件内容。 - 智能分块 (Smart Chunking):检查文本长度。
- 如果 字符数 > 15,000:
- 切分策略:按 Markdown 二级标题 (
##) 或三级标题 (###) 将文档切分为多个逻辑块 (Chunks)。确保切分点不破坏段落完整性。 - 配额分配:根据各块的篇幅比例或重要性,分配题目生成数量(如总共 20 题,A 章节占 20% 篇幅,则分配 4 题)。
- 执行模式:标记为
Batch_Mode,后续将对每个块独立生成,最终统一进入质量优化阶段进行合并去重。
- 切分策略:按 Markdown 二级标题 (
- 否则:保持单一大文本,标记为
Single_Mode。
- 如果 字符数 > 15,000:
- 读取
-
属性打分:分析文本结构和内容(若是分块模式,取前 30% 内容或摘要进行分析),判断其类型(分值 0.0 - 1.0):
- 大纲型 (Outline-oriented):具有结构化的标题、要点、简短摘要。
- 知识/资料型 (Knowledge/Data-oriented):密集的段落、详细的解释、事实、数据。
-
策略选择:
- 如果 大纲型得分 > 0.7:使用 大纲扩展模式。
- 提取大纲结构。
- 针对每个关键点/标题,生成涵盖核心概念的题目。
- 如果 知识型得分 > 0.7:使用 全覆盖模式。
- 分析全文内容(或逐个处理块)。
- 生成覆盖整个内容范围的题目,确保没有遗漏重要信息。
- 否则:使用平衡方法。
- 如果 大纲型得分 > 0.7:使用 大纲扩展模式。
3. 题目生成规则
根据选定的策略和输出格式生成题目,严格遵守对应规范文档中定义的生成规则与约束。
主要约束包括:
- 题型:单选、多选、判断、填空、简答。
- 判断题:选项固定为"A. 正确"和"B. 错误"。
- 难度:按 3:5:2 比例分布简单、中等、困难题目。
- 结构:确保所有必填字段完整(qid, type, explanation 等)。
4. 质量验证与优化 (Quality Assurance & Optimization)
在生成题目之后(特别是 Batch_Mode 下合并所有分块题目后),执行以下优化流程:
-
全局去重 (Global Deduplication):
- 语义比对:检查所有生成的题目。如果两道题考察相同的知识点且问法高度相似,保留描述更清晰或难度更符合当前分布要求的一道。
- 覆盖率检查:确认合并后的题库是否覆盖了文档的所有关键章节。如果某章节题目被大量去重导致缺失,需针对该章节补充生成。
-
分布再平衡 (Distribution Rebalancing):
- 统计当前题库的难度比例。如果偏离 3:5:2 严重,优先删除过多的难度层级题目,或尝试修改题目难度。
- 统计题型分布。确保符合用户期望(如有)。
-
准确性核查 (Fact Check):
- 针对每一道题,回溯原文。
- 验证:正确答案是否能从原文中找到明确依据?
- 修正:如果发现幻觉或推断过度,根据原文修正答案或删除该题。
-
逻辑性核查 (Logic Check):
- 检查选项:是否存在歧义?干扰项是否过于明显错误?
- 检查解析:
explanation是否清晰解释了为什么选 A 而不选 B?
-
格式核查 (Format Check):
- 验证输出结构是否符合对应的 Schema 或模板规范。
- 确保所有必需字段 (
qid,lev,point等) 均已填充且类型正确。
5. 输出与交付
根据用户指定的格式(默认 JSON)在 $WORK_DIR/quiz/ 目录下生成文件。
JSON 格式(默认)
- 路径:
$WORK_DIR/quiz/{YYYY-MM-DD_HHMMSS}.json - 格式:遵循严格的 JSON 语法。
- Schema:参见
$SKILL_DIR/references/QUIZ_JSON.md
Markdown 格式(可选)
- 路径:
$WORK_DIR/quiz/{YYYY-MM-DD_HHMMSS}.md - 格式:用户友好的可读格式。
- 模板:参见
$SKILL_DIR/references/QUIZ_MARKDOWN.md
交付方式
文件保存到 $WORK_DIR/quiz/ 后,用户可直接前往查看。
6. 响应模板 (Response Template)
任务成功完成后,请参照以下模板格式向用户汇报结果:
已根据文件 {源文件名} 的内容生成了 {题目数量} 道题目。
{处理说明}(例如:由于源文件为二进制 .doc 格式,已通过智能提取算法获取关键文本信息,并据此生成了包含{题型列表}的完整试卷。)
生成文件信息:
- 文件路径:
{输出文件绝对路径} - 题目数量:
{题目数量}道 - 包含内容:
- {内容概览点1}(例如:常识判断、核心概念等)
- {内容概览点2}
- {内容概览点3}
- 最多列出10个
您可以直接使用该 {文件格式} 文件,或告知如果需要 Markdown 可读格式。
工具与命令
- 使用
pwd/Get-Location获取路径。 - 使用
view/ls/dir查看目录或文件。 - 使用
bash_tool或 PowerShell 执行命令。 - 使用
create_file保存最终输出文件。
用户请求示例
示例 1:默认 JSON 格式
"根据
2023年度报告.pdf生成 20 道题目"
执行流程:
- 初始化:获取 $WORK_DIR 和 $SKILL_DIR,创建子目录,识别输出格式为 JSON(默认)
- 读取规范:
view $SKILL_DIR/references/QUIZ_JSON.md - 查找:在
$WORK_DIR/找到2023年度报告.pdf - 转换:
markitdown "$WORK_DIR/2023年度报告.pdf" > "$WORK_DIR/source/2023年度报告.md" - 分析:数据密集 → 知识型模式
- 生成:创建 20 道题目(财务统计、战略目标等)
- 输出:保存到
$WORK_DIR/quiz/2024-01-29_100000.json - 响应:按照响应模板向用户汇报结果
响应示例:
已根据文件 2023年度报告.pdf 的内容生成了 20 道题目。
由于源文件为 PDF 格式,已通过 markitdown 工具提取文本内容,并据此生成了包含单选题、多选题、判断题的完整试卷。
生成文件信息:
- 文件路径:
$WORK_DIR/quiz/2024-01-29_100000.json - 题目数量:20 道
- 包含内容:
- 财务数据分析(营收、利润、增长率等)
- 战略目标与业务规划
- 风险管理与合规要求
您可以直接使用该 JSON 文件,或告知如果需要 Markdown 可读格式。
示例 2:指定 Markdown 格式
"根据
Python入门.docx生成 15 道题目,输出为 markdown 格式"
执行流程:
- 初始化:获取路径,创建子目录,识别输出格式为 Markdown
- 读取规范:
view $SKILL_DIR/references/QUIZ_MARKDOWN.md - 查找与转换:处理
Python入门.docx - 分析:大纲结构 → 大纲扩展模式
- 生成:创建 15 道题目
- 输出:保存到
$WORK_DIR/quiz/2024-01-29_100000.md - 响应:按照响应模板向用户汇报结果
响应示例:
已根据文件 Python入门.docx 的内容生成了 15 道题目。
源文件采用大纲式结构,已针对各章节关键知识点生成了包含单选题、填空题、简答题的试卷。
生成文件信息:
- 文件路径:
$WORK_DIR/quiz/2024-01-29_100000.md - 题目数量:15 道
- 包含内容:
- 基础语法(变量、数据类型、运算符)
- 控制流程(条件判断、循环结构)
- 函数与模块(定义、调用、导入)
您可以直接使用该 Markdown 文件,或告知如果需要 JSON 结构化格式。