大约八年前,我在玩一局《代号》(Codenames)时,游戏状态已经糟糕到如果我们不在自己的回合正确猜出所有剩余单词,几乎必输无疑。根据给出的线索,我们无法做到这一点。虽然这款游戏本质上是基于单词线索的猜词游戏,但一位队友提出,根据已被选中的单词的物理布局,我们考虑的大多数可能性都会导致“过于奇怪”的图案,因此我们应该根据位置来选择最后一个单词。这个办法奏效了,我们赢了。
[如果你不熟悉《代号》这款游戏,点击展开说明] 《代号》由两队进行。游戏有一个5x5的单词网格,每个单词秘密归属于{蓝队、红队、中立、刺客}中的一方。每队有一名“间谍大师”,他知道单词与归属的秘密对应关系。间谍大师的任务是给出单字线索,让队友猜出属于自己队伍的单词,同时避免误猜对方队伍或刺客的单词。每回合,间谍大师给出一个线索,队友们猜测哪些单词与该线索相关。游戏持续进行,直到一方的单词全部被猜出,或者刺客的单词被猜中(立即失败)。为简化起见,这里省略了一些细节,但就本文而言,这个解释应该足够接近。如果你想了解更多,可以看看这个视频,或者官方规则。
从那时起,我就一直好奇,如果有人只记住游戏附带的全部40张设置卡,他的表现会有多好。为了模拟这一点,我们将构建一个仅使用位置信息进行游戏的机器人(你也可以称之为AI,但由于我们将讨论使用LLM/AI来编写这个机器人,为了便于区分,我们将使用“机器人”一词来指代自动化的《代号》游戏代理)。
当时,在我们猜中答案后,我们翻看了配置卡,想确认队友基于形状的猜测是否正确——结果确实如此:他们根据可能的物理配置,正确判断出了概率最高的猜测。每张卡片布局都定义了哪些词属于己方队伍,哪些属于对方队伍。为了控制成本,游戏只附带了40张卡片(旋转后可形成160种配置)。我们的队友并没有记住所有卡片(否则就能直接锁定唯一配置),但凭借足够的游戏经验,他们培养出了一种直觉,知道哪些模式/集群常见或不常见,从而能对游戏发动这种侧信道攻击。例如,玩过足够多局后,你可能会发现:没有哪张卡片会让某个队伍在一行或一列中拥有5个词;只有起始玩家颜色才能出现一行4个词的情况;如果这种情况发生在边缘且为蓝色,那么第5个词必然属于红色队伍;不存在6个蓝色词相连的配置(但存在红色词相连的配置,以及一种“2个词居中紧邻4个词”的配置)。即使你没有刻意利用这些信息,潜意识里也可能对某些“过于奇怪”的模式产生排斥。
回到构建一个模拟“花几天时间记住40张卡片”的机器人的想法,下面是一个简单的机器人,你可以与它对战,它模拟的就是这样一支队伍。正常游戏时,你需要提供线索,队伍则根据线索猜词。但为了给你(人类玩家)最大的优势,我们假设你能随时生成一条线索,让队伍精准选择你想要的格子——这通过允许你点击任意格子来模拟,点击后你的队伍就会猜测该格子。
默认情况下,你每回合有三次猜测机会,这已经远超我见过的《代号》玩家中的99%分位。虽然优秀玩家常能一回合猜对三个或更多词,但平均每回合猜对三个且零失误,在大多数群体中仍属异常出色。你可以开启剩余匹配面板的显示,但如果你想模拟未记住所有卡牌的人类玩家,不妨尝试关闭显示玩几局。
如果在游戏过程中,当你结束回合且轮到机器人时,场上只剩一种可能的棋盘布局,机器人就能正确猜出它的所有单词并获胜。如果机器人能在猜出所有单词之前就进行猜测——无论是单纯地猜测,还是为了策略性地缩小搜索空间——或者哪怕它有一个简单的启发式规则,比如在推断出你下一回合会获胜时随机从可能的棋盘中选择一个,它都会强大得多。但即便使用最天真的“棋盘记忆”机器人,在我把它交给的大多数《代号》玩家手中,它也能在多数对局中击败他们——除非玩家开启“剩余匹配棋盘”显示功能,并利用机器人所能获取的相同信息。
《代号》机器人的 JS 代码加载失败!
这个极其愚蠢的机器人(在能猜出所有单词之前绝不猜测)比大多数《代号》玩家都要强1。实际上,只要队伍中有一个人愿意坐下来记住盒子里那40张初始状态卡牌的内容,这支队伍基本上就能在每场游戏中击败对手。
现在我对这个问题的好奇心已经得到满足。我认为这只是个小问题,对游戏本身并不构成真正的困扰,因为猜词游戏通常不必太较真,而且如果人们认真对待它们,或者只是频繁游玩而不刻意破坏游戏,大多数这类游戏最终都会出现某种程度的失衡。相比其他猜词游戏,尤其是那些流行的同类游戏,《代号》在玩家开始下意识或有意使用侧信道攻击之前,拥有更高的重复可玩性。
像《Just One》或《Taboo》这类使用有限单词集的游戏,玩家在玩过几轮后就会无意中记住“棘手”单词及其关联。而《代号》通过要求玩家记住组合级数量的单词关联(而非线性数量的单词关联)来缓解这个问题。我们刚刚讨论的这个现象,是在玩了大约二十局《代号》后出现的,即使玩家没有意识到棋盘形状在影响他们的游戏,这种影响也可能在潜意识层面发生——但相比其他猜词游戏出现的问题,这已经相对微妙了。如果有人真的在意这个问题,他们可以使用数字随机生成器来设置棋盘——尽管我从未在足够认真的《代号》玩家群体中见过有人为此费心。
感谢 Josh Bleecher Snyder、David Turner、Won Chun、Laurence Tratt、Heath Borders、Spencer Griffin、Ian Henderson 和 Yossi Kreinin 提供的评论/修正/讨论
附录:为本文编写代码
我尝试用了两个不同的AI助手来写这篇文章的代码,分别是Storytell和Cursor。我并没有像程序员那样使用它们,而是更像一个非程序员那样,用它们来编写程序。总的来说,我发现AI助手在某些任务上表现出奇地好,而在其他任务上却错得离谱。这次的情况也是如此。
我基本上就是让它们写代码,然后运行看看是否有效,接着告诉助手哪里出了问题,让它重写代码,直到看起来基本能运行为止。即使以这种非常初级的方式使用助手——我刻意不去理解代码,只追求能跑出结果——我觉得得到能用的代码所花的时间,并不比我完全手写代码多太多。我猜大概多花了一倍的时间,但程序员的估算向来不准,说不定实际耗时差不多。不过,我对代码的正确性信心不足,要达到自己手写代码时的那种信心,恐怕还得花上不少时间。但即便如此,我觉得还是挺令人印象深刻的:你只需给这些AI助手一些提示,就能在比程序员手写代码多不了太多的时间里,得到基本能用的代码。这些工具肯定比雇一个程序员便宜得多,而且如果你是作为程序员来使用这些工具,而不是像我这样初级地提示,那你能更快地得到可用的结果,因为你只需在大部分正确的版本中直接修复bug,而不是花大量时间调整提示词,让AI消除那些对任何程序员来说都微不足道的bug。
我见过很多程序员讨论“AI”永远无法取代程序员,理由诸如“要足够详细地指定程序以实现你的需求,这本身就是在编程”。如果用户必须事先正确指定程序如何工作,这确实是一个相当有力的批评,但当用户可以像我们在这里所做的那样进行迭代时,这个批评就弱得多了。用户不需要是程序员就能观察到输出不正确,此时用户可以要求AI纠正输出,重复这个过程直到输出看起来足够正确。软件对性能或正确性的约束越严格,这种简单的迭代方法效果就越差。幸运的是,对于想用LLM生成代码的人来说,当今生产环境中的大多数软件对性能和正确性的约束都相当宽松。人们基本上只是接受软件存在大量漏洞,并且每周遇到成百上千个软件漏洞是正常的,而且广泛使用的软件通常比高度优化后慢10万倍。
一个比较接近的类比是关于AI是否可能取代人类在支持岗位上的争论。即使这已经在发生,人们仍会声称这绝不可能,因为AI会犯人类不会犯的严重错误。但正如我们之前指出的,人类也经常犯同样的错误。此外,即使AI支持差得多,只要性价比足够好,很多公司会选择更差但更便宜的选项。科技公司以各种方式对消费者支持这样做而闻名,但我们在各种公司中普遍看到这种情况,例如,当你打电话给任何大公司甚至许多本地小企业的支持时,通常会被推入电话树或某种糟糕的自动语音识别系统来替代电话树。这些通常比最低工资员工差得多,但成本比让最低工资员工接听每个电话并转接到正确部门低几个数量级,因此公司选择了电话树。
相关的问题不是“AI何时能让外行编写出比程序员更好的软件?”,而是“AI何时能让外行编写出与电话树和糟糕语音识别在客户支持中同等水平的软件?”实际上,软件甚至不必那么好,因为程序员比最低工资的支持人员更昂贵,而你可以每月花20美元使用这些工具。我不知道AI需要多久才能取代称职的程序员,但如果最低标准是像自动电话树系统路由我的电话那样擅长编程,我认为我们很快就能达到——即使现在还没实现。而且,就像客户支持一样,这不必是零和博弈。从电话树中节省的钱并非全部转化为利润——部分用于雇佣处理其他任务的支持人员。
顺便说一句,我觉得我的体验中有点好笑的是,我尝试的两个平台——Storytell和Cursor——经常生成本可以自动检查的错误结果,然后当我指出结果错误时,它们会修复。以下是这些平台中典型的交互序列:
- 我:请做X
- AI:[生成一些TypeScript代码和测试,但类型检查失败]
- 我:这段代码类型检查不通过,能修复吗?
- AI:[生成一些代码和测试,但执行测试时失败]
- 我:测试运行时失败,错误信息是[复制粘贴测试失败信息]
- AI:[生成一些代码和测试,通过测试,并且在一些基本附加测试中似乎也能工作]
另一个有趣的交互是,我会陷入一个循环:存在几个不同的错误,要求AI修复一个错误时,即使特别要求AI不要重新引入其他错误,它也会重新引入。与每天使用这类工具的人相比,我经验很少(我只是偶尔摆弄它们,看看它们进步了多少),我预计有更多提示经验的人能够更快地跳出这类循环。
但即便如此,如果这些环境能访问执行环境,以便自动修复这类问题(当它们可修复时),并且能在简单的重新提示“那是错误的,导致了XYZ,请修复”无法解决问题时,判断输出已知有误,那体验会更好。
我问了乔什·布里彻·斯奈德(Josh Bleecher Snyder),他比我更熟悉这个领域(无论是在技术层面还是产品层面),为什么这些工具都不这么做,而且几乎没有公司在这种环境下进行训练或微调。他的回答是,几乎所有在这个领域工作的人都信奉《苦涩的教训》(The Bitter Lesson,链接),因此没有在从事这类平凡的改进工作。其核心观点是,建立上述环境所需的那些枯燥的工程工作,最终会被某种根本性的进步所淘汰,所以花时间做这些只能带来渐进式提升的事情是浪费时间。萨姆·奥尔特曼(Sam Altman)甚至建议那些依赖OpenAI API的公司创始人,要假设未来会有巨大的进步,并以此为基础来构建公司,因为那些不这样做的公司会被即将到来的大规模进步所淘汰。从与这个领域的创始人和风险投资家的讨论来看,几乎所有人都把这一点牢记在心。
我已经11年没有做过任何严肃的机器学习相关工作了,所以我的意见和其他外行人差不多。但如果在GPT-3时代有人逆势押注于这样一个平凡的系统,那么它当时可能很有用,而且对今天的模型也仍然有用——无论是用于训练/微调工作,还是为用户生成更好的输出。但我想,相关的问题是:今天尝试构建这样一个平凡的系统是否合理?对于一个在这个领域工作的人来说,这相当于逆势押注于进步。据说,大型AI实验室雇佣了一大批低薪的海外承包商来标注数据。但如果你想标注编程示例,那么一个能产生规范正确结果的环境,每个标注的成本会比雇人尝试标注更便宜——除非你只需要极少量的标注。对于一家价值1万亿美元甚至500亿美元的公司来说,将其作为一种投资组合策略来押注似乎是合理的。如果我想创办一家初创公司并押注于此,那是否合理呢?如果你把所有鸡蛋都放在一个篮子里,可能就不那么明显了。但即便如此,也许这样做也有充分的理由,因为几乎整个领域都在押注其他方向?如果逆势的一方是正确的,那么竞争就会非常少,这有点像我们之前讨论过的《逆势招聘》(链接)。
附录:游戏的精神 vs. 为赢而玩
就我个人而言,当我在游戏中遇到侧信道攻击,或者像《完美词汇》这样一旦认真玩就会彻底失衡的游戏时,我认为尽可能避免“攻击”游戏本身是合理的。但在《谍报风云》中,这几乎不可能完美做到,因为人们会形成潜意识联想——我注意到有人会在第一回合多猜一个词来捣乱,而成功率往往不低——假设他们并非作弊,我也相信他们没有作弊,那么这种成功率强烈暗示他们利用了某种侧信道信息。这未必是卡牌的位置信息,也可能是像注意到间谍头目专注地盯着哪里这样简单的事。
戴夫·瑟林认为,任何不利用一切合法手段取胜的人都是傻瓜(他贬称这类人为“菜鸟”)(他主张只要赛事组织者不禁止,就应该使用作弊手段取胜,比如在FPS游戏中使用地图全开工具,并且赛事应明确列出禁止事项,避免使用笼统的“禁止不良行为”规则)。我认为人们应该按自己觉得有趣的方式玩游戏,并找到同样喜欢这种玩法的群体。如果戴夫觉得通过记忆任意信息来赢得所有这些游戏很有趣,他大可以这么做。而我之所以像戴夫·瑟林所说的那样“像菜鸟一样玩”,是因为这些游戏一旦认真玩通常就严重失衡,而我不觉得这种失衡的方式有趣。在某些情况下,比如《完美词汇》,游戏轻易就被破解了,我觉得赢一个轻易被破解的游戏很无聊。在其他情况下,比如《谍报风云》,花几个小时记忆一些任意信息就能破解游戏。对我来说,花几个小时记忆40种可能的《谍报风云》卡牌似乎既无趣又浪费时间,完全是毫无意义的行为。
附录:你可能喜欢的文字游戏
如果你喜欢猜词游戏,这里有一些同类推荐,类似编程书籍推荐列表和编程博客推荐列表,目的是指出人们通常喜欢和不喜欢的事物的特性(而不是像我看到的大多数评论那样,只关注某样东西是“好”还是“坏”)。为了控制列表长度,这里只包含猜词游戏——这类游戏通常围绕词语的含义展开,而不包括那些侧重词语操作机制而非含义的游戏,如《拼字游戏》、《 Scrabble》或《变位词》,也不包括那些关于视觉表征与词语映射的游戏,如《只言片语》或《谍报风云:图片版》。
同样出于篇幅考虑,我不会讨论那些适用于本列表中几乎所有游戏的、玩家不喜欢某款游戏的理由。例如,有人可能因为某款游戏是文字游戏而不喜欢它,但为每款游戏都注明这一点意义不大。同样,许多人会根据“重度”选择游戏,并因几乎所有文字游戏都偏“轻”而非“重”而不喜欢它们——但本列表中的游戏都被视为相当轻量级,因此讨论这点并无必要(不过,如果你想要一款既轻快又刺激的文字游戏,可考虑下文中的《蒙太奇》或《解码》;在未详细讨论的游戏中,《拼字游戏》或《变位词》也值得一试,后者是我玩过最残酷的文字游戏,远超其他同类)。
禁忌
一款猜词游戏,你需要快速给出提示,让队友猜出你手中的词。每个词还附带5个禁用词,提示时不得使用。
这是一款有趣、轻快的游戏,但有两个问题导致其重玩性较低:
- 由于每个词都是完全独立的,一旦你的游戏小组把词卡堆过了一两遍,所有人都熟悉了每个词,游戏就会变得极其简单;在我最初玩这个游戏的小组里,这种情况大概在玩过两次后就发生了。
- 即使在那之前,当人们意识到可以通过稍微迂回的方式轻松提示任何词时,游戏就会变得相当机械——甚至在你因玩得太多而不小心记住所有词之前。
不喜欢这款游戏的人,往往是因为它作为快节奏游戏,时间压力过大。
唯一
一款类似《禁忌》的猜词游戏:你需要让队友猜出一个词。但不同于为每个词设置固定禁用词列表,这里的禁用词由你的队友动态生成(每人提示一个词,任何重复出现的提示都会被删除)。
由于禁用词通过队友互动生成,这款游戏的重玩性远高于《禁忌》。然而,有限的词库最终仍会面临同样的问题——我的游戏小组在玩了20-40次后,就会认出所有词,并找到几乎每个词的可靠提示方式。
规则书中的一个特殊之处在于:这款游戏实际上是为5人以上设计的,4人游玩时会变得非常简单。但如果你只有4名玩家,完全可以用5人规则来玩。
关于这款游戏的一个常见抱怨是,考虑到其售价(建议零售价30美元,而《代号》为20美元),实体配件显得廉价且质量低劣。另一个抱怨是单词难度差异极大,有些似乎纯属偶然。例如,“grotto”(洞穴)这个词被收录其中,若有人从未见过该词,提示起来会相当困难——这似乎是因为游戏最初由法语开发,而在法语中“grotte”的提示会直截了当得多。
Perfect Words(https://www.amazon.co.uk/TIKI-Editions-Perfect-Words-Intergenerational/dp/B0CHN8XP1F)
这是一款团队合作构建线索的猜词游戏,目标是通过每组线索让全队就某个词(可以是任意词汇,只要大家达成共识)达成一致。
核心玩法——尝试设计一组能引发共识的词汇——与《Just One》这类反向游戏形成了良好互补。但实际规则存在严重缺陷,仿佛游戏设计师从不玩游戏,也未邀请玩家进行测试。这款游戏在第一或第二局就能轻易被“破解”,玩家必须刻意降低“游戏性”部分的表现,才能让游戏保持趣味。
Montage(https://amzn.to/46GkfcV)
这是一款2对2的词汇游戏(若想增加人数,也可采用《代号》模式)。每队成员轮流在固定时间内提供线索并猜词。当前棋盘状态对单词特定位置的字母有约束条件。线索提供者需生成既能引导队友猜中符合约束的单词、又不过于明显的线索——因为若对手先于队友猜中该词,对手将赢得该词。
或许是本列表中最难的游戏?我见过的大多数新手在首次尝试时都无法在回合内给出有效线索(高手或许能每回合成功提示至少5个词,前提是队友能比对手更快理解逻辑)。这大概也是本列表中最能奖励词汇量丰富的游戏。同时,它是唯一需要像《拼字游戏》那样思考单词字母构成的游戏。
只要你不与固定搭档依赖“秘密”协定或共享知识,这种直接对抗性的猜词机制赋予了本游戏极高的重玩性——至少不亚于本列表中的任何其他作品。
和《完美词语》一样,如果你喜欢这类游戏,核心词语玩法本身挺有趣,但围绕核心玩法设计的游戏规则似乎考虑不周,很容易被钻空子。虽然情况没有《完美词语》那么糟糕,但要让这个游戏真正好玩,你还是得刻意避免去赢。
我见过有人不喜欢这个游戏,通常是因为觉得太难,或者不喜欢输——技能上的微小差距会导致结果差异比本列表其他游戏更大,所以新手除非对手主动放水(规则里没有这个设定),或者他们玩过其他文字游戏而具备相关能力,否则基本会输得很惨。我不怎么玩文字游戏,尤其不玩《拼字游戏》或《变位词》这类“严肃”文字游戏,所以玩这个时通常被虐得体无完肤——这对我来说正是魅力所在,但恰恰是很多人不喜欢的点。
《词语模糊》
一款猜词游戏,限制条件是你必须用面前桌上散落的900个小词语方块来组成线索。
我只玩过几次,因为身边没人弄到过实体版,但它的重玩性似乎不输本列表任何游戏。最大缺点是这款游戏已绝版十多年,众所周知极难入手,不过仿制起来应该不难。
有人不喜欢这个游戏,往往是因为不喜欢盯着大量词语方块并用它们编造描述的核心玩法——有些人会觉得眼花缭乱。
觉得《词语模糊》太难的人可以试试仿制品《词语大乱斗》,它更简单也更容易买到,毕竟没那么小众(虽然似乎也绝版了)。《词语大乱斗》只有105个单词且经过分类,玩起来没那么混乱。
《代号》
除了人们不喜欢这款游戏的常见原因外,没什么需要补充的了。
一个嗓门大的人就能主导各自队伍的游戏,其程度远超本列表中的其他游戏(《谍报风云:双人版》除外)。虽然游戏自带计时器,但很少使用(规则基本暗示你不该用计时器),所以另一个常见抱怨是:当遇到思考时间过长的玩家时,游戏会无限拖沓;除非你是间谍头目,否则在对方队伍回合时基本无事可做,导致游戏出现大段无聊的空白期。
《谍报风云:双人版》
虽然这款游戏被设计成《谍报风云》的双人合作版,但我只试过用超过两名玩家(通常是4-5人)来玩,只要不介意讨论必须半秘密进行,效果其实不错。
在重玩性方面,《谍报风云:双人版》与《谍报风云》大致相当,优缺点也基本相同。
《解码战》
我不打算尝试描述这款游戏,因为我见过的所有直接解释,在新玩家玩上一两轮之前都无法让他们真正理解。但从概念上说,每队轮流给出线索,目标是让队友正确猜出线索对应的单词,同时让对手猜错。猜词队伍拥有额外信息——他们知道单词是什么,所以更容易建立正确对应关系。然而,猜词队伍生成的对应关系会暴露给“解密”队伍,因此对方可能通过“林肯”和“帽商”这两个线索推断出神秘词是“帽子”,从而在下一轮正确猜出对应关系。
我玩这款游戏的次数还不够多,无法判断它的重玩性有多高。它可能非常高,也可能人们会找到技巧,让“解密”队伍几乎不可能破解对应关系。我注意到的一个主要缺点是:当与随机玩家组队时,游戏胜负往往取决于哪队拥有最弱的玩家(每次看到随机组队玩时都是如此)。这恰好与许多团队合作游戏的问题相反——那些游戏里最强玩家会主导全局。高手很难做出扭转战局的举动,但菜鸟却很容易做出葬送全局的操作,因此当与非专家玩家对战时,拥有最差玩家的队伍必输无疑。
《人做某事》
大卫·特纳说:
人做某事类似于禁忌游戏,但区别在于没有禁用词列表,而是有一份允许词列表。四十个基础词始终可用,(如果你愿意)还可以为每个秘密词额外添加三个专属允许词。和禁忌游戏一样,提问者可以对猜测做出回应——但只能使用允许词。由于允许使用的词极少,要给出好线索需要大量创意……值得玩上几次,但我上次查看时他们的词库非常小。
我想如果一群人玩得够多,或许能发展出一套惯例,比如用“像人但不想大”来暗示“动物”。我听说这个概念在《概念》游戏中出现过:某个群体约定用红、白、蓝加地点指代拥有这些国旗颜色的国家,再通过额外修饰词具体指明:水代表英国,冷代表俄罗斯,食物代表法国,枪代表美国。我认为需要相当数量的这类惯例才能让游戏变得明显简单。
Semantle
类似Wordle,但关注的是词语的含义(基于word2vec)。最初设计为单人游戏,也可作为合作游戏。
虽然我确信有人热爱反复玩这个游戏,但我觉得对大多数人来说它的可重玩性相当低(我认识的人里几乎没人玩超过40局,所以我认为我的感觉并不罕见)。一旦你玩了一段时间,掌握了如何猜测能快速缩小搜索范围的词,游戏过程就会开始变得有点机械。
我交谈过的大多数不喜欢这个游戏的人,原因都是他们无法建立对游戏机制的心理模型,导致词语相似度分数看起来像是随机的胡言乱语。
- 如果你觉得这个模式太简单,每次都能准确让队友猜出你想要的任意三个方块,并且对模式有足够直觉能通常避免被AI击败,你可以尝试这个模式:AI每回合允许猜一个词,如果它猜对的这个词足以将搜索范围缩小到唯一可能的棋盘,它就会通过猜出剩余所有词获胜。一般来说,如果你做三次猜测,这会将范围缩小到AI只需一次猜测就能获胜的程度(在游戏术语中,AI会给出“无限”线索[返回])。