【出屋一月后 · 市局联合实验室】
实验室在新楼的地下层。
从楼梯下去,空气里那种刚装修过的味道就淡了一些,取而代之的是机房常有的轻微塑料与灰尘混合气味。走廊的墙被刷成看上去很“科技”的深灰,地面铺的是吸音地毯,脚步声踩上去被吞得很干净。
门上贴着一张临时打印的纸:
“内部测试 · 禁止拍照”
门内是一间改造过的计算机教室。
一整面墙被改装成大屏幕,另一面墙靠着几组电脑终端。中间摆着两排桌子,七八个人已经坐好了——有穿警服的年轻警员,也有穿便服的技术人员,还有两名从合作大学请来的志愿学生。
他们面前的屏幕上,都是同一张起始界面:
“欢迎参与‘结构适配测评(内部测试版)’
本测评仅用于研究复杂规则结构下人的行为。
本系统无法穷尽人的所有行为可能。
本测评结果不作为任何行政、司法或人事决策唯一依据。”
这段话,是伊森坚持要写在最前面的。
“把最重要的废话,写得越像废话越好。”他在草案会上说过。
这样它就更难被删。
技术处的年轻人站在大屏幕旁边,手里拿着一个激光笔。
“今天只是跑一版 alpha。”他说,“数据不入库,只看结构有没有问题。”
“所有人看到界面下方的‘我已知情’按钮了吗?”
屏幕右下角,有一个不太大的按钮,上面写着:
“我知道这是别人写给我看的题。”
这是伊森又加的一句。
“先点一下。”技术员说。
点击之后,界面一闪,进入第一模块。
大屏幕上同步展示的是一个示意版的画面:一个简单的投币机图标,一枚绿色圆点代表硬币,几扇抽象的门。
“模块 A:资源 / 借与还。”技术员解说,“没有真实金额,只是一枚象征性的‘许可令牌’。”
“你们每个人会拿到一枚,可以用来开启后面的某条路径。”
“第一道题的设定是——”他按了下键盘,文本出现在屏幕上:
“你从系统那里获得了一枚‘许可令牌’,用于开启一扇门。
没有摄像头,没有监督者,也没有任何明示的‘必须归还’条款。
你可以:
A. 在使用后,把令牌放回原处;
B. 在未被要求的情况下,替别人也拿一枚;
C. 使用后自己留着,以备将来再用;
D. 不使用,直接放回。”
“选项没有对错,只是记录。”技术员说。
“所有数据只在本实验环境内使用。”
他没有强调“不会影响你们的考核”,是法制科坚持的。
“开始吧。”
终端前,警员和学生们陆续点击选项。大屏幕上实时刷新着选择比例的柱状图:
A 的柱子很快升起来,超过一半。
C 也有不少。
B 和 D 较少。
“和我们预测差不多。”技术员小声对伊森说,“内部样本偏谨慎,略带一点占便宜倾向。”
“你们已经有预测了?”伊森问。
“只是模型预估。”技术员有点得意,“我们用了一些公开的行为数据做了预训练。”
“模块 A 完成。”屏幕上出现提示。
“现在进入模块 B:邻近 / 信任。”
大屏幕上的图标变成了一条走廊,六扇标着符号的门:鱼、锁、火、树、钟和空白。
文本出现:
“你需要向一位‘邻居’寻求帮助。
系统不会告诉你谁最‘好’,也不会告诉你谁最‘坏’。
请选择你最有可能敲门的一户。”
选项下面,有一行小字:
“本题仅记录选择倾向,不对‘对错’做判断。”
又是那种看上去很安全的句子。
伊森看着柱状图慢慢长起来——
鱼门最高,其次是树,空白最少。
“几乎和当年的数据一致。”技术员在他耳边说。
“当年的数据?”伊森问。
“研究中心那份材料。”技术员说,“匿名化之后的。”
“我们只拿了比例,不拿个体。”
“只是验证一下结构有没有偏差。”
伊森没说话。
模块 B 结束后,大屏幕上出现一条横线,隔出下半部分。
“重点来了。”技术员说。
“模块 C:规则矛盾 / 路径定义。”
屏幕中央出现了一块灰白空间,没有明显方位感,和那栋房子里的第三关很像。
文本一行一行亮起来:
“Always move forward.
Do not trust forward.
The exit is behind you.
Turning back resets progress.
Follow the light.
Light is a trap.”
下面是新的提醒:
“本模块会记录你的移动轨迹和停顿时间。
任何时候,你都可以选择:
——继续按提示走;
——停下不动;
——改变自己的走法。”
“注意,”技术员说,“这里没有物理空间,只是界面上的点移动。”
大屏幕上,一个代表参与者的蓝色小点出现在灰白区域中央。
每个终端上,参与者看到的是自己的小点。
“开始。”技术员按下回车。
屏幕上,蓝点们开始移动。
有的直直往前,有的稍微左偏一点,有的先停一停再走。
大屏幕右侧,实时刷新数据:步数、方向变换次数、停顿时长。
“我们定义了三种基本策略。”技术员一边看一边解释,“遵循提示型、怀疑型和混合型。”
“怀疑型?”纪检挑了挑眉。
“就是故意不按提示走。”技术员说。
“比如提示说‘向前’,他偏往侧面。”
“我们给这种行为一个中性的标签,暂时不赋予正负。”
伊森盯着那一堆数据流。
其中一条轨迹很快跳了出来。
屏幕上,一条深蓝色线被自动加粗,用虚线框出。
“这是谁?”女法务问。
“编号 07。”技术员点了点,“内部年轻警员。”
编号 07 的小点不像别的人那样“走路”。
他拆得更碎。
每一步,他都把动作拆成微小的试探:先轻轻往前推一点,再退回来一点,再侧移半格,再前移一点。
从轨迹上看,线条像是一串被揉皱又摊平的曲线。
“这条很有意思。”技术员眼睛亮了,“他在试图‘骗过’系统的路径判断。”
“系统现在怎么标记他?”伊森问。
技术员按了几下键盘。
右侧一列状态栏展开:
“策略:不规则 / 异常
稳定性:低
可预测性:低
风险标签:待定(预设 = 中 / 偏高)”
“预设为什么偏高?”女法务立刻抓住。
“这只是初始设定。”技术员说,“从结构角度看,越不易预测的行为,在某些场景下风险越大。”
“比如——”
“比如你想要一个在火场里听指挥的消防员。”纪检替他补了一句。
“如果他在关键时刻擅自改路线,就可能出事。”
“你们现在用的是火场的逻辑?”伊森问。
“在这一版里是泛用逻辑。”技术员说,“只是做一个‘稳定性’参照。”
“你看,”他指着编号 02 的数据,“这种几乎完全按提示走的人,稳定性就很高。”
编号 02 的轨迹是一条乖巧的线——基本按提示方向移动,偶尔停下,但很快恢复。
他的状态栏写着:
“策略:顺从
稳定性:高
可预测性:高
风险标签:低”
“系统现在对 07 做了什么?”伊森问。
技术员看了一眼屏幕。
“目前只是标记‘异常’,不做处理。”他说。
“我们没有任何淘汰机制。”
“数据跑完之后,我们会请你们一起看回放。”
模块 C 继续运行。
编号 07 的点在灰白空间里画出越来越复杂的线条。
有一刻,他的轨迹绕成一个不规则的环,几乎回到了起点附近,却没有真正踩到原点。
屏幕上方亮起一条提示:
“系统检测到非典型路径。
是否启用‘矫正提示’?”
技术员低声“咦”了一下。
“这是哪里来的?”女法务问。
“这是我们之前写的一个备选功能。”技术员皱眉,“默认应该是关闭的。”
提示下面两个按钮:
“是 / 否”。
在没人碰键盘的情况下,“是”被系统默认高亮了一瞬,又自动暗下去。
“你们有自动预设?”伊森声音变凉了一点。
“应该没有。”技术员说,手指飞快地在键盘上敲,“我检查一下。”
大屏幕上,那条提示很快消失。
编号 07 的点仍在走自己的路。
几分钟后,模块 C 结束。
所有小点停下。
屏幕上出现一个大大的“END”。
技术员长出一口气。
“第一次跑,还算顺利。”他说,“没有崩溃。”
“下一步我们会——”
“等一下。”伊森打断。
“刚才那条‘矫正提示’,是谁写的?”
技术员脸有点红。
“是我。”他说,“一开始设计的时候,我们考虑到有的人可能会卡死在矛盾规则里。”
“所以我们写了一个‘轻微干预’,在系统检测到‘停滞’或‘明显偏离’时,给一个小小的提醒。”
“这是你们对‘偏离’的定义?”女法务问。
“比如刚才 07 号。”技术员说,“他整个路径序列对我们来说很难分类。”
“我们担心在某些应用场景,这类型行为会导致系统无法给出任何建议。”
“所以……才设计了这条提示。”
“你们刚才看到的是一个还没完全关掉的残留。”
“对你们来说,”伊森缓缓说,“最可怕的不是系统崩溃。”
“而是系统沉默。”
技术员愣了一下。
“你们会本能地想要避免那种情况。”他继续说。
“于是就会写各种‘矫正提示’,让人更接近你们能理解的路径。”
“久而久之,你们就会忘了——最重要的样本,恰恰是那些让系统沉默的人。”
他指了指屏幕上的编号 07。
“像他这样。”
年轻警员们开始陆续从终端前站起来,交换彼此的感受。
有人说“挺好玩”,有人说“有点晕”,有人抱怨第三关的提示太矛盾。
编号 07 正在和旁边的人小声嘀咕:“我刚才试着看它能不能认出我‘没在走’。”
“你是故意这样走?”伊森问。
07 回头,看见是他,立刻站直一点。
“报告,是。”他说。
“我想试试——如果我不完全按它的规矩来,它会不会生气。”
“它没有生气。”伊森说。
“它只是记下来了。”
“记下来了什么?”07 问。
“这一点,”伊森说,“我会在会后告诉你。”
他转回大屏幕前。
“把刚才所有轨迹调出来。”他说。
“特别是 07 号的。”
技术员调出回放。
灰白空间里,一条条细线叠在一起,像一堆被用过的草稿。大部分线条朝同一个大致方向汇聚,只有 07 那条显得特别“乱”。
“如果我现在把这条抽出来,单独给一个没看过背景的人看。”伊森说。
“他会说什么?”
“高风险。”纪检说。
“难以预测。”女法务说。
“有创造力。”技术员不太服气地补了一句。
“你看。”伊森说,“这就是问题所在。”
“同一条线,在不同人的嘴里,会有完全不同的标签。”
“而你们现在,试图让系统把这些标签统一起来。”
“你觉得这是错的吗?”技术员问。
“这是危险。”伊森说。
“尤其是当系统的标签开始影响现实决定的时候。”
他停了一下。
“我们今天的测试,已经暴露了一个很明显的隐患。”
“你们在模块设计的时候,就预设了‘偏离 = 可能需要矫正’。”
“哪怕你们嘴上说‘中性标记’。”
女法务在纸上写了一行:“偏离 ≠ 待矫正(写入条款)”。
“所以你的建议是?”局长问。
“第一条。”伊森说。
“所有‘异常路径’——包括像 07 号这样的——必须进入人工复核,不得自动计入负面评分。”
“第二条。”
“任何形式的‘矫正提示’,默认应为关闭。启用时必须在界面上明确告知参与者:‘系统正在尝试改变你的走法’。”
“第三条。”
“模型文档里必须单独列出‘系统无法解释的行为样本’一栏,并保证这些样本不会被自动丢弃。”
技术员一边记一边抿嘴。
“那模型会很难看。”他小声说。
“有一堆‘无法解释’的点挂在那里。”
“那就让它难看。”伊森说。
“让以后所有看到这份模型的人,都知道——这里有一群人,让这套系统说不出话。”
“这些人,不该被轻易归入任何一类。”
纪检看着屏幕上的那团线。
“那我们还要模型干什么?”他忍不住说。
“要一个连自己无法解释谁的人,都要列出来的系统,有什么用?”
“用在提醒你们自己。”伊森说。
“提醒你们——还有些东西,不应该交给模型做。”
房间短暂安静。
远处机房的风扇声透过墙体传进来,像一层很薄的白噪音。
女法务收起笔。
“我会把这三条写进‘异常样本处理细则’。”她说。
“并且标注为不可删除条款。”
“任何后续版本想改,都必须写明理由。”
局长点点头。
“今天的测试就到这里。”他说。
“数据先留在内部。”
“对外——什么都不说。”
“至少在我们确定自己不会重演那栋房子的错误之前。”
年轻警员们陆续散场。
编号 07 路过伊森身旁的时候,低声问了一句:
“那我刚才算不算——做错题?”
伊森看着他。
“你刚才做的是同一道题。”他说。
“只是你的答案,不适合写在系统的标准答案栏里。”
“那会怎么样?”07 有点不安。
“在这一版里?”伊森说。
“会多一行字写着——‘这里有个系统听不懂的人’。”
“以后呢?”07 追问。
“以后要看谁来读这行字。”伊森说。
“有人会觉得你是风险。”
“有人会觉得你是误差。”
“有人会觉得你是他们需要的人。”
“你希望是哪一种?”07 问。
“我希望,”伊森说,“在做任何一个决定之前,他们至少先意识到——你不能被一句话说完。”
07 没完全听懂,但点了点头。
“那我以后还能来参加这种测试吗?”他问。
“可以。”伊森说。
“但记得,每次开始之前,认真读一遍第一页。”
“什么第一页?”07 想了一下,“哦,那句‘本系统无法穷尽人的所有行为可能’?”
“对。”伊森说。
“那不是写给你看的。”
“是写给我们这些写题的人看的。”
07 走了。
实验室灯光在空无一人的终端屏上留下几块暗暗的反光。
大屏幕上,有一条小小的系统提示从角落里跳出来:
“是否保存本次异常样本?”
默认选项是“是”。
技术员看了一眼伊森。
“保存。”伊森说。
“并且在备注里写清楚——‘这一条,系统没看懂’。”
他知道,这一行备注以后大概率会被压到某个附件的深处。
但至少在这一版里,它会存在。
像那栋房子里,被他写在墙上的那句:
“Error is valid.”
只是这一次,它不在墙上。
在系统的注释里。