
黑白棋 AI 的构成
黑白棋仿照围棋客户端制作,由 Qt 应用、VLM 服务器和网页对局(othello.mariago.kr)三部分组成。在网页上,人执黑,并从本地 AI 和 VLM 中选择对手。
与人对局的记录
网页上下完的对局共 31 局。人赢了 23 局,AI 赢了 7 局,1 局平局。
人赢的 23 局中,有 12 局在 9 步内结束。结果全是 13–0,棋盘上一颗白子都没有留下。着法顺序只有两种。
- C4 C3 C2 C5 C6 D6 E6 F4 G4:8 局
- D3 C3 B3 E3 F3 F4 F5 D6 D7:4 局
第二种是把第一种沿对角线翻转后的着法顺序。12 局全都来自同一个浏览器。有人找到一条路之后,就一次又一次地重走。

对手是谁
对局记录中没有留下对手是本地 AI 还是 VLM。尽管如此,这 12 局可以认为是本地 AI 下的,因为同样的着法顺序原封不动地重复了八次和四次。第 3 篇会写到,这段时间 VLM 服务器是随机选择着法的,而随机是不会重复出相同着法顺序的。
全灭的着法顺序只有两个
在本地 AI 执白时,我们把黑方能下的所有着法展开到第 11 步。让白方全灭的着法顺序正好有两个,与记录中留下的两种着法顺序相同。AI 身上的漏洞只有这两个,而有人找到了这些漏洞并一直赢下去。
这一阶段的实际代码
这是对局记录表。有着法顺序(moves)和结果(end_text),但没有对手类型。
othello-web/lib/db.ts
CREATE TABLE IF NOT EXISTS games (
code TEXT PRIMARY KEY,
guest_id TEXT NOT NULL,
access_key TEXT,
size INTEGER NOT NULL DEFAULT 8,
board TEXT NOT NULL,
to_play INTEGER NOT NULL,
last_r INTEGER,
last_c INTEGER,
move_no INTEGER NOT NULL DEFAULT 0,
epoch INTEGER NOT NULL,
started INTEGER NOT NULL DEFAULT 0,
status TEXT NOT NULL DEFAULT 'playing',
end_text TEXT,
moves TEXT NOT NULL DEFAULT '[]',
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL
);下一篇是“2. 只看一步的 AI:已部署的 AI 与源代码不同”。
COMMENTS · CHAPTER 01
9 步就以 13–0 落败的黑白棋 AI 评论 0
还没有评论。阅读时有疑问或想补充的内容,欢迎留言。
发表评论前,请用 Google 开始并登记昵称和邮箱。
用 Google 开始