Skip to content

PaperLabv1.2.0

Pre-release
Pre-release

Choose a tag to compare

@cxtwit cxtwit released this 05 Apr 16:58
· 6 commits to main since this 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.py gitignore 检测误判:将字符串 in 判断改为 splitlines() 行级匹配,避免 # config.json
    注释行被误判为已添加
  • setup.py URL 校验过于宽松:将 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.py CLI 参数支持:引入 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.py OpenAI 客户端加入 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 接口必需