跳到主要内容
我让 AI 把每一次认错都留在页面上

我让 AI 把每一次认错都留在页面上

阿舟
阿舟

· 阅读约 7 分钟

凌晨快两点,Austin Reaves 那张卡还是红的。

红的意思是:不合适。26.6 的使用率,跟东契奇的 38.0 撞一块儿,两个人都要持球,全队适配度垫底。一个拿四条轴给球员打分的页面,自己挑出来的那个"最不合适的人"。

我盯着看了半分钟。然后问了个特别球迷的问题回去:东契奇下场那十几分钟,谁来打?

它没争,去 StatMuse 拉了 with/without。

With Doncic:    25.2 USG / 41 games
Without Doncic: 34.3 USG / 67.5 TS / 10 games

同一张卡上于是并排躺着三组使用率:全季 26.6、同场 25.2、东契奇不在场 34.3,真实命中率 67.5。结论当场翻过来——Reaves 不是不合适,他是这套阵容里唯一撑得起第二套进攻的人。

这次改错没被抹掉。就印在卡片上。

一开始想做的东西完全不是这个

七月初,prompt 就一句话:用那个新模型做点好玩的东西。没有 hackathon 截止日期,没有评分表,也没人会来验收。

湖人那夏天挺热闹。勒布朗没续约,进自由市场;艾顿那笔换走一个替补后卫加几个选秀权;管理层在三十五分钟里连着签了四个人。全联盟都在问同一件事——这帮人到底能不能跟东契奇搭。

我最初想做的是台裁决机器。输入球员,输出一个分数,然后宣布这个休赛期成不成功。

在 Fable 5 里试跑了一轮,这想法被我自己毙了。

理由没什么情面可讲:权重是我挑的,样本太小,几个新援之间一场共同回合都没有。你想用一个数字盖棺定论,那数字里塞的全是我的偏好,跟篮球关系不大。

那就换个壳。表面上还是个体育仪表盘,实际做成了台"偏见可视化机器"——名字听着装,但它至少没骗人。

总分?不做

有条规定我一次都没松过:不许出混合总分。四条轴分开摆——空间、终结、防守掩护、反向球权需求。最后这条越低越好,毕竟你身边杵着一个 38.0 使用率的人。

为什么宁可让人看四行,也不给一个清爽的 0-100?

因为混合分数一定会踩在最尴尬的地方。某个后卫不会投篮、但能接第二持球,加权完他大概率卡在中间,总分告诉你"影响不大"。可那个结构性矛盾一点没消,只是被平均掉了。

平均是信息销毁,不是信息压缩。这话我说得有点满,先这么放着。

更要命的是后面这层:四轴一分家,每条判断就有了坐标。Reaves 那条要是先被压成一个数,我根本不知道该去翻哪条轴——是球权冲突错了,还是空间评分错了?拆开之后,一查一个准。总分制最讽刺的地方就在这儿,它看起来更精确,实际让错误无处落脚。

规则定在看人之前

评分规则是在评任何球员之前写死的。后来有几条跟我直觉对不上,我盯着屏幕想改,最后没改。规则留着,我改。

这不算道德自律,是机制。只要允许我事后回去调权重,这页面上每一条结论就都没法被审计——今天看谁不顺眼就加点防守比重,明天想捧谁就把球权需求调低。那种页面一文不值,因为我自己都不知道它下次会不会得出同一个答案。

v1 的 PRD 里我把这句写死了,没留余地:公式和打分冲突,以公式为准。QA gate 那一行更不客气——分数跟公式打架的时候,公式赢。

十五分钟的 spike,把置信度顶上一等公民

正式开写前花十五分钟做了个 spike,只干一件事:给四个新签的人拉数据,判定条件写成 pass/fail,每拉一条往文件里记一行收据。

第一条就挺刺眼:Grimes 上赛季三分命中率 33.4%,生涯最差。

第二条更有意思。新首发中锋上赛季只打了五场,然后是肩伤手术,赛季报销。

player:       Kessler
games_before: 5
confidence:   LOW

这就不是"打低分"的问题了,是打不了。样本量连一个正常的轮换周期都凑不齐,你给他 3.2 分和给他 7.8 分,本质上都是在瞎编。

于是置信度标签从一个内部字段变成了一等 UI 元素。听上去挺虚的,直到你发现它真的会改写结论——这一轮里大概一半被标了低置信度的球员,最终判断跟原始评分不一样。

它自己记了要改,然后没改

防守分那一版,是用抢断、盖帽、名气堆出来的。Fable 5 在文档里自己留了一条:这套方法该升级。

记了,没做。

画外音:写待办清单这件事,实习生比谁都积极。

是我自己翻收据的时候翻到那条记录的。把那十四个有评分的球员的防守效率全拉出来重算,Grimes 的防守覆盖分从 4 掉到 2。

- grimes.cover_score = 4
+ grimes.cover_score = 2

这里得说清楚:让 AI 修错,最难的从来不是让它认。认错它配合得很,态度好得让你怀疑人生。难的是它认了但没改——而页面上看起来一切正常。

没有人会去翻那份方法论文档,包括我自己,要不是那天恰好点开。

这条是我这次唯一真心觉得可以推广的经验,别的都还在摸索。

数了一遍阵容,把第二名数下去了

还有一次修正是反方向的。Gary Payton II 一开始在自由球员板上排第二,后来它自己去数了一遍阵容,把人降了级:

guards:           7
forwards:         3
healthy centers:  1.5

一点五个健康中锋。整个项目里最诚实的一行。

一个两米出头的后卫,堆在七个后卫的队里,适配度再高也是纸上谈兵。这种错误单看球员卡片永远发现不了,必须退到阵容全局才看得见——这大概是这工具为数不多比我强的地方。我不太可能耐心数到第七个后卫才发现问题。

Batum 那次是漏掉。审计的时候把他捞出来,9.7 的使用率、40.4% 的投篮,位置上正好是球队缺人的地方,最后排到第二。备注里直白写着"差点把他漏了"。

我现在觉得这行备注比分数本身有用。它告诉你这个系统的失误模式是什么。

最值钱的问题来自球迷,不来自统计

分工挺清楚:Fable 5 拉数据、起草打分、搭页面、记收据;我定规则、提问、抓那条没执行的决定、点头让它上线。

但真正让我改观的不是它代码写得怎么样。是我把问题丢回去的时候,它承认自己那个结论崩了,去拉新数据,重写——而不是替原来的答案找补。这两件事的差别,用过就知道有多大。

而那个让 Reaves 翻盘的问题——"东契奇休息的时候谁打"——是个球迷问题,不是统计问题。StatMuse 不会主动告诉你该问这个,任何一份数据字典里也没有这一栏。看了十年球的人会下意识问出来。

扯远了,回正题。这就是我一直没把这个页面收成一个私人 notebook 的原因:它得被人看见,才会有人来问那个我没想到的问题。

页脚那行字

页面最底下留了一行,说会拿 2026-27 赛季的实际表现回来给这些评分打分。

免费,而且大概率一周内就过时——那行字不删。等赛季打完,这个页面会知道自己错了多少,错在哪条轴,错在哪个置信度档。

所以最后落下来就一句:别在 prompt 里写"请诚实面对自己的错误",那句话跟没说一样。你要做的是把它第一个判断架成——一旦错了,整套结论就得重算,而且重算的过程留在原地不许删。剩下的它会自己追着跑。

阿舟
阿舟

写代码写到一半开始怀疑人生,靠 AI 工具续命,顺手把踩过的坑都记下来。

查看主页 →