打开Opponent Prep,输入一个用户名,几秒钟后你就会隔着棋盘盯着一个令人不安的东西:一个下开局方式和对方一模一样、总是滑向对方惯常出现的那些不稳固结构、而且似乎精确知道对方什么时候容易失误的机器人。我们称它为 Ghost Bot(幽灵机器人),而在其背后,是一套真正分层的工程系统——若干独立系统层层叠加,每一层都在回答关于这位你从未对弈过的陌生人的一个不同问题。
首先,它会阅读对方的全部历史
你一搜索名字,我们就会调取该玩家所有可获取的对局,并进行一次分析——胜率、他执每种颜色实际走出的开局、他在对局各阶段大致的实力水平,以及最关键的:他过去究竟在哪些地方丢分最多。这不是猜测,而是从他自己的着法中,跨越他所下过的成百上千盘棋统计出来的。
精确局面库:把他的着法编入索引
从这些历史数据中,我们建立了一张查找表:对于该玩家实际到达过的每一个局面,他下了什么,下的频率又是多少?当 Ghost Bot 沿着他的脚步走时,它并不是在临场发挥——而是直接从这张表中提取答案,并按他真实选择每个选项的频率加权。让它进入一个他到访过五十次的局面,机器人的应对就来自那完全相同的五十个数据点。与其说是模拟,不如说是一次由数字讲述的回放。
让它显得诡异精准的关键:习惯库
这是真正需要动脑筋的部分。精确局面表只有在你回到对方曾经到过的局面时才有用——而一旦你走出哪怕稍微不寻常的一步,这张表就会变成空白。真实的对手没有无限的记忆力,但他们有习惯:总是给象立起来的棋手、总是在第八步之前易位的棋手、无论你在棋盘另一侧做什么都要搭建同样兵形三角的棋手。
于是我们建立了第二个索引,它故意舍弃一半信息:它只根据该玩家自己的棋子来记住一个局面,模糊掉你正在做的一切。正是这种更模糊的记忆,让 Ghost Bot 能够在一个技术上从未在其真实对局中出现过的局面里认出"这看起来像他的伦敦体系"。这是用模式识别代替了下棋的大脑——而每一次被唤起的习惯在落子前都会被悄悄重新核查安全性,因此一个熟悉的布局绝不会仅仅因为局面看着眼熟,就在第九步让一颗棋子白白送吃。
在这两个库之上,还叠加着所有层级中最奇特的一层:被简化为一组数值旋钮的个性。 我们通过把该玩家实际的着法选择与一组与他实力相近的对照棋手进行比较,来构建风格指纹。它把"下得谨慎""酷爱犀利战术"或"在均势局面中容易急躁"这类特征,转化为悄悄推动 Ghost Bot 决策的数字倾向,每当它必须在两个库之外临场发挥时都会朝同一方向倾斜。最终结果不仅记住了他的开局——它还会像他一样倾斜。
那为什么这个几乎瞬间出现,而 Report 和 Blunder Puzzle 却要你等待?
这里是诚实、略显扫兴的答案:Opponent Prep 之所以快,是因为上述一切都没有向国际象棋引擎提出任何问题。构建整份报告——开局体系、两个库、风格指纹、弱点——靠的是计数,而不是计算。这只是对一堆已经发生过的对局做算术。无论那堆对局里有多少百盘,一个现代浏览器都能在几秒钟内嚼碎它。
Game Analysis 和 Blunder Puzzle 回答的是完全不同的一类问题,而且没有捷径可走:在这盘特定的对局中,这一步特定的着法真的好吗——好到什么程度?这个问题在五分钟前根本不存在。以前从没有人问过它,因为你棋盘上此刻的局面,正是你刚刚下的这盘棋所独有的。没有任何一张表可以查到答案。唯一诚实的回答方式,就是把这个局面交给一个真正的国际象棋引擎,让它逐着搜索整盘棋——而当它检查一次弃子是否真的成立时,还必须在第一个问题之上再问第二个问题:如果对方吃掉会怎样?这不是查表。这是真实的、逐步进行的思考,实时发生在你的设备上,一个局面接一个局面地进行,世界上没有任何缓存能为一盘从未有人下过的棋跳过这个过程。
简单来说:Opponent Prep 之所以快,是因为它在回忆。Report 和 Blunder Puzzle 之所以慢,是因为它们在真正地思考。
去创建你自己的幽灵
在时钟启动之前,先了解他的习惯。