# ExamForge **Repository Path**: chazzorg/ExamForge ## Basic Information - **Project Name**: ExamForge - **Description**: 智能考试系统 - 题库管理、自动组卷、在线答题、智能评分一体化平台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-10 - **Last Updated**: 2026-03-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ExamForge 轻量级智能考试系统,支持 Markdown 试卷导入、在线答题、AI 智能阅卷。 ## 功能 - **试卷管理**:Markdown 格式导入,支持单选/多选/判断/简答题 - **智能解析**:AI 自动生成答案、解析、得分点,支持增量解析和断点续传 - **在线考试**:自动保存、断点续答、标记复查、倒计时 - **智能阅卷**:客观题自动评分,主观题关键词匹配 + AI 兜底 - **考试历史**:完整记录、成绩查看、历史管理 ## 运行方式 ### 开发模式 ```bash # 安装依赖 make deps # 配置环境变量 cp .env.example .env # 启动(后端 + 前端联调) make dev ``` 访问 http://localhost:8088 ### 生产模式 ```bash # 构建 make build # 启动 ./examforge ``` ### 手动启动 ```bash # 后端 go run . # 前端开发(另开终端) cd web && npm run dev ``` ## 配置说明 创建 `.env` 文件: ```bash cp .env.example .env ``` ### 服务配置 | 变量 | 说明 | 默认值 | |------|------|--------| | `APP_ADDR` | 服务地址 | `:8088` | | `DATA_DIR` | 数据目录 | `data` | ### AI 配置 | 变量 | 说明 | 默认值 | |------|------|--------| | `AI_PROVIDER` | AI 提供者 (`claude`/`openai`) | `claude` | | `AI_TIMEOUT_SEC` | 单次调用超时秒数 | `180` | | `AI_CONCURRENCY` | 并发数(解析/阅卷) | `5` | | `AI_PROXY_URL` | 代理地址 | (空) | #### 使用 OpenAI ```bash AI_PROVIDER=openai OPENAI_BASE_URL=https://api.openai.com/v1 OPENAI_API_KEY=sk-xxx OPENAI_MODEL=gpt-4o ``` #### 使用 Claude ```bash AI_PROVIDER=claude CLAUDE_COMMAND=claude CLAUDE_MODEL=claude-sonnet-4-20250514 ``` #### 使用国内代理 ```bash AI_PROVIDER=openai OPENAI_BASE_URL=https://api.openai-proxy.com/v1 OPENAI_API_KEY=sk-xxx OPENAI_MODEL=gpt-4o ``` ## 智能阅卷机制 ### 客观题(单选/多选/判断) - 标准答案比对,毫秒级完成 ### 主观题(简答题) 1. **关键词匹配**:优先使用得分点关键词匹配评分 2. **AI 兜底**:关键词匹配得分 < 30% 时,自动调用 AI 重新评分 3. **最优结果**:取两者较高分,避免误判 ### 示例得分点 ``` [1.5分] foo输出正确: 正确写出 foo() 函数的输出结果为 1 [1.5分] bar输出正确: 正确写出 bar() 函数的输出结果为 5 [1分] 执行顺序: 准确描述 return 与 defer 的执行顺序 ``` ## 试卷格式 试卷放在 `data/papers/` 目录,使用 Markdown 格式: ```markdown # Go 语言考试试题 ## 单项选择题(每题 2 分) 1. Go语言中,以下哪个关键字用于定义常量? A. var B. const C. let D. define **答案:B** ## 多项选择题(每题 4 分) 1. 以下哪些是基本数据类型? A. int B. string C. bool D. list **答案:ABC** ## 简答题(每题 10 分) 1. 请简述defer的执行顺序。 **答案:** defer按LIFO顺序执行。 --- 考试时长:60分钟 ``` ## 技术栈 Go + Chi + SQLite | Vue 3 + TypeScript + Vite | Claude / OpenAI ## License MIT