用途:在需要生成 Judge v2 编程题(Exercode/Judge 的问题),或 Exercode 课程学习目标包含编程、需要可判分的练习时使用。
主要能力:按 references 中的 problem-format.md、problem-authoring.md、example-problem.md 规范生成 v2 题目;只生成 problem.md(不使用旧版 <id>.problem.md 命名);题目放在 <courseId>/problems/<problemId>/ 下,不创建仓库级题目或引用其他课程题目;多题时按难度从易到难排序。
使用方式:先确认学习目标或素材、目标课程、目标语言、题目数量与难度范围,再推导题目草稿(id、name、overview、objective、difficulty)。先写主模型答案(如 model_answers/python/main.py),再写 problem.md。标准 stdin/stdout 题不创建 judge.ts/debug.ts,由判题服务器自动生成;仅在需要特殊判题(GUI、LLM、命令式等)时写自定义 judge.ts 及配套 debug.ts。测试用例放在 test_cases/,至少 1 个 example_* 与 1 个隐藏用例,总数至少 4 个,输入需多样且含边界情况,所有输入互不相同。.out 与 .fout/ 内容必须由本地运行模型答案生成,不得手写。用 bunx exercode-problem judge model_answers/<languageId> 判题,全部输出为 2000 才算通过;再用另一语言写独立答案交叉验证。模板不得直接解题,需用 judge 确认至少一个用例不被接受。最后运行 bunx exercode-problem validate-problem <problemDir>... 直到无错误。
环境与限制:需保持 mise 配置与固定版本,缺失时创建 .tool-versions,声明精确版本与依赖锁文件,运行 mise trust --yes 与 mise install,不依赖全局安装或临时环境。语法约束需映射到 frontmatter 的 requiredRegExpsInCode / forbiddenRegExpsInCode / forbiddenTextsInCode,且只能用语言无关模式。资料未提供具体收费、平台支持范围与效果数据。