本文的目的

公开数独 AI 实验中使用的源代码。只有在展开文件时才会加载代码。

使用的模型

  • Qwen3-VL-2B-Instruct:用于第一次训练(lora_stoku)、试错训练(lora_move)、寻找确定格子(lora_cell),以及盘面读取和数字 1 判定的 2B 版本。
  • Qwen3-VL-8B-Instruct:训练了盘面读取(lora_board_read_8b)和按数字区分的不能填的格子(lora_digit1_illegal_8b)。第 4 篇的解题使用的是 15 个循环的适配器,照片导入使用的是盘面读取适配器。
  • LoRA:peft,r=8,alpha=16。所有适配器都是相同的设置。
  • Qwen2.5-1.5B-Instruct:在网页聊天中判断是不是请求一步。
  • Gemma 4(31B、E4B、mlx 4bit):只测试了它能否读取盘面坐标。
  • 网页上的一步:目前不使用 VLM,只用代码挑选确定的一步。

文件夹结构

  • 根目录下的 dataset_*.py:生成训练数据
  • 根目录下的 *_train_loop.py、train_vlm.py:LoRA 训练与循环迭代
  • sudoku_engine.py、sudoku_human_solver.py、vlm_digit_strategy.py:生成谜题、人类式解法、寻找确定的一步
  • human_judge_*.py:第 4 篇的判定演示
  • sudoku_vlm_server.py、chat_bridge_server.py:VLM 服务器和聊天服务器
  • main.py、main_window.py、photo_board_*.py:PyQt6 应用与照片导入
  • web:Next.js 网页数独界面、解题记录(db.ts)、AI 聊天面板
  • solve.md:记录人类解法的文档

服务器部署配置、监控与自动化脚本、训练数据和日志、模型权重不在公开范围内。广告、其他游戏列表等网页运营代码以及配置文件也已去掉,因此部分 import 指向的是未公开的文件。

完整源代码

75 个文件 · 19,630 行 — 展开文件夹后点击文件即可加载代码。

项目根目录48 个文件
board_read_demo.pypython · 256 行 · 10KB

正在加载代码…

chat_bridge_server.pypython · 415 行 · 13KB

正在加载代码…

dataset_digit_illegal.pypython · 128 行 · 4KB

正在加载代码…

dataset_experience.pypython · 116 行 · 4KB

正在加载代码…

dataset_human_solver.pypython · 205 行 · 7KB

正在加载代码…

dataset_sudoku_coords.pypython · 159 行 · 5KB

正在加载代码…

dataset_sudoku_read.pypython · 147 行 · 5KB

正在加载代码…

dataset_sudoku.pypython · 104 行 · 3KB

正在加载代码…

human_judge_one_game.pypython · 369 行 · 14KB

正在加载代码…

human_judge_solve_cycle.pypython · 598 行 · 22KB

正在加载代码…

main_window.pypython · 1,348 行 · 47KB

正在加载代码…

main.pypython · 30 行 · 662B

正在加载代码…

make_board_snapshot.pypython · 107 行 · 3KB

正在加载代码…

photo_board_prep.pypython · 761 行 · 25KB

正在加载代码…

photo_board_read.pypython · 132 行 · 4KB

正在加载代码…

README.mdmarkdown · 70 行 · 2KB

正在加载代码…

requirements-train.txttext · 3 行 · 62B

正在加载代码…

requirements-vlm.txttext · 7 行 · 107B

正在加载代码…

requirements.txttext · 1 行 · 13B

正在加载代码…

solve.mdmarkdown · 45 行 · 6KB

正在加载代码…

sudoku_engine.pypython · 259 行 · 9KB

正在加载代码…

sudoku_human_solver.pypython · 997 行 · 33KB

正在加载代码…

sudoku_vlm_server.pypython · 825 行 · 30KB

正在加载代码…

sudoku_vlm_solver.pypython · 111 行 · 4KB

正在加载代码…

train_vlm.pypython · 491 行 · 17KB

正在加载代码…

vlm_agent.pypython · 212 行 · 7KB

正在加载代码…

vlm_board_read_sim.pypython · 527 行 · 18KB

正在加载代码…

vlm_board_read_train_loop.pypython · 767 行 · 23KB

正在加载代码…

vlm_board.pypython · 701 行 · 22KB

正在加载代码…

vlm_cell_train_loop.pypython · 852 行 · 28KB

正在加载代码…

vlm_coord_probe_gemma.pypython · 392 行 · 12KB

正在加载代码…

vlm_coord_sim.pypython · 349 行 · 12KB

正在加载代码…

vlm_curriculum_loop.pypython · 496 行 · 15KB

正在加载代码…

vlm_diag.pypython · 426 行 · 14KB

正在加载代码…

vlm_digit_illegal_sim.pypython · 181 行 · 5KB

正在加载代码…

vlm_digit_illegal_train_loop.pypython · 717 行 · 22KB

正在加载代码…

vlm_digit_strategy.pypython · 304 行 · 10KB

正在加载代码…

vlm_experience.pypython · 279 行 · 9KB

正在加载代码…

vlm_human_probe.pypython · 331 行 · 10KB

正在加载代码…

vlm_human_train_loop.pypython · 177 行 · 5KB

正在加载代码…

vlm_human.pypython · 137 行 · 4KB

正在加载代码…

vlm_loader.pypython · 95 行 · 3KB

正在加载代码…

vlm_play_sim.pypython · 454 行 · 14KB

正在加载代码…

vlm_play_train_loop.pypython · 380 行 · 13KB

正在加载代码…

vlm_prompt.pypython · 386 行 · 16KB

正在加载代码…

vlm_protocol.pypython · 310 行 · 8KB

正在加载代码…

vlm_qwen8b_base_probe.pypython · 274 行 · 9KB

正在加载代码…

vlm_stage_sim.pypython · 357 行 · 11KB

正在加载代码…

web/27 个文件
web/next.config.mjsjavascript · 4 行 · 92B

正在加载代码…

web/package.jsonjson · 26 行 · 569B

正在加载代码…

web/postcss.config.mjsjavascript · 8 行 · 135B

正在加载代码…

web/src/app/api/chat/route.tstypescript · 78 行 · 2KB

正在加载代码…

web/src/app/api/session/move/route.tstypescript · 60 行 · 2KB

正在加载代码…

web/src/app/api/session/route.tstypescript · 146 行 · 4KB

正在加载代码…

web/src/app/globals.csscss · 33 行 · 564B

正在加载代码…

web/src/app/layout.tsxtsx · 43 行 · 1KB

正在加载代码…

web/src/app/page.tsxtsx · 5 行 · 112B

正在加载代码…

web/src/components/AiChatPanel.tsxtsx · 117 行 · 4KB

正在加载代码…

web/src/components/BottomNav.tsxtsx · 65 行 · 2KB

正在加载代码…

web/src/components/GameScreen.tsxtsx · 382 行 · 13KB

正在加载代码…

web/src/components/HomeScreen.tsxtsx · 197 行 · 8KB

正在加载代码…

web/src/components/Logo.tsxtsx · 45 行 · 1KB

正在加载代码…

web/src/components/NumberPad.tsxtsx · 35 行 · 991B

正在加载代码…

web/src/components/SettingsScreen.tsxtsx · 63 行 · 3KB

正在加载代码…

web/src/components/SudokuApp.tsxtsx · 716 行 · 19KB

正在加载代码…

web/src/components/SudokuBoard.tsxtsx · 96 行 · 3KB

正在加载代码…

web/src/lib/db.tstypescript · 283 行 · 7KB

正在加载代码…

web/src/lib/device-id.tstypescript · 21 行 · 659B

正在加载代码…

web/src/lib/move-kinds.tstypescript · 1 行 · 60B

正在加载代码…

web/src/lib/notes.tstypescript · 31 行 · 916B

正在加载代码…

web/src/lib/sudoku.tstypescript · 232 行 · 6KB

正在加载代码…

web/src/lib/types.tstypescript · 73 行 · 2KB

正在加载代码…

web/src/types/node-sqlite.d.tstypescript · 13 行 · 326B

正在加载代码…

web/tailwind.config.tstypescript · 43 行 · 970B

正在加载代码…

web/tsconfig.jsonjson · 26 行 · 578B

正在加载代码…