Repository navigation
PaperLabv1.2.0
Pre-release
Pre-release
[1.2.0] - 2026-04-06
🐛 Bug Fixes
- 数据库初始化不同步:将全部建表逻辑统一迁移至
lab_generator.ensure_db(),build.py与main.py
共同调用,彻底消除因启动顺序不同导致表缺失的问题 deduplicate_name无限循环:修复后缀列表(10个词)全部碰撞时陷入死循环的问题,现在遍历失败后自动 fallback 至
UUID 短串兜底/api/history接口 500 崩溃:对损坏的历史 report JSON 加入 try/except 容错,跳过损坏记录而非整个接口崩溃setup.pygitignore 检测误判:将字符串in判断改为splitlines()行级匹配,避免# config.json
注释行被误判为已添加setup.pyURL 校验过于宽松:将startswith("http")改为精确的startswith(("http://", "https://"))- 前端历史分页状态泄漏:
initSession()与logout()现在正确重置
historyPage、history、historyTotal,新登录用户不再继承上一用户的翻页状态 - 限时模式空提交:计时器归零自动提交前现在检查是否有任何作答内容,全空则跳过提交,避免浪费 LLM 调用并写入垃圾战报
doneLabIds过滤不完整:「排除已做靶机」功能此前仅基于已加载的前 15 条历史,现在由专用接口/api/done_labs
返回完整的已完成 ID 集合
✨ New Features
- 排行榜:新增
GET /api/leaderboard接口,聚合全平台用户的平均分与推演次数,双键排序;前端「指挥中心」新增「排行
榜」Tab,前三名高亮金银铜牌,自动标记当前用户位置 - 错题本 Markdown 导出:新增
GET /api/bookmarks/export接口,将错题本渲染为结构化 Markdown
文件(含题目、得分、AI 点评、遗漏考点)直接触发浏览器下载;错题本 Tab 新增「↓ 导出 Markdown」按钮 build.pyCLI 参数支持:引入argparse,不再需要手动修改源码,支持以下参数:--target HTB-X HTB-Y指定编译目标--derive N设置每台母体的变种数--max-sources N限制处理的源机器数量--quality开启质量评分过滤--workers N设置并发线程数
- 并发靶机生成:
build.py引入ThreadPoolExecutor并发调用 LLM,默认 3 线程,批量生成速度提升约 3 倍(300
个变体约从 50 分钟降至 15 分钟) /api/done_labs接口:新增专用接口返回用户做过的完整 lab_id 列表,解决「排除已做」过滤不完整的问题
⚡ Improvements
main.pyOpenAI 客户端加入timeout=120.0:与build.py保持一致,防止慢速 LLM 响应导致/api/evaluate
永久挂起get_db_connection()加入 WAL pragma:每次连接均设置PRAGMA journal_mode=WAL,提升 SSE
流式传输期间的并发读写性能generateRandomLab改为本地过滤:随机匹配靶机时直接过滤内存中的labs.value,省去每次点击重发/api/list_labs
的网络请求/api/stats容错增强:每行 report/tags 解析均加入 try/except,历史脏数据不再导致统计接口崩溃requirements.txt补全与锁版:新增缺失的python-multipart(upload 接口运行时依赖),升级为
uvicorn[standard],并锁定所有依赖的最低版本
📦 Dependencies
fastapi>=0.111.0
uvicorn[standard]>=0.29.0
pydantic>=2.7.0
openai>=1.30.0
python-multipart>=0.0.9 # 新增,upload 接口必需