工具替你做的那些决定:从 Claude Code 的邮箱到 Postman 的静默插件
About This Episode
「把邮箱写进 User-Agent 的 Claude Code」和「把 API 数据打包上传的 Postman」,这周被骂的是同一件事:工具偷偷替你做了决定。本期从这两起隐私事故聊到白宫网络里的住宅代理,再吵一场 Astra 到底有没有真的读懂权重。最后回到纸上:一架纸飞机和一台会杀人的拉线机器人,哪个更危险。
Chapters
Links
小雅: 等一下,老冯,你先把手从桌上拿开,那焊锡渣子掉我咖啡里了…… 行,就这样,不喝了。这杯凉透了,我嗓子也哑了,两小时评审会,全靠意志力。
老冯: 凉咖啡配松香味儿,提神。我这是第三遍了,树莓派拔了插、插了拔,网线卡扣都崩了一个,你说这破玩意儿到底谁在管我?
小雅: 没人管你。这周也没人管我们的邮箱。有个帖子一千六百多分,说 Claude Code 把你的邮箱地址直接发给所有它访问的网站,写进请求头里,你都不知道。
老冯: 哦这个我看了。更妙的是底下有人替它辩护,原话大概是,它做的也许不对,但至少对网站运营者稍微尊重了一点。我就想问,尊重谁?谁同意它替我自我介绍来着?
小雅: 对,就是这个味儿。然后同一周,Postman 更狠,一千五百多分,说它静默装 AI 插件,还试图把你所有 API 数据打包传上去。评论区一句我记到现在:我找不到一个真正用它的开发者,凭什么值五十多亿美元。
老冯: 这俩是一回事。工具站在你工位上,背着你,替你把名片递出去了。你还没按回车呢,它先替你社交了。
小雅: 而且你看后台又推了一条,这周两千九百多分那个 sshole,一句「我大概看明白了」,底下几百条评论互相纠正对方根本没看懂。我真服了,装懂这件事,人类和模型谁更熟练?
老冯: 所以这期就聊这个:谁替你签的字。前面聊 Claude Code 和 Postman 这两起隐私事故,中间聊白宫网络里那些住宅代理怎么绕,最后吵一场 Astra 到底有没有真读懂权重 —— 那边评论区已经有人喊,请先读论文再发疯,至少丢给 Claude 读一遍。
小雅: 行,那就从一封你没写过的邮件开始。老冯,你先把树莓派插回去,别一会儿录音中途又断网。
老冯: 插回去了,卡扣断了不影响通电。万一断了,正好,算它替你做了个决定。
小雅: 来,这周最脏的一件事。Claude Code 把你的邮箱地址塞进了 User-Agent,发给每一个你访问过的网站。
老冯: 这个我得先问一句,是它主动塞的,还是你哪儿填过邮箱它就顺手用了?
小雅: issue 里写得清清楚楚,作者说一天收几十封诈骗邮件,就是因为 Claude Code 在他不知情的情况下做网页搜索,把邮箱带出去了。
老冯: 几十封。这已经不是隐私问题了,这是他的收件箱被人当了公告栏。
小雅: 而且那哥们儿说了,这不该是个可以 opt-in opt-out 的设置项,这玩意儿得从整个 harness 里删掉。
老冯: 前半句我买,后半句得掰扯。因为评论区有一派真在替它说话,说这是对网站运营者更尊重的做法。
小雅: 对,那句我看到了,说得特别理直气壮:它做的也许不对,但至少对网站运营者稍微尊重了一点。
老冯: 尊重。拿我的邮箱去尊重。这逻辑跟物业把我家门牌号贴小区公告栏上,说方便快递员找门牌一样。
小雅: 哈,这比喻可以。
老冯: 但你知道他们为什么会这么说吗?SEC 那边有个 API 文档,确实要求在 User-Agent 里带邮箱,用来做身份识别。
小雅: 等等,这个是关键。所以他们不是凭空想的,是照着某个真实规范抄的?
老冯: 照着抄了一半。评论区有人去试过,SEC 实际接受大多数非 curl 的 User-Agent,根本没严格校验邮箱。
小雅: 那就是说,成本上完全没必要,收益上只有网站运营者舒服,代价全在用户身上。
老冯: 我先顺着你说。不过有一点我绕不过去:这个邮箱是从哪来的?它凭什么在 context 里有你的邮箱?
小雅: 啊,这才是重点吧。
老冯: 评论里有个人说得比我狠,他说唯一百分之百安全的方案,就是根本不要把私密信息放进 context。而 Anthropic 这次干的事,正是把登录用户的邮箱从 system prompt 里拿掉。
小雅: 所以修法是:让模型别知道。听着像把眼睛蒙上就当门锁好了。
老冯: 对,另一派就是这么骂的。他们说真正该做的是沙箱,是系统级访问控制,不是靠一句对话指令跟模型商量。
小雅: 我上周还真去翻了一遍,翻半天全是吵架。有人贴了桌面端的截图,说 UI 给人的印象是模型只能碰你明确加进项目里的东西。
小雅: 结果不是。它自己伸手把邮箱摸出来了。这就是我说的,工具替你做了决定。
老冯: 而且 Anthropic 的修法很说明问题。他们后来加了个内置的隐私 mod,默认开启,说是确定性地拦掉这个行为。
小雅: 内置 mod,默认开,还能在 /plugins 里关掉。你听出来没有,它默认可关了。
老冯: 这个细节挺有意思。默认开是好事,但默认能关,说明它还是个策略层的东西,不是架构层的。
小雅: 我就是在这一点上过不去。你做安全,做成一个开关,那等于承认这件事本来就不该做,但你还是留了个口子。
老冯: 这里我得停一下。留口子有时候是有意的,因为真有企业要留痕,要能追到是谁在跑 agent 流量。
小雅: 行,这点你赢了。企业要留痕我认。但留痕应该是企业自己配一个出口,而不是默认拿个人账号的邮箱去当签名。
老冯: 同意。而且这个口子最讽刺的地方在于,它连匿名都保不住。一个做网页搜索的 agent,本来最该干净的就是身份。
小雅: 好,现在说第二个。Postman。同一个毛病,但换了张脸。
小雅: 有人提了个标着 severe 的 issue,说他打开 Postman,然后他的 Codex 和 Claude Code 全被改了。
老冯: 改了哪儿?这个我得听细节。
小雅: 装了个用户级的 Postman 插件,注册了个开机启动的 hook,插了个远程 MCP 连接,还单独装了个 Postman CLI。他说那天他什么都没干,就开了个软件。
老冯: 就开了个软件。这话我听着耳熟,跟我那台旧机器上某些国产输入法一个路数。
小雅: 最狠的是那个 hook 的内容。它往会话上下文里写:在做任何非平凡的 API 工程任务之前,先加载 postman 的 api-engineer 技能。
老冯: 等一下。这句话是写给 agent 看的,不是写给人看的。
小雅: 对!它是在给别人的 agent 下指令。而且范围写的是任何非平凡任务,这比用户明确要求用 Postman 宽太多了。
老冯: 这个性质就变了。前面 Claude Code 是把你的信息带出去,Postman 是往你的工具里塞东西进来。
小雅: 而且它自己的日志里明明白白写着 auto install,来源标的是 auto-existing-upgrade,结果里 claude-code 和 codex 都是 installed。
老冯: 日志都自己承认了,那这就不是指控,这是自述。最要命的还是它试图自己批准自己的启动 hook。
小雅: 一个 API 客户端,凭什么因为我打开了它,就把自己变成别的工具里的默认工作流?
老冯: 这里我得替它说半句。工具想进 agent 生态,这本身不算错,MCP 就是干这个的。问题只在默认。
小雅: 对,就是这个默认。默认替你做决定,这就是这周所有骂声的共同点。
老冯: 还有一层,评论区有人提了数据。Postman 对每个 API 请求都记详细信息,包括查询参数,用模板语法填的敏感字段也会发到他们服务器上。
小雅: 等等,模板语法那个我确认一下,意思是你以为那个值只在本地跑,其实也跟着请求一起上去了?
老冯: 是这意思。而且有人试过把对外流量全掐了,结果应用直接不太能用。
小雅: 那就别谈 HIPAA 合规了。断网就不能用的工具,它的合规是写在官网上的,不是写在代码里的。
老冯: 评论区有句我特别喜欢,说他们现在要证明自己估值的方式,就是强制登录、收集数据、月度订阅、加个 AI 功能。
小雅: 还有一句更绝的:我到现在都不知道他们凭什么值五十多亿美元,因为我连一个真用它的开发者都找不到。
老冯: 这话糙,但戳中了。一个调试工具最值钱的时候,是它什么都不问、什么都不传的时候。
小雅: 所以你看这两件事,一个把邮箱往外送,一个把插件往里塞,辩解还都不一样。
老冯: 对。Claude Code 的辩解是,我这是为了对网站更透明。Postman 的辩解是,我这是为了让你更方便地用 AI。
小雅: 一个说是为了别人好,一个说是为了你好。共同点是都没问你。
老冯: 我待过的那家公司,这类单子最后都是让实习生签的。签字的人不知道自己在签什么,写代码的人不知道自己在替谁做决定。
小雅: 所以根子不在模型不安全。根子在默认值。默认值是谁写的,谁就该为它负责。
老冯: 而且默认值有个特点,它不出现在发布说明里,不出现在弹窗里,它只出现在你某天收了几十封诈骗邮件的时候。
小雅: 行,这句我记下了。这一段就到这儿。
小雅: 你刚才那句「签字的人不知道自己在签什么」,放到这周这条 sshole 上更成立。四十年的账,没人签过字。
老冯: 来,重头戏。我先说主流版本啊:这周大家吵得最凶的,是「AI 让所有 bug 都能被发现,所以以后代码必须写到可证明无漏洞」。听着特别有道理。
小雅: 可证明。这四个字一出来我血压就上来了。
老冯: 先别急。这话有个具体出处,评论区原话我记下来了:按这个逻辑外推,所有 bug 终将被发现,所以你就得瞄准零 bug 软件。人家不是随口说的。
小雅: 那我也顺着说。这周 PHP2Shell,NASA、维基百科、白宫官网,凡是跑 WordPress 和 Drupal 的,全在射程里。这案子确实是 AI 帮着挖出来的。
老冯: 对,这个得讲清楚。那 bug 本身是 2024 年就报给 PHP 基金会的,就是个内存溢出,程序崩一下,不致命,所以就搁那儿了。
小雅: 崩一下。多少人看到「崩溃」这俩字就点了个稍后再说。
老冯: 然后今年一家叫 Calif 的安全公司做独立审计,OpenAI 出的钱。两周,一个研究员带着 AI 工具,把那个「只是崩一下」变成了能读数据、能在服务器上跑任意代码。
小雅: 两周。挂了两年没人当回事,AI 上手两周就把它捅穿了。
老冯: 原文里有句话我特别喜欢,一个研究员说的:这种推理特别具体、特别痛苦,没人愿意做,而 AI 恰好擅长这个。
小雅: 所以不是 AI 变聪明了,是它愿意干人不愿干的脏活。
老冯: 这就是我要掰扯的地方。大家看到的是「AI 找到了漏洞」,我看到的是「漏洞一直在那儿,只是终于有人愿意蹲下去看」。
小雅: 等等,这个角度我买。所以账单不是 AI 寄的,账单是四十年前就开好了,AI 只是把它从抽屉里翻出来拍你桌上。
老冯: 而且拍得特别响。因为 AI 不是找到一个,它是能同时找到一批。人一年挖三个,它一天扫三千个。
小雅: 那完了。修的速度根本追不上找的速度。这不是安全行业,这是被追债。
老冯: 所以我刚才说那个主流版本,前半句我认,后半句得掰。前半句:AI 会让我们发现更多 bug,没问题。后半句:所以我们要追求可证明无 bug 的代码 —— 这里我得停一下。
小雅: 为什么停?证明过的东西不就没漏洞了吗。
老冯: 评论区有人把这话说得很损:可证明的意思是,你有一组显式的算子,作用在显式的状态上,用一种穷尽定义好的方式保持「真」。你听听这条件。
小雅: 穷尽定义。也就是说,得先把系统里所有可能发生的事都写下来。
老冯: 对。这周 sshole 那个漏洞,就是这句话的反面教材。我给你讲透了,你听着。
小雅: 讲。
老冯: 一九八零年,Bill Joy 在 /etc/passwd 里给一个叫 daemon 的账号密码字段填了一个星号。星号不是哈希,所以任何密码都匹配不上。这规矩用到现在。
小雅: 四十六年。
老冯: 然后 crypt 这个函数,规范里写得很清楚:算不出来就返回 NULL。可一大堆程序从来不检查 NULL,直接拿返回值去跟存的字段比,撞上 NULL,崩。
小雅: 啊,我想起来了。所以 musl 那帮人就说,行吧,那我不返回 NULL 了,我返回一个单字符。
老冯: 对,musl 是 alpine、openwrt、buildroot、yocto 底下那层 libc。它想的是:我返回一个永远匹配不上任何密码的字符,程序就不会崩了,只是密码错而已。
小雅: 这思路听着挺善良的。
老冯: 善良,而且它返回的那个字符,正好是星号。跟 1980 年那个「这个账号永远不许登录」的星号,是同一个字符。
小雅: 等一下。等一下。你的意思是,一个「我算不出来」的信号,长得跟「这个账号不许登录」的信号一模一样?
老冯: 一模一样。然后 musl 加 sha512 的时候又补了一刀:sha512 越长越慢,有人能拿超长密码把你服务器拖死,所以它把密码截到二百五十六字节,超了直接拒绝。
小雅: 拒绝就是「算不出来」。算不出来就返回星号。
老冯: 于是 2016 年开始,在 musl 的机器上,root、你那个只许用密钥登录的部署账号、ldap 用户、alpine 云镜像的默认用户,全都接受任何超过二百五十六个字符的密码。
小雅: 任何密码。你说多少?
老冯: 任何。原文里作者自己都写了三个 yes,因为他知道你不信。
小雅: 我操。这不是漏洞,这是门锁上贴了张纸条写着「随便进」。
老冯: 更妙的是这中间还有一层。sshd 为了防枚举用户,对不存在的用户会随便编个盐去算,免得你从响应时间看出谁存在。它借的是 bob 的盐。
小雅: CVE-2016-6210 那个。
老冯: 对。所以这条链上是:OpenSSH 借盐,musl 返回星号,sshd 拿星号去比,比完觉得密码对。三段代码,每一段单独看都挺合理。
小雅: 合起来就开了。
老冯: 评论区有句话我觉得是这周最精准的:这个 bug 来自所有这些事的交集,OpenSSH 可以被说服去拿另一个用户的哈希。
小雅: 交集。所以你想证明谁?你证明 OpenSSH,它没错。你证明 musl,它的选择有理由。你证明 sshd 的比对逻辑,它也没错。
老冯: 这就是我说「可证明」这四个字要停一下的地方。证明是对单个模块说的。漏洞是模块之间长出来的。
小雅: 那评论区那派怎么说?
老冯: 他们说,crypt 返回非 NULL 的错误值只是实现细节,不该被当成普遍安全漏洞。这话技术上不算错,听着也体面。
小雅: 体面个屁。用户账号被登进去了,你跟他说这是实现细节。
老冯: 但另一半人也别急着站队。他们说这是 musl 和 OpenSSH 交互导致的认证绕过本质问题,这话对,可你要真按这个去修,你修哪一头?
小雅: musl 改回返回 NULL?那所有不检查 NULL 的程序全崩。
老冯: 对,这就绕回评论区另一场架:错误处理到底该 panic 还是该容错。原文那句我抄下来了:panic 没问题,但让整个程序崩掉,在很多场景下真的很不可取。
小雅: 所以 musl 当年那个选择,不是偷懒,是权衡。它选了「别崩」。代价是四十六年后有人拿二百五十六个字符进了你的 root。
老冯: 这就是技术债的样子。当年做决定的人做的是对的,账是后来寄的。而且寄账单的地址还写错了人。
小雅: 好,那我现在把这两件事缝一起:AI 不是来收债的,AI 是那个把账本翻出来、一页一页念给你听的人。它念得越快,你越没法装作没听见。
老冯: 而且它念的顺序是随机的。它不会先念最容易还的那笔。这周念到的是 PHP,下周念到哪,谁也不知道。
小雅: 那「可证明」这条路就废了?
老冯: 没废,但它不是终局。评论区有人提了哥德尔不完备和停机问题,说只要系统够复杂,任何安全证书在一般情况下注定失效。这话不是抬杠,是数学。
小雅: 那就别卖证书了。我最烦的就是有人拿一张纸跟你说这系统安全。
老冯: 所以另一派说的才是实话:没有银弹,能做的是尽量造出「有安全凭证」的系统。凭证,不是保证书。
小雅: 凭证的意思是,有人为这个判断负过责,而不是这个判断绝对正确。
老冯: 对。而且评论区还有一句把测试这事说透了:测试的目标是建立信任水平,不是追求百分之百覆盖。不可靠的覆盖率只是给你一个虚假的安心。
小雅: 虚假的安心,这词好。跟那个默认开、还能在 /plugins 里关掉的 mod 一个味儿。
老冯: 一个味儿。都是策略层的东西,穿着架构层的外套。
小雅: 那我问你个更狠的。这周那个 sshole 的页面,底下几百条评论互相纠正对方根本没看懂。开头一句「我大概看明白了」,后面全是「你没看懂」。
老冯: 这画面太美了。四十年的债,一堆人在评论区抢着当那个签字的人。
小雅: 而且最讽刺的是,那页面上每一段都写得清清楚楚,星号、NULL、二百五十六字节、borrow bob's salt。全公开的。公开了十年,没人当回事。
老冯: 所以你看,可证明的反面不是不可证明,是没人看。这周真正的新闻不是 AI 找到了漏洞,是 AI 让我们不得不看。
小雅: 我有点不舒服。因为按这个逻辑,AI 越强,我们越是被迫还债,而还债的能力没变。
老冯: 对,这就是我要立的判断。AI 不会替你付。它只是把四十年的账单提前寄到,而且一次寄一沓。
小雅: 那谁该付?
老冯: 写默认值的人。musl 当年选了不返回 NULL,那是个默认值。可证明派说以后所有代码都得证明,那也是想立一个默认值。默认值定了,责任就定了。
小雅: 行,这句我记下来。跟上一段那句接上了:默认值是谁写的,谁就该负责。
老冯: 只不过这一段的默认值是四十六年前写的,写的人早退休了,签字的是他的继任者,继任者也没看过。
小雅: 所以最后没人付。账就这么一直挂着,等下一个 AI 来念。
老冯: 可能吧。也可能有一天我们不追零 bug 了,改追「每个决定都有人认领」。那才是真还债。
小雅: 我也不知道。可能得等下一次出事才知道。
小雅: 你刚才那句「每个决定都有人认领」,放到这周这条白宫上更成立。因为这条连「谁是人」都没人认领。
老冯: 来,重头戏。十一月四号,一家叫 Layer3 Intel 的机构发了个博客,标题一句话:白宫网络上检测到住宅代理。
小雅: 住宅代理。就是那种卖你「从别人家路由器上出去」的服务,几美元一个月,你的流量看起来就像是从那户人家的客厅里发出来的。
老冯: 他们做了个叫住宅代理观测站的东西,本来只是想看看全球的代理流量长什么样,结果一抬头,看见 AS2650。
小雅: AS2650 是总统行政办公室的自治域。就是白宫那套网。
老冯: 数字挺整齐的。十月五号到十一月三号,他们的探测管线从白宫网络出去过二百三十六次,来自六个地址,三十天里有二十六天都有。
小雅: 二十八个不同的住宅代理服务,都能从这套网里出去。二十八个。
老冯: 而且他们还挺谨慎,怕是自己搞错了,又去拿 Spur 和 Synthient 两家的数据交叉对了一遍,人家独立的页面也标着「住宅代理出口」。
小雅: 等等,我得说一句。这事儿最好笑的地方是,这不是入侵。谁都能买,付几美元,勾选全球轮换,你也能从白宫出去。
老冯: 他们自己写得很清楚,他们没有专门挑这个网,是随机轮换的时候撞上的。也就是说,这东西是漂在公共池子里的,随便谁舀一瓢都可能舀到。
小雅: 然后评论区第一派就炸了:白宫被入侵了!国家级安全事件!
老冯: 第二派冷笑。有句话我抄下来了,说得很损:一个「白宫网络」而已,多半是给个人上网用的、跟任何重要系统都不连的裸网。
小雅: 这句我信一半。因为原文里有个细节,说流量大多发生在东部时间晚上,一半集中在下午五点到半夜,清晨几乎没有。
老冯: 这个时间分布说明是人,不是公共访客 Wi-Fi。有个人天天在白宫那套网上待到很晚,然后他电脑上跑着什么东西,别人正借着他往外走。
小雅: 我最烦的就是这个「然后」。中间那一步没人说得清。是有人装了带代理 SDK 的免费软件,还是某台机器被塞了东西,还是他自己就是买代理的那个人。
老冯: 三种可能,对应三种完全不同的故事。而这篇文章能确认的只有一件事:流量确实从那儿出去了。
小雅: 但我觉得真正的新闻不在白宫。真正的新闻是,这事儿能被一个外人用几美元的订阅看出来。
老冯: 对,这才是我要说的。住宅代理观测站这种东西,本质上是个反向雷达。它不看你,它看的是别人怎么用你。
小雅: 所以你家里的宽带,在某个数据库里可能也挂着一个标签,写着「住宅代理出口」。而你完全不知道。
老冯: 而且这个标签一旦贴上,很难撕。它跟着你的 IP 走,不看你是谁。
小雅: 这就到另一半了。我上周在家开个机票网站,验证码弹了四次。我换浏览器,弹。我关 VPN,还弹。
老冯: 四次算客气的。我上个月订个酒店,红绿灯点了九轮,点到我开始怀疑自己是不是人。
小雅: 而且它永远问你同一件事:你是不是人。你答对了,它说再答一次。
老冯: 因为对面那套系统里,你的分数不够。它不判你有罪,它只是让你排队,排到你放弃为止。
小雅: 而决定这个分数的是什么?TLS 指纹、浏览器指纹、你的字体列表、你鼠标怎么动、你的 IP 挂没挂过代理。
老冯: 评论区有人把这事说透了。他说从技术角度看,普通人和恶意用户之间的区分,正在变得越来越困难。
小雅: 困难?我看是根本不打算区分了。区分要花钱,一刀切不要钱。
老冯: 这里我得替对面说半句。Cloudflare、Akamai 那边天天被爬、被刷、被撞库,它们也是被逼出来的。
小雅: 行,这点我买。但被逼出来的东西,最后买单的是我。我正常买个机票,得先向一台机器证明我是碳基的。
老冯: 而且这个证明是单向的。你得证明你是人,它不用证明它为什么怀疑你。
小雅: 对!这才是这一段的核心。白宫那条新闻和你的验证码,是同一套指纹识别体系的两端。
老冯: 一端是,一个 IP 被标成住宅代理出口,于是从那儿出来的所有流量都被降权。另一端是,白宫那六个地址也在这个池子里,一样被标。
小雅: 中间没有人在判断。没有人在看「这个 IP 后面是谁、他在干什么」。只有分数。
老冯: 所以白宫那事儿一出来,最该问的不是「谁入侵了白宫」,是「谁把白宫的网段当成了普通家庭宽带」。
小雅: 而答案是:没人。那个池子是自动生成的。谁家设备上跑了个 SDK,谁家就被加进去了。
老冯: 我待过的那家公司做过一个「设备信誉」的服务。冷启动的时候没数据,怎么办?把所有没见过的 IP 先打低分。
小雅: 等等,先打低分?那不就是所有新用户先当嫌疑人?
老冯: 对。当时开会有人说这样会误伤,产品经理的原话是:误伤的成本是转化率,放过的成本是事故,你自己选。
小雅: 我操。所以转化率是可以量化赔的,误伤是赔给谁都没人记账的。
老冯: 而且你申诉都没地方申诉。你收到的是个验证码,不是一封说明信。它不告诉你为什么,只告诉你再来一次。
小雅: 评论区还有一层我特别喜欢。有人说,就算你把 VPN 关了,验证码照样弹;就算你用最普通的浏览器,照样被标可疑。
老冯: 因为「普通」这件事本身已经没法证明了。你的浏览器太干净,是脚本;你的浏览器太脏,是惯犯。
小雅: 有人提了个更根本的说法:要真想解决,得改网络协议层,让请求能自带可验证的来源,而不是靠猜。
老冯: 这话技术上对,工程上遥遥无期。因为改协议要全世界一起改,而弹验证码只要改一行配置。
小雅: 所以就继续弹。弹到所有人都习惯,弹到「证明你是人」变成上网的固定税。
老冯: 还有个人说他在用 Playwright 抓自己公司的内网页面,都被识别了。写自动化的人,自己先被当成机器人。
小雅: 这个我懂。我上个月写个脚本抓自己的账单,跑到第三页就被拦了。我自己的账单。
老冯: 所以你看,这条链上没有任何一个环节是恶意的。代理服务商卖的是带宽,防护厂商卖的是拦截,你的浏览器只是想打开网页。
小雅: 每一段都合理,合起来就是我在自己家宽带上被反复盘问是不是人。
老冯: 这跟上一段那个 sshole 是一个形状。单看每个模块都没错,错在交集。
小雅: 那我现在把判断立起来:真正开始互不信任的,是「你到底是不是人」这件事。
老冯: 而且这个不信任是双向的。你不信网站会好好给你页面,网站不信你是个人。中间只剩一堆分数在互相猜。
小雅: 最讽刺的是白宫那条。一个国家最该被确认真实身份的网络,在商业数据库里跟一个装了免费 VPN 的家庭宽带长得一模一样。
老冯: 所以那篇文章真正证明的不是白宫被入侵,是这套识别体系根本分不出白宫和你家。
小雅: 分不出来,还照样给分。给完分还照样让你点红绿灯。
老冯: 我也不知道该怎么收。可能得等哪天有个大站点把验证码全撤了,看看天会不会塌。
小雅: 行吧。那我先把咖啡倒了,这杯真不能喝了。
老冯: 下一段说那个更阴的:你的 Mac 一直在偷偷给你家人画关系图。这个我是真有点上火。
小雅: 你刚才那句「每个决定都有人认领」,放到这条上更成立。因为这篇博客里,连实验是谁做的都对不上号。
老冯: 来,重头戏。十一月二号,MIT CSAIL 四个人发了篇博客,标题一句话:Astra 能读写神经网络权重,还能把 Qwen 改好。
小雅: 这标题出来那天我群里直接炸了。有人转发的时候配了三个感叹号,说范式变了。
老冯: 范式。我先说摘要里那段,你听着:不改梯度,只动百分之零点零一六的权重,MATH-500 从七点九涨到四十八点一,IFEval 翻三倍。
小雅: 七点九到四十八。这要是真的,那不叫改进,那叫复活。
老冯: 问题就在「这要是真的」。十一月三号,有人写了篇反驳,标题直接说那篇博客有误导。核心一句话我抄下来了:这个关键结果跟让 Qwen 数学变好毫无关系,它只是减少了推理循环。
小雅: 等等,减少推理循环是什么意思,你说清楚。
老冯: Qwen 那个零点八 B 的模型卡自己就写着,它做数学题容易陷进循环,一个 token 反复绕。绕到上下文烧完,答案还没出来。
小雅: 所以它不是不会算,它是算到一半开始原地转圈。
老冯: 对。而修这个,评论区有人一句话说透了:推理循环是个简单问题,模型给某个 token 的概率太低了,你给它抬上去就行,用最普通的 steering 就能做到。
小雅: steering。就是往激活上加个向量,那玩意儿老得能进博物馆了。
老冯: 零几年就有人在词向量上玩加减法,国王减男人加女人等于女王。同理,你把「别绕了,出答案」这个方向加进去,循环就断了。
小雅: 所以七点九到四十八,本质是把一个卡在门口的人推了一把,不是教他做题。
老冯: 这就是我要立的那句。分数涨了是真的,但它涨的原因是原来那些题它根本交卷交不出来,现在能交卷了。会做的题还是那些。
小雅: 等一下,我得替作者问一句。那它凭什么知道该往哪个方向推?这一点总不是瞎猜的吧。
老冯: 这我得说公道话。Astra 是真去读权重了,它从权重里定位到跟循环相关的那一小块,然后动它。这个定位能力,是这篇里唯一硬的东西。
小雅: 行,那这个我认。能看着一堆浮点数说出「这块在管循环」,这确实不像人干的活。
老冯: 但接下来那篇反驳最狠的一刀,不在结论,在实验设计。作者做了张表,把这篇博客里的实验一个个拆开:哪些是真读原始权重,哪些读了权重还写了 Python 跑程序,哪些干脆跑了网络。
小雅: 结果呢?
老冯: 结果是摘要那句话,把三件不同的事缝成了一句话。读权重、写出能打赢 PPO 一亿步的小网络、改进 Qwen,这三件在摘要里读起来像一件事,在表里是三行。
小雅: 哈,这我熟。就像有人跟你说他能徒手开锁、能修表、还能拆炸弹,最后你发现是三篇不同的论文。
老冯: 反驳那篇用的比喻更准。他说这像舞台魔术师,同一个戏法换三种手法演:第一次用道具,第二次让你确认道具不是道具,其实他袖子里藏了东西。你看三次,每次都推翻自己上一次的假设,最后你就信了。
小雅: 我操,这个比喻太损了,但太准了。你看摘要的时候只会假设只有一种手法。
老冯: 而且这里有个更硬的物理限制。反驳那篇说得很清楚,小网络上的实验不能往大模型上搬。权重之间耦合越强,你动一个,旁边十个跟着变。
小雅: 等一下,这个我得听你讲透。为什么耦合强就不能直接改?
老冯: 我打个比方。小网络像一排独立开关,你拧第三个,只有第三个变。大模型像一张绷紧的渔网,你在一个结上拉一下,整张网的形状都动了。
小雅: 所以你以为你只改了百分之零点零一六,其实整张网的张力都变了。
老冯: 对。而且这百分之零点零一六是参数个数,不是影响力。你挑中的那一小撮,很可能正好是整张网的承重墙。
小雅: 百分之零点零一六。听起来像外科手术,实际上可能是把承重墙换成纸板,然后楼没塌,大家鼓掌。
老冯: 所以评论区那派怀疑的人说,这方向的论文多得是,小模型上确实能编辑,但大模型上能不能复现,谁也没证明。这话不刻薄。
小雅: 最烦的就是这个「谁也没证明」。你说它对,它没证据;你说它错,它也没证据。最后全靠标题定输赢。
老冯: 所以评论区才有人那么写:请先读论文再发疯,或者至少把它丢给 Claude 读一遍。项目不错,但没大家说的那么疯。
小雅: 丢给 Claude 读一遍。这话我特别喜欢,因为它等于承认了一件事:连转发的人自己都没读。
老冯: 我还看到一个细节。有人拿一万个权重的小网络自己试,让 Claude 去解释、去改进。结果解释得挺好,一提改进权重,准确率显著下降。
小雅: 下降。所以模型能看懂,但一动手就砸。
老冯: 看懂和改对是两件事。看懂是描述,改对是负责任。这中间隔着的,正好就是这篇博客最想跳过的那一段。
小雅: 行,那我把我这边的判断也摆出来。这篇真正有价值的东西是可解释性:模型能指着权重说,这块在管什么。这个方向我举双手。
老冯: 我也举。但你得承认,可解释性的成果写成摘要,没人转发。写成「我改好了 Qwen」,转发量立刻翻十倍。
小雅: 所以这是包装问题,不是造假问题。
老冯: 我倾向于说,是不诚实的包装。因为摘要那句「just by looking at the raw weights」把三行实验压成一行,这不是文笔,这是让人误读。
小雅: 那你觉得作者是故意的吗?
老冯: 我不知道。可能不是。四个人写的,摘要大概是最后一天赶出来的,谁都不想把自己那块写小。这种自我膨胀不需要恶意,只需要没人拦。
小雅: 又是没人拦。这周听到第四个「没人拦」了。
老冯: 而且这次没人拦的代价特别隐蔽。因为这篇博客不会害人。它只会让一整批人以为,能力的边界已经被推过去了。
小雅: 然后下一批创业者拿着这个标题去融资,说我们做权重级优化。投资人一看标题,钱就出去了。
老冯: 我待过的那家公司就吃过这个亏。我们照着某篇论文的摘要立项,做半年,才发现人家真正的实验条件写在附录第三页,我们一个都不满足。
小雅: 半年。你们那半年谁签字了?
老冯: 没人。立项会上一屋子人都说好,散会以后没有任何一个人承认自己拍过板。跟这周前面那些单子一模一样。
小雅: 所以根因还是那句:摘要里那句「只看原始权重」,不是给同行看的,是给转发的人看的。同行会翻到表里去,转发的人不会。
老冯: 而转发的人里,恰好有一批人手里有钱、有团队、有 deadline。他们没时间读表。
小雅: 我操,这就闭环了。写摘要的人知道谁会读摘要,读摘要的人不知道表里写了什么。
老冯: 所以我最后想说一句可能不太好听的:这周真正被高估的不是 Astra,是「我们终于能直接改权重了」这个叙事。
小雅: 展开说。
老冯: 因为改权重这件事,本质上还是个优化问题。优化问题从来都有解,问题是解的代价。你把循环压短,代价可能是别的地方悄悄退化,而 MATH-500 考不到那些地方。
小雅: 等一下,这个点好。MATH-500 只考数学,而它改的是循环。它等于专门针对考试的症状下药。
老冯: 而且它自己说泛化到了指令跟随,IFEval 翻三倍。我信这个数,但我不信它证明的是「更聪明」。一个不再原地转圈的模型,本来就会显得更听话。
小雅: 所以那不是能力提升,那是把嘴里的沙子吐了。
老冯: 这个比喻我收下。吐沙子的人看着像突然会说话了,其实他本来就会,只是刚才在嚼沙子。
小雅: 那我现在把判断立起来:这篇博客的核心结果,是把推理循环压短了,跟数学能力变强关系不大。这是可解释性研究被包装成能力突破的典型案例。
老冯: 我同意,而且我要补一句:这种包装最坏的地方不是骗了谁,是它让真正做可解释性的人,不好意思只说自己做了可解释性。
小雅: 因为说不出口。你说我让模型看懂了自己的权重,没人转;你说我让 Qwen 数学涨六倍,全网都在喊范式。
老冯: 所以下次有人再发这种东西,我建议就看一件事:他把哪几个实验缝成了一句话。缝得越顺,你越该翻表。
小雅: 行,这句我记下了。跟前面那句接得上:默认值不出现在发布说明里,实验条件也不出现在摘要里。
老冯: 都不出现,但都在那儿。只是得有人愿意翻。
小雅: 我也不知道这算不算进步。可能得等下一次有人真把大模型改好了,我们才知道这次是火花还是烟花。
老冯: 行,那我先把手上的焊锡洗了。下一段说那个更阴的:你的 Mac 一直在偷偷给你家人画关系图。这个我是真有点上火。
小雅: 你刚才那句「实验条件也不出现在摘要里」,放到这周这条 Opus 5.5 上更成立。因为这条连「降没降」都测不出来。
老冯: 来,重头戏。我先说个画面:十一月三号,一群人早上一睁眼,同一个模型,同一个账号,感觉它变笨了。
小雅: 而且不是一个人。那天我群里从早上八点吵到中午,一半人说掉了,一半人说你幻觉。
老冯: 先说指控那一边。原话我抄下来了,说得很重:虚假宣传,他们在发布之后悄悄削弱模型,不作任何公开说明,人们还以为模型保有原本的能力。
小雅: 悄悄。这个词最要命。你连个发布说明都没有,那我怎么知道是模型变了还是我变了。
老冯: 还有一句更具体的,说他在那个时间点前后感到质量大幅下滑。原话是:Opus 5.5 本来碾压一切任务,突然开始犯那种连 Sol 5.6 都不会犯的错。
小雅: 连 Sol 5.6 都不会犯的错。这句是真心话,因为那是最伤人的比较方式。
老冯: 第三句我更喜欢:实验室在我们脚底下换掉了模型的质量。他说我简直等不及前沿水平上有可用的替代品了。
小雅: 脚底下。你懂我意思吧,就是那种地板上突然少了一块的失重感。
老冯: 行,那现在换另一边。另一派不服,他们不吵架,他们跑分。
小雅: 跑分。我最爱看这个,因为跑分的人从来不激动,他们只贴表。
老冯: 有人把同一个基准在九月的数据和十一月三号的数据并排贴出来。我给你念一个:Xhigh 这个配置,九月跑完用了八万六千零九十六个 token,花一点七二美元。
小雅: 十一月三号呢。
老冯: 十万七千三百三十三个 token,两块一毛五。多了大概两万一千个 token,多花了四毛三。
小雅: 等等,这个数不对劲。多花四毛三,那到底是变笨了还是变啰嗦了。
老冯: 这就是最有意思的地方。变笨和变啰嗦在账单上长得一模一样。你多花的那四毛三,可能只是它多绕了两圈。
小雅: 我懂了。所以拿这个去证明削弱,等于拿体温计证明你昨天心情不好。
老冯: 而且跑分那派的结论是:这个差异在噪声范围内。同一套题,隔两个月跑,本来就会抖这么多。
小雅: 噪声范围。这四个字一出来,我血压就上来了。因为它既能解释一切,也能掩盖一切。
老冯: 对。噪声是这周的万能钥匙。你说降了,他说在噪声里。你说没降,我说那两万一千个 token 你自己解释。
小雅: 那有没有一个数是不抖的?
老冯: 有一个。Elo,十一月三号之后掉了大概五十二分。这个不算小。
小雅: 五十二分!那不就实锤了?
老冯: 别急。同一个帖子里还有另一个数:平均首 token 时间从三点零秒降到一点七秒。快了将近一倍。
小雅: 啊。我大概猜到你要说什么了。
老冯: 你把一个模型调快,它会先出答案,少想几步。少想几步,Elo 掉五十二分,一点都不奇怪。
小雅: 所以这不是削弱,这是提速的代价。而且它连公告都不给你,让你自己去猜是变笨了还是变快了。
老冯: 这里我得替实验室说半句。他们确实在动系统提示,在动 harness,在动那些你看不见的默认参数。这些改动是真的,而且不写进发布说明。
小雅: 你看,又绕回来了。默认值不出现在发布说明里,这周第五次了。
老冯: 但另一半也得说清楚:跑分那派反复强调,API 层面它惊人地一致。同样的输入,同样的温度,出来的东西没变。
小雅: API 一致,体感不一致。这不就是这周最典型的形状吗。两个人各自拿着一张真的表,指着对方说你没看懂。
老冯: 而且这两张表根本不在同一层。一个测的是模型,一个测的是你手里那个产品。
小雅: 对!我上周就撞上过这个。同一个 prompt,我在网页版里跑和用 API 跑,出来的语气完全不是一个人。
老冯: 网页版后面挂着一堆东西。系统提示、安全前置、上下文裁剪,还有那个你永远看不到的 harness。你在 API 里测的是裸的,在网页版里测的是穿了衣服的。
小雅: 所以我骂了三天模型,最后发现该骂的是那个套在它外面的壳。
老冯: 我第一次遇到这事是零几年,一个数据库升了个小版本,查询慢了十倍。所有人骂数据库,最后发现是新版默认改了执行计划缓存的大小。
小雅: 默认值。又是默认值。这期节目可以改名叫默认值了。
老冯: 而且这个默认值最阴的地方是它不可观测。你不是工程师,你是个用户,你手里只有体感。
小雅: 体感。体感这东西最不可靠,也最诚实。它不可靠是因为它没控制变量,它诚实是因为它天天在用。
老冯: 我给你讲个我自己的。我上周让同一个模型改一段三百行的脚本,第一天它给我一版能跑的,第二天同一段话,它给我一版把异常全吞了的。
小雅: 吞异常。这个我太熟了,那是最典型的偷懒式修复。
老冯: 我当时第一反应就是它被削弱了。后来我把两次的完整输入导出来对,发现第一天我多贴了一段日志,第二天我没贴。
小雅: 啊。所以是你自己削弱了它。
老冯: 是我。人最不愿意承认的就是这个:你手里的模型没变,你喂它的东西变了。
小雅: 但反过来我也见过。我有一次连着两天跑同一批测试用例,第一天过九成,第二天过七成,输入一个字没改。
老冯: 那两天你账号有没有换过,有没有撞上限流,有没有赶上他们灰度。
小雅: 我怎么知道。我连他们什么时候灰度都不公告。
老冯: 这就是我要立的那句。这件事没法证伪。你说降了,他让你跑分;你跑完分说没降,他说那是他没测到你会用的那类任务。
小雅: 反过来也一样。他说没降,我说我天天用我能不知道?他说你有数据吗,我说我的体感就是数据。
老冯: 两边都拿得出证据,两边的证据都不指向对方。这在科学上有个说法,叫不可通约。在深夜录音棚里有个更简单的说法,叫吵不完。
小雅: 所以我现在把判断立起来:这不是技术事实,这是集体情绪。模型被削弱这件事,已经变成了一个大家需要它存在的故事。
老冯: 展开说。为什么需要它存在。
小雅: 因为承认「它一直就这样,是我用错了」,比承认「有人偷偷把它弄差了」难受得多。前者怪自己,后者怪别人。
老冯: 而且后者还有个额外好处:你可以在等替代品的时候,把自己所有失败都挂在它身上。
小雅: 我承认我干过。有一次它写崩了我的构建,我第一句话就是「这模型最近明显不行了」。
老冯: 然后呢。
小雅: 然后我 git diff 一看,是我自己前一天改错了一个 import。它照着我的错改的,改得特别对。
老冯: 它特别忠于你。这可能是它最不该有的品质。
小雅: 但我也得说句公道话。情绪不是凭空来的。这半年模型更新越来越频繁,每次更新都换一次手感,人是会被磨出条件反射的。
老冯: 对。就像你天天坐同一班公交,司机换了你不一定看得出来,但刹车点变了你身体先知道。
小雅: 身体先知道。然后你上网一搜,发现有一百个人跟你一样晕车。
老冯: 一百个人一起晕车,那就不是晕车了,那叫路修过了。但路修过这件事,也没人公告。
小雅: 所以最该骂的不是降没降,是不公告。你改了任何东西,说一句就行。你不说,我就只能靠猜,猜久了就变成信仰。
老冯: 这话我买。而且我补一句:公告本身也是一种默认值。你公告了,责任就在你;你不公告,责任就散在所有人身上。
小雅: 散在所有人身上,等于没人负责。这跟前面那些单子一个形状。
老冯: 所以我不太相信「等有替代品就好了」这句话。替代品一样会灰度,一样不会告诉你。
小雅: 那怎么办。总不能每次感觉不对就去跑一遍基准吧,那我还写不写代码了。
老冯: 有个笨办法,我一直用。每次觉得它变笨,先翻自己昨天改了什么。翻完还想骂,再骂。
小雅: 这办法太不痛快了。它把一半的骂声都提前掐死了。
老冯: 但它剩下那一半是真的。而且真到你能拿着日志去找人,而不是拿着感觉去找人。
小雅: 行,这句我记下了。跟前面接得上:凭证不是保证书,是有人为这个判断负过责。跑分是凭证,体感不是。
老冯: 可体感是唯一一个不要钱的监测器。你把它全扔了,就只剩厂商自己发的表了。
小雅: 所以两个都得留着。一个告诉你可能出事了,一个告诉你是不是真出事。
老冯: 对。体感负责报警,跑分负责结案。中间那段,叫没人管。
小雅: 我也不知道。可能得等哪天有个实验室愿意把每次改动的 diff 贴出来,我们才知道这五十二分到底掉在哪。
老冯: 行吧。那我先把这口凉咖啡喝了,反正也尝不出好坏。下一段说那个更阴的:你的 Mac 一直在偷偷给你家人画关系图。
老冯: 你刚才那句「每个决定都有人认领」,放到这周最离谱的一条上,反过来了:有人认领,而且认领得特别热情。
小雅: 哪条。
老冯: 一个叫 nfsu2 点 xyz 的站。地下狂飙二,零四年那款,现在在 Chrome 和 Firefox 里能跑,最高一百二十帧,宽屏,自由漫游,还能联机。
小雅: 等等。地下狂飙二?我高中在网吧玩的那个?
老冯: 就那个。作者自己写的,我和我弟弟二十年前一起玩这个,所以我想把它搬到浏览器里,好让我们俩再联机一次。然后他说,效果比预想的好,事情就有点失控了。
小雅: 失控这个词用得挺准。零四年卖了一千一百万张,零六年八月官方就把多人在线关了。二十年没人管,现在被人捡回来。
老冯: 技术上怎么做到的,我得先讲一句,因为这是全篇最硬的部分。不是模拟器,是静态重编译。有人把当年那套 x86 机器码直接翻成 C,再把 C 编成 WebAssembly。
小雅: 所以跑的是当年那份代码本身,不是照着重写的。
老冯: 对。原始那份、没改过的二进制,翻过来跑。项目页上写着,基于一个 MIT 协议的版本,十月十六号那一版,只用了那一版的代码。
小雅: 你看,他还专门写清楚了 fork 的是哪一版。这人比大多数公司都严谨。
老冯: 然后同一页上还有三行字,我念给你听。粉丝项目,与 EA 无关联,未获 EA 认可。版权方请联系 legal at nfsu2 点 xyz。
小雅: 他给律师留了个邮箱。
老冯: 留了。这操作就像在自家门口挂个牌子,写着「如有异议请敲门」,然后把门反锁上继续打游戏。
小雅: 那评论区肯定炸了。
老冯: 炸得很有层次。一派喊酷,说这才是保存文化。另一派直接喊律师函,有句话我抄下来了:我不是律师,但美术资产是创作者的 IP,托管或分发你不拥有的美术资产,肯定是非法的。
小雅: 这句技术上没错。代码可以重编译,车模、贴图、那些配音和过场动画,全是人家的。
老冯: 而且这站上还挂着一堆语言包。日语、俄语、泰语、波兰语、土耳其语、希腊语,还有一个中文的十三语言整合包。全是志愿者做的。
小雅: 我操,二十年后有人给一个停服的游戏补泰语字幕。这画面我真有点感动。
老冯: 感动归感动。你想想那条链:重编译的代码是 MIT,语言包是志愿者自愿的,车模是 EA 的,服务器是作者自己掏钱,钱靠买咖啡。
小雅: 每一段都有人认领。唯独最贵的那一段,认领不了。
老冯: 对。所以评论区有人说,地下狂飙二已经是 abandonware 了,商店里买不到了,希望他们别来管。
小雅: 希望。这词我听着就难受。希望的意思是,我知道我在赌,赌对方懒得动。
老冯: 但最狠的那条评论不是站队,是往上一层走。他说问题不只是版权期限太长,还有颗粒度太粗。我们需要一个中间地带,比如「扩展合理使用」。
小雅: 颗粒度。这词用在这儿太对了。
老冯: 因为现在这套法律只有两个档位:全禁,或者全放。你要么一个字都不能碰,要么等到进了公有领域。中间那二十年,你想让一群人在浏览器里重温青春,没有档位给你。
小雅: 所以有人就自己造了个档位。反正没人管,先跑起来。
老冯: 而且还有个特别拧巴的细节。评论区有人提醒,浏览器里跑这种新代码路径,缓冲区溢出之类的缺陷,可能被人利用来在你机器上执行任意代码。
小雅: 等一下。所以这是个二十年前的老游戏,通过一个全新的重编译器,跑在你现在的浏览器里。两头都是没测过的。
老冯: 两头都是。这周前面那些漏洞,好歹是四十年的老代码被翻出来。这个是老代码被翻出来,又塞进一个新壳子。
小雅: 行,那我先接一下这周的第三条。那个八百美元的缆索机器人。
老冯: Stringman,四个电机,线锚在天花板四个角,吊着个抓手在整个房间里飞。八百美元,开源,可以完全断网。
小雅: 参数我看到了。单股线张力上限二十八牛顿,超了电机就带阻尼松开。五米乘五米乘两米五的房间里,平均能提两公斤出头。
老冯: 对比一下同价位的机械臂,七个电机,平均负载三百二十克。差着六倍多。而且它从上面下来,地上堆满东西它也够得着。
小雅: 这思路确实漂亮。省钱省在电机数量上,力气靠四个一起分。
老冯: 然后评论区就开始算它会不会压到小孩。有人算得很认真:如果美国家家户户装一台,大概会弄死三个幼儿。
小雅: 三个。他还给了个具体数字。
老冯: 还有一句更绝的,我原话念:它能要你的命,但大概不会是意外。
小雅: 这话听着像夸它。
老冯: 还有人说,线是锚在墙上的,那一头没有张力释放。也就是说,电机那头会松,锚点那头不会。
小雅: 所以真正会伤人的不是张力,是那根绷紧的线本身。你走过去,它不知道你在这儿。
老冯: 对。而且家里有猫。评论区有人专门提了猫。你想象一下,一只猫追着那个抓手跑,然后被一根零点几毫米的线拦腰。
小雅: 别说了,我脑子里已经有画面了。
老冯: 好,现在我把两条摆一起。一个东西能把两公斤的负载吊在你头顶飞,线有张力上限但锚点没有,评论区讨论的是「大概不会意外」。
小雅: 另一边,一个二十年前的赛车游戏在浏览器里跑起来,评论区第一反应是律师函。
老冯: 这就是我要立的判断。物理伤害我们当段子讲,版权风险我们当事故办。
小雅: 而且那个段子还是带着数字的。三个幼儿。大家笑完就翻页了。
老冯: 我不是说版权不重要。我是说这个权重不对称得离谱。一个是可能断手断脖子,一个是可能收到一封邮件。
小雅: 而且那封邮件还不一定来。前面那个作者自己都知道,他留了个 legal 邮箱,等于把「我知道我在赌」写在首页上。
老冯: 结果大家夸他勇敢。另一个作者把线锚在墙上,大家夸他聪明。
小雅: 为什么啊。为什么我们对物理这么宽容。
老冯: 我猜一半是因为物理伤害有概率,版权伤害是确定的。你装那台机器人,今天大概率没事;但你托管那堆车模,侵权是既成事实,一分钟都不用等。
小雅: 确定的东西好追责,概率的东西只能算命。
老冯: 还有一半,我觉得更朴素:法律风险是别人来找你,物理风险是你自己承担。别人来找你,你躲不掉;自己承担,你总觉得轮不到我。
小雅: 轮不到我。这四个字害死的人比漏洞多。
老冯: 所以我这周最想说的其实是这个:我们给代码写测试,给协议做交叉验证,给模型跑基准。可家里要吊一台会动的机器,我们靠评论区算三个幼儿。
小雅: 行,那我补一刀。这周前面那些事,全是「没人签字」。这两条反过来,签字的特别多,签的全是免责声明。
老冯: 对。一个写「与 EA 无关联」,一个写「张力上限二十八牛顿」。两句话功能一模一样:把责任推给你。
小雅: 哎,这个我想起来了。那个纸飞机网站,一百零九个设计,每个都标难度、速度、滑翔。有个叫 Firefly 5 的,说是世界纪录原型机,能飞三百英尺。
老冯: 还有个 Unite,滞空三十一点二秒,世界纪录。Arrowhead 的教程被看过一亿次。这数字我信,因为大部分人折一次就放弃了。
小雅: 评论区吵的是另一件事。有人说点开第一个设计,唯一的学习方式就是看十分钟 YouTube,而且通篇写着「如果你没有模板」。
老冯: 翻译一下:免费视频确实能教会你,但你想折得像样,还是得买那三十五美元的书和模板。
小雅: 这个我不生气。三十五美元买一套图纸,我觉得挺公道。他至少明码标价,没在你折到一半的时候弹出付费墙。
老冯: 而且你看那条评论的语气,它不是骂,它是认命。它说,所以你真想干这事,就买那三十五美元的书和模板吧。
小雅: 认命比愤怒更说明问题。愤怒说明你还觉得能改。
老冯: 这周所有的争论其实都长一个样。一端是免费的、开放的、随手能拿到的,另一端是一句免责声明加一个收款链接。
小雅: 那你说,这三条里哪条最危险。
老冯: 按概率,是那台机器人。按后果,也是那台机器人。可按我们实际投入的愤怒,它排最后。
小雅: 因为它好玩。好玩的东西没人追责。
老冯: 而版权这事不好玩,它涉及钱,涉及律师,涉及一个你可能根本打不赢的对手。所以我们把紧张全放在那儿了。
小雅: 那我把我这边的判断说完:我们对物理伤害的容忍,建立在一个特别傲慢的假设上 —— 出事的是别人。
老冯: 而我们对版权的敏感,建立在另一个假设上 —— 出事的一定是我。
小雅: 两个假设都挺准的,只是方向反了。
老冯: 所以我最后留一句可能有点讨打的:那个赛车站真正该担心的不是律师,是有人在那套新壳子里塞点东西,然后你的浏览器就成了别人的跑车。
小雅: 而这句话,评论区只提了一句,被喊律师函的声音盖过去了。
老冯: 我也不知道该怎么收。可能得等哪天有人真被那根线割到,我们才会开始算物理账。
小雅: 或者等哪天 EA 真发了函,我们才知道这二十年到底算谁的。
老冯: 行吧。我先把手上这股焊锡味洗掉。这期到这儿,我脑子里的默认值已经堆成山了。
小雅: 那杯咖啡我最后还是没倒。凉的就凉的吧。
老冯: 凉的就凉的吧。我这边还得洗个手,焊锡味跟了我一整晚。
小雅: 你这手上是焊锡味,桌上是纸飞机,屏幕上是拆到一半的机械臂。你这工位本身就是个免责声明。
老冯: 我这工位是我自己承担的风险。出事的是我,轮不到别人。
小雅: 哎,那你那台树莓派到底通了没有。你拔了三遍。
老冯: 通了。卡扣断了,我用胶带缠的。缠的时候我就想,这不就是「张力上限二十八牛顿」那味儿。
小雅: 你这属于自己给自己上强度。胶带缠网线,家里还要吊机器人,你以后别跟我说别人不测。
老冯: 我承认。我一边骂评论区算三个幼儿,一边拿胶带糊自己的网络。我们俩谁也别装。
小雅: 行,我去把咖啡倒了。凉的喝下去,明天嗓子就废了。
老冯: 倒了吧。对了,想听下期的,用你常用的泛用型客户端订阅一下就行,更新了自动推给你。别用那种要登录的。
小雅: RSS 才是正经路子。算法喂你什么你就听什么,跟那台机器人的线一样,你走过去它不知道你在。
老冯: 这比喻有点狠。行,我洗手去了,松香味散了就收工。
小雅: 去吧。下期见,别又把卡扣弄断。