训练一个能够游玩《杀戮尖塔》(StS)的AI智能体,首要难题是构建训练环境。与人类可以从指令和少量样本中学习不同,智能体需要经历数万局游戏,才能从结果中归纳出策略。
因此,第一步就是让游戏运行速度足够快,以便完成如此大量的对局。我面前有两条路:一是使用合成环境,如sts_lightspeed或decapitate-the-spire,然后补全缺失的功能(比如我想要的静默猎手角色);二是基于ForgottenArbiter的spirecomm和CommunicationMod,直接与游戏引擎交互,并通过加速网关让游戏快速运行。
一个意外发现:编码智能体既无法估算工作量,也没有时间概念。我让Claude估计两条路的工作量,结果得到了第一个重要教训——它们对工时估算毫无头绪。事后看来这很合理:训练语料中虽然有大量将任务拆解、估算、汇总的例子,但那些估算是针对人类员工的,针对编码智能体完成特定任务所需时长的记录少之又少。更糟的是,Claude对时间毫无感知,它可能工作了约20分钟,却声称自己干了五个小时。
在几次试图纠正“不,那只花了20分钟”无果后,我意识到这是在缘木求鱼。于是我在会话开始和用户提示提交时加入了这样一个钩子:
date '+[%Y-%m-%d %H:%M] Always start every text response with [YYYY-MM-DD HH:MM] using the time shown here. This includes after code blocks.'
这个钩子虽然有些浪费(每轮对话约增加30个token),但至少让Claude不再用虚假时间误导我,也让我能基于实际耗时进行推算。
热门跟贴