Opponent Prepを開き、ユーザー名を入力すると、まもなく盤の向こうに不穏なものが現れる。相手と同じように序盤を開始し、相手がいつも陥る同じ不安定な構造へと流れ込み、まるで相手がミスをしがちなタイミングを正確に知っているかのようなボットだ。私たちはこれをゴーストボットと呼んでいる。その内側は、実に何層にも重なった本物のエンジニアリングだ—独立した複数のシステムが積み重なり、それぞれがまだ対局したことのない見知らぬ相手についての異なる問いに答えるよう作られている。
まず、相手の履歴を読み込む
名前を検索した瞬間、そのプレイヤーの最近の対局を取り込み、一度の分析にかける—勝率、各色で実際にどんな序盤に到達するか、対局のさまざまな局面でおおよそどれくらいの強さで指すか、そして重要なのは、過去にどこで最も多くポイントを失ってきたかだ。推測ではない。本人自身の指し手から数え上げられたものだ。
正確な局面ブック:指し手をインデックス化する
この履歴から、私たちは検索テーブルを構築する。プレイヤーが実際に到達したすべての局面について、何を指したか、どのくらいの頻度で指したか。ゴーストボットが相手の足跡をたどるとき、即興で指しているのではない—このテーブルから直接引き出し、実際にその選択肢をどれだけの頻度で選んだかで重み付けしている。相手が50回訪れた局面に誘導すれば、ボットの応手はまさにその同じ50個のデータポイントから来る。シミュレーションというより、数字によって語られる再現に近い。
不気味なほど的確に感じさせる仕掛け:癖ブック
ここからが本当に頭を使った部分だ。正確な局面テーブルが役立つのは、相手が以前に来たことのある局面に戻ったときだけだ—そして少しでも普段と違う手を指した瞬間、そのテーブルは空白になる。実際の相手は無限の記憶力を持っていないが、その代わりに癖を持っている。常にビショップをフィアンケットする、常に8手目までにキャスリングする、盤の反対側であなたが何をしていようと常に同じポーンの三角形を築く、そういうプレイヤーだ。
そこで私たちは、意図的に情報の半分を捨てる第二のインデックスを構築した。局面を相手自身の駒だけで記憶し、あなたが何をしているかはぼかしてしまう。この、より粗いはずの記憶こそが、ゴーストボットに「これは彼のロンドン・システムに似ている」と、技術的には実際の対局には一度も起きていない局面において認識させることを可能にしている。それはチェスの脳の代わりを務めるパターン認識であり—呼び出された癖はすべて、指される前に安全性を静かに再確認される。局面がそう見えるというだけの理由で、見慣れた型が9手目で駒を吊るすことは決してない。
両方のブックの上には、すべての中で最も奇妙な層が乗っている。一連のつまみに還元された人格だ。プレイヤーの実際の指し手の選択を、ほぼ同程度の実力の対戦相手からなる対照群と比較することで、スタイル指紋を構築する。これにより「慎重に指す」「鋭い戦術を好む」「互角の局面で我慢できなくなる」といった特徴が、両方のブックを超えて即興が必要になるたびにゴーストボットの判断を静かに同じ方向へ傾ける数値的な後押しへと変換される。結果として、序盤を記憶するだけでなく—相手が傾く方向へ同じように傾くのだ。
強さの源:Stockfishと私たちのサーバー上のモデル
2つのブックが説明するのは、ゴーストボットがどの手を知っているかだけだ。どれほどの強さであるべきか、どんなふうに間違えるべきかまでは説明しない。その部分は、あなた自身の端末から始まる。Stockfishがブラウザ上でそのまま動き、相手の最近の対局のうち数局について、相手が選択できたすべての局面ですべての合法手を採点する。結果はその後私たちのサーバーに送られ、モデルがそこから学ぶ。このプレイヤーがどれくらいの頻度で最善手を見つけるか、いつ指し損じるか、ミスがどれほど大きくなるかだ。
このモデルはニューラルネットワークで、ClaudeやChatGPTの基盤となっているLLMに似た数学モデルだ。言語モデルが選ぶのは次の単語だ。ゴーストボットが選ぶのは、あなたの対戦相手なら選ぶであろう次の一手だ。
ではなぜこれほど速いのか、ReportとBlunder Puzzleは待たせるのに?
レポートの大部分は計算ではなく数え上げだ。レパートリー、2つのブック、スタイル指紋、弱点は、すでに終わった対局に対する算術であり、ブラウザはそれを一瞬で片づける。Stockfishが採点するのは、あなたが指定した対局だけだ。同じ対局をすでに誰かがスカウトしていれば、結果は検証済みのキャッシュから数秒で返ってくる。
Game AnalysisとBlunder Puzzleは、まったく別種の問いに答えている。それには近道が存在しない。この対局の、この特定の一手は本当に良かったのか—どれほど良かったのか?その問いは5分前には存在していなかった。誰もそれを問うたことはない。なぜなら、今あなたの盤上にある局面は、あなたがたった今指したその対局に固有のものだからだ。それを調べられるテーブルなど存在しない。それに答える唯一の誠実な方法は、局面を本物のチェスエンジンに渡し、対局全体を一手ずつ探索させることだ—そして、ある犠打が本当に正しかったかを確認するとき、エンジンは最初の問いの上にさらに二つ目の問いを立てなければならない。もし相手がそれを取ったらどうなるか?それはテーブルの検索ではない。あなたのデバイス上でリアルタイムに、局面ごとに行われる本物の逐次的な思考であり、誰も指したことのない対局に対してそれを飛ばせるキャッシュなど世界のどこにも存在しない。
簡単に言えば、Opponent Prepは数局から一人のプレイヤーの癖を学ぶ。ReportとBlunder Puzzleは、目の前の対局のすべての手を考え抜かなければならない。
あなただけのゴーストを作りに行こう
時計が動き出す前に、相手の癖を知っておこう。
