Objetivo deste post

Este post publica o código-fonte usado nos experimentos de IA de gomoku. O código só é carregado quando você abre um arquivo.

Modelos usados

  • VLM: 25.413 jogadas de partidas foram feitas com o Qwen3-VL-8B-Instruct, do Hugging Face. Hoje o servidor está rodando o padrão, Qwen3-VL-2B-Instruct. Ele recebe juntos uma imagem do tabuleiro e um tabuleiro em texto e devolve dois números, "row col".
  • LoRA: peft, r=8, alpha=16. Treina só com as jogadas do lado vencedor. No MPS, rodou em fp16 e a loss virou NaN.
  • IA local: o AiPlayer em C++ do app Qt e o ai.ts da web. Uma heurística que primeiro procura jogadas vencedoras e jogadas que precisam ser bloqueadas e, no resto dos casos, escolhe somando pontuações em quatro direções.
  • Motor: as mesmas jogadas proibidas para pretas e brancas (duplo três e overline proibidos, duplo quatro permitido); só exatamente cinco vence.

Estrutura de pastas

  • src: motor de gomoku em Qt6/C++, IA local, tela do tabuleiro, cliente TCP que se comunica com o servidor VLM
  • Arquivos .py na raiz: servidor de inferência do VLM (vlm_pva_server.py), dataset_omook.py, que transforma logs em dados de treinamento, treinamento LoRA train_vlm.py, download de modelos
  • scripts: verificação de coordenadas do VLM e cliente de tabuleiro em texto
  • omook-web: tela de partida na web em Next.js, motor (board.ts), IA local (ai.ts), salvamento de registros de partidas (db.ts), conexão com o VLM

As configurações de implantação do servidor, os scripts de monitoramento e automação, os logs de partidas e o banco de dados de registros de partidas, e os pesos dos modelos ficaram de fora da publicação. O código de operação da web, como anúncios e a lista de outros jogos, e os arquivos de configuração também foram retirados, por isso alguns imports apontam para arquivos não publicados.

Código-fonte completo

38 arquivos · 8.212 linhas — abra uma pasta e clique em um arquivo para carregar o código.

Raiz do projeto7 arquivos
CMakeLists.txttext · 30 linhas · 663B

Carregando o código…

dataset_omook.pypython · 347 linhas · 12KB

Carregando o código…

download_qwen3vl.pypython · 42 linhas · 1KB

Carregando o código…

requirements.txttext · 20 linhas · 725B

Carregando o código…

train_vlm.pypython · 360 linhas · 13KB

Carregando o código…

TRAINING.mdmarkdown · 136 linhas · 6KB

Carregando o código…

vlm_pva_server.pypython · 1.475 linhas · 54KB

Carregando o código…

omook-web/18 arquivos
omook-web/app/api/game/[code]/route.tstypescript · 59 linhas · 2KB

Carregando o código…

omook-web/app/api/game/route.tstypescript · 32 linhas · 1KB

Carregando o código…

omook-web/app/api/vlm/move/route.tstypescript · 58 linhas · 2KB

Carregando o código…

omook-web/app/globals.csscss · 48 linhas · 864B

Carregando o código…

omook-web/app/layout.tsxtsx · 33 linhas · 944B

Carregando o código…

omook-web/app/page.tsxtsx · 71 linhas · 2KB

Carregando o código…

omook-web/app/play/page.tsxtsx · 773 linhas · 23KB

Carregando o código…

omook-web/app/play/play.module.csscss · 189 linhas · 3KB

Carregando o código…

omook-web/components/OmokBoard.module.csscss · 116 linhas · 2KB

Carregando o código…

omook-web/components/OmokBoard.tsxtsx · 85 linhas · 3KB

Carregando o código…

omook-web/lib/ai.tstypescript · 160 linhas · 4KB

Carregando o código…

omook-web/lib/board.tstypescript · 337 linhas · 9KB

Carregando o código…

omook-web/lib/db.tstypescript · 190 linhas · 6KB

Carregando o código…

omook-web/lib/gameTypes.tstypescript · 43 linhas · 855B

Carregando o código…

omook-web/lib/guest.tstypescript · 48 linhas · 2KB

Carregando o código…

omook-web/lib/omk3Client.tstypescript · 184 linhas · 5KB

Carregando o código…

omook-web/lib/renderBoardPng.tstypescript · 118 linhas · 3KB

Carregando o código…

omook-web/lib/vlmClient.tstypescript · 104 linhas · 3KB

Carregando o código…

scripts/2 arquivos
scripts/probe_vlm_coords.pypython · 182 linhas · 5KB

Carregando o código…

scripts/vlm_text_client.pypython · 418 linhas · 15KB

Carregando o código…

src/11 arquivos
src/aiplayer.cppc++ · 136 linhas · 4KB

Carregando o código…

src/aiplayer.hc++ · 9 linhas · 237B

Carregando o código…

src/boardmodel.cppc++ · 505 linhas · 16KB

Carregando o código…

src/boardmodel.hc++ · 127 linhas · 6KB

Carregando o código…

src/boardwidget.cppc++ · 198 linhas · 6KB

Carregando o código…

src/boardwidget.hc++ · 45 linhas · 1KB

Carregando o código…

src/main.cppc++ · 21 linhas · 543B

Carregando o código…

src/mainwindow.cppc++ · 962 linhas · 35KB

Carregando o código…

src/mainwindow.hc++ · 90 linhas · 3KB

Carregando o código…

src/tcpvlmclient.cppc++ · 386 linhas · 12KB

Carregando o código…

src/tcpvlmclient.hc++ · 75 linhas · 3KB

Carregando o código…