tizhuang-local-bank
老师的本地题库(Obsidian 兼容,不需要账号或插件):把 PDF 试卷还原成可编辑题目入库、下载题庄知识树并给题目分类、按教材/章节/考点/标签检索、核对后组卷并生成无答案 Word/打印稿与教师答案稿。用于“本地题库、Obsidian 题库、PDF 试卷入库、题目分类、找题、组卷、出 Word 试卷、导出题目包”。仅供教师备课打印,不做学生端。在线取题属于可选的旧 question-ban
SKILL.mdskills/tizhuang-local-bank/SKILL.md
GitHub题庄 · 我的本地题库(教师版)
教师自用的本地工具:Markdown 是唯一真源,SQLite 只是可重建索引。Obsidian 与插件都是可选的。不创建学生账号、在线作答或作业。
先做这三件事(每次会话开头)
- 定位工具:以本 SKILL.md 所在目录的
scripts/local_bank.py为<cli>,用独立虚拟环境的 Python 为<python>(Python 3.10+;优先读.tizhuang-install.json里的runtime.python)。不要写死开发者的机器路径,不要把依赖装进别的 skill 环境。 - 定位题库:只用老师指定的目录;没有就建议在当前工作区新建
题庄本地题库。不猜已有 vault,不扫整盘。 - 体检(严格只读:
doctor.py、status、show、search都不写任何文件,不刷新索引;要刷新首页/索引用dashboard):
环境缺失时它只依赖标准库也能运行,并给出修复命令;环境正常则带出题量、待核对、待分类、知识树和下一步建议。需要安装/升级/修复时读 安装;安装完成后必须再体检一次,通过才算装好。老师自己也可在插件设置里点“检查环境”。<python> <skill>/scripts/doctor.py --vault <vault>
所有命令格式:<python> <cli> --vault <vault> <命令> ...,输出 JSON。ok:false 或退出码非 0 就是失败:读 error 与 hint,修好原因再继续,不要静默放宽筛选条件,不要重复执行写入命令。V1 是中文子串+结构化检索,不要声称有向量/语义检索;单写入者,写操作要串行。
怎么跟老师说话
- 用老师的话汇报:“已存入 12 道题,其中 3 道还没有答案”,而不是贴 JSON、ID 或命令。
- 一次只问阻塞性的问题(学科学段、教材版本、题库位置);能从
status和已有数据判断的不要问。 - 每次写入后回报三件事:做了什么、文件/题目在哪、还差什么(待核对?待分类?)。路径用老师的真实 vault 路径。
- 不确定就如实说“不确定”,并把原因写进待核对,不要编。
- 对话示例与常见问题话术见 对话指南;给新老师做使用介绍时分享 图文说明(起步包内有离线
先看这里.html)。
常见任务 → 怎么走
| 老师想做的事 | 做法 |
|---|---|
| 初始化 / 整理旧题库 | init;已有中文题库 organize(自动完整备份);dashboard 刷新首页;repair-papers 修复旧打印稿入口。英文旧目录先 migrate-cn。不要自己搬文件夹。→ 教师工作台 |
| 下载知识树 / 教材章节 | catalog → tree / editions → chapters。知识树不是教材目录,版本必须是老师的真实版本。→ 知识树与教材 |
| PDF 试卷入库 | pdf-prepare → 逐页看原图 → 写 v2 分题清单 → pdf-import。→ PDF 流程 |
| 存入已有题目 | import --file <questions.json 或 .zip>。→ 题目协议 |
| 给题目分类 | 先 auto-classify(只做精确标签匹配),剩余的 show --ids … 读题 → 判断真实节点 → classify --plan → classify |
| 找题 | search(--subject --phase --edition --chapter --knowledge --tag --type --status --query --unused --limit) |
| 读题 / 核对 | show --ids … 看完整题干、答案、解析;老师明确确认后才 review --confirm(插件里对应列表中的“标记为已核对”) |
| 组卷 | search → paper … --plan → 写 basket JSON → paper --basket。→ 组卷篮 |
| 交给别的 Agent / 视频素材 | export(默认不含答案;含答案须老师授权 --include-solutions)。→ 家族关系 |
不可违反的规则
| 规则 | 原因 |
|---|---|
导入的题一律 draft;只有老师明确说“核对好了”才 review --confirm 或 --confirm-reviewed |
答案/图片可能识别错,组卷发给学生会出事故 |
不把 AI 生成的答案当作原答案;AI 内容标 source.kind: ai 且待核对 |
来源可追溯 |
原卷没有答案就留空;识别不清写 [待核对:位置] 并列入 uncertainties,不猜字 |
诚实 |
| 缺题/缺教材/缺知识节点要报错并说明,不自动扩大范围或改教材 | 老师的范围不被悄悄改变 |
教材版本、章节只来自老师或已确认目录;未知就保持未知;只要求知识点时不碰 edition_id/chapter_ids |
不同版本不等价 |
分类只写真实 knowledge_tree_ids;标签不等于知识点;已有题不重新导入、不改正文 |
分类不能破坏原题 |
不上传整个题库;不导入含 Key/Cookie/Token 的响应;不改动旧 question-bank |
隐私与凭证 |
发给学生只给无答案 Word 或 打印稿/ 子目录;父目录含教师答案和 manifest |
防止泄题 |
| 本地存储不等于本地推理:如实说明哪些内容发给了当前 Agent/模型 | 诚实 |
PDF 入库(要点)
所有 PDF 一律走可编辑 v2 流程:逐页看原图,还原 Markdown/LaTeX 正文,配图独立裁切;原卷题号和“第几题图”不进正文(只留在来源记录);只用原答案,没有就留空;有本地知识树时同时写真实 knowledge_tree_ids。旧图片草稿只在老师明确要求时用 --image-draft;升级旧草稿用带备份的 --upgrade-to-editable。“文件已复制”不等于入库成功,以题数、渲染检查和 search 验证为准。
存题与核对(要点)
读 题目协议 构造 JSON;保留老师的内容、网站选项顺序和母子题。网站题用 import --website --subject … --phase …(可加 --download-images,未解决的图片会阻止核对与打印)。导入请求本身不是答案核对的证明。草稿仍可存储和检索。
检索与组卷(要点)
- 树节点筛选包含子孙,需同时给
--subject --phase;章节筛选需--edition。 - 组卷前先
--plan检查供题量;选定后写 basket(每卷分值独立,不改题库原分值),再生成。Agent 组卷用新的请求 JSON,不覆盖老师在插件里正在编辑的篮子。 - 生成后打开并检查输出再说“可以打印”:复杂公式/版式可能需手工调整;图片公式和 PDF 裁图仍是图片,不能说“全部可编辑”;Word 里的修改不会回写题库,要新版请开始新请求。
- 返回路径:
试卷/<名称>/试卷.md、打印稿/试卷.html|docx(无答案)、教师稿/试卷.html|docx(含答案),并告诉老师哪个能发给学生。
其它约定
- 数据位置以
.bank/config.json为准;teacher/v2布局中:题目在题目库,知识/教材目录与附件在资料,个人笔记在教学笔记。老师的笔记刷新时不会被覆盖。 - 插件“自动分类”不是模型推理;收到它的 Agent 交接单后,要真正读题再
classify,不要把“已复制指令”说成“已分类”。 - Obsidian 菜单语言是应用自己的设置,改文件夹名不会改它。