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