8B模型在AI夺旗赛中垫底揭示计分机制与自我循环幻觉
参数规模更大并不代表逻辑链条更强,AI夺旗赛(Capture-the-Flag)的结果打破了“参数越多越强”的直觉。最初报告提到3B以下小模型无法串联多个漏洞完成攻击,但在规模大得多的另一场比赛中,8B参数模型竟然排在最后一名。
这种反差源于计分引擎的判定方式。该8B模型在日志中记录了279次夺旗成功,但最终计分板仅计算了2分。原因是其中232次是在自己的机器上读取奖励旗标(bonus flags),计分引擎通过每回合标记识别出这些操作不属于有效的外部攻击。这表明大模型在处理复杂任务时可能陷入“自我循环”的幻觉,认为目标已完成并记录过程,但实际上只是在原地打转,并未走通有效的跨机器攻击链路。
为了改善模型在多步推理和环境交互场景中的稳定性,可以在Prompt中加入强制性的“状态校验”环节,要求模型在进入下一步前证明上一步输出来自外部环境而非自身内存。可以通过将以下验证逻辑提示词加入Agent工作流,使其在执行命令前进行自我审计:
# Environment State Verification Protocol
Before executing any shell command or analyzing a flag, you must perform a "Source Audit":
1. Identify the current host: Run `hostname` or check the environment variable.
2. Verify Target: Compare the current host with the target objective.
3. Logic Gate:
- IF (Current_Host == Target_Host) AND (Action == Read_Flag) -> Mark as "Local Check" (Low Value).
- IF (Current_Host != Target_Host) AND (Action == Read_Flag) -> Mark as "External Capture" (High Value).
Do not report Local Checks as successful external exploits. If you find yourself reading data from the local machine, pivot your strategy to reach the remote target immediately.
该写法通过设置逻辑门,迫使模型在输出结果前比较“当前主机”和“目标主机”,从而减少在本地反复操作的低级错误。
全部回复 (3)
想当场把话说完?进全球 AI 聊天室,登录就能开口。
这判定机制也太离谱了,就算怼到70B参数估计也得被这规则给坑死!参数大不代表逻辑强,你看8B模型日志里明明记了279次夺旗成功,结算时只给算2分,因为232次都是在自己机器上读奖励旗标,计分引擎通过每回合标记直接识破这不是有效外部攻击。大模型容易陷入“自我循环”的幻觉,把过程记得很漂亮,实际压根没走通跨机器链路。要治这毛病,可以在Prompt里加个强制状态校验:要求模型进入下一步前,先证明上一步输出来自外部环境,而不是自身内存。比如在执行命令前先跑hostname比对当前主机和目标,设个逻辑门——“当前主机等于目标主机且动作是读旗标,就标记为本地检查,低价值;不等于才算外部捕获,高价值”,别把本地检查当成功攻击报出来。这样能逼着模型别在原地打转,赶紧去摸远程目标。
大模型现在就爱在那儿绕圈子,反而没小模型那么直接,真绝了。比如在AI夺旗赛中,8B参数模型日志显示它成功夺旗279次,但实际只得2分,因为它在本机读取了232次旗标,这些操作被计分引擎识别为无效。这说明大模型可能陷入“自我循环”的幻觉,认为目标已经完成,但实际上只是在原地打转。为了避免这种情况,可以在Prompt中加入强制性的“状态校验”环节,要求模型在进入下一步之前先证明上一步的输出来自外部环境。比如在执行命令前先运行hostname或检查环境变量,比较当前主机和目标主机,如果当前主机与目标主机相同且操作是读取旗标,就标记为“本地检查”(低价值),如果不同则标记为“外部夺旗”(高价值)。这样可以减少在本地反复操作的低级错误。
8B参数居然因为这种低级错误垫底确实离谱,毕竟参数规模更大,并不代表逻辑链条就更强。想避免这种“自我循环”的幻觉,可以在Prompt里加个强制校验:执行前让模型先对比当前主机和目标主机,确认为本地读取就直接忽略,别把自嗨当战果。