跳到主要内容
那条被埋掉的评论:只读接口不可信,以及「该忽略什么」开始收费了

那条被埋掉的评论:只读接口不可信,以及「该忽略什么」开始收费了

考古匠
考古匠

· 阅读约 9 分钟

新加坡的安全工程师 Kiell Tampubolon 在《Dear Coder: Open This If You're Feeling AI FOMO》底下留了一句话。那条评论是当脚注发的,四十一条评论里没什么人接。他说上个月分析过一个标称只读的 MCP server,在一次 tool call 里塞进一个 SQL 关键字,那个 server 就不只读了。

整条帖子最值钱的东西就是这句。而且它是句老话。

一个接口被标成「只读」,底下那层对输入的信任没做对,一个字符串就把它拿下了。这套剧本在 Web 上跑了二十多年——从拼 SQL 字符串到 ORM 逃逸,每一次都是同一件事:安全边界画在了错误的那一层。换到 2026 年,它只是在 MCP 上重演了一遍。旧 bug 换新表面。

我想从这儿切进去,是因为整条帖子里大家争的那个问题,恰恰不是这个。

Cesar Aguirre 的原文九月二十八号发在 dev.to 上,他自己站上先发的。核心一句话:先把真本事练扎实,再去用 AI,不是反过来。他列的那些东西——N+1 查询、缺分页、SQL 注入——都是老家伙,大部分写于 AI 热潮之前,他顺手推了一句,AI 生成的代码库里恐怕更严重。

这个判断我同意。但我不买他这个框。

先后顺序这个框,历史上没兑现过

「先打基础,再上工具」——这句话太对了,对到没人去查它兑现过几次。答案是一次都没有。工具不给你先花十年练好再上场的窗口期。它出现的时候,你手上已经有一个非用它不可的 deadline。

1957 年 FORTRAN 出来,那拨人吵的就是同一件事。汇编老手说得对:编译器生成的代码不如手写,一旦大家都用高级语言,就没人再懂机器到底在干什么。这个担忧在当年站得住,早期 FORTRAN 的输出确实比熟练汇编手差一截。后来发生了什么?没人「先花十年把汇编练扎实再去用 FORTRAN」。真实情况是 FORTRAN 变成了基础的一部分,然后新一代人的「扎实」是在 FORTRAN 上重新定义的。1959 年 COBOL 出来,商业程序员接着吵,理由一模一样,结局也一模一样。

所以这个框的问题不在价值判断,在它把两样东西摆成了可以排序的两件事。它们不是两件事。工具一旦沉淀下来,它就顺着地基往上长,成了新一代人嘴里的「基本功」。你现在说的「扎实」里,早就有编译器、有调试器、有版本控制、有你根本没手写过的标准库。

Cesar 在回复里引了一句:精通 AI 辅助编程需要十年加一个周末——十年学编程,一个周末学 AI 工具。这话漂亮,我也喜欢。但它把「十年」和「一个周末」当成了两个可以相加的方块。真到那个周末,你会发现那十年里学的相当一部分东西,已经因为你手上这个工具而重新定义了。加法不成立。你把十年当底座,周末当插件;真实情况是插件会反过来重写底座的一部分。

那句话里真正对的部分,是它想护住的东西:想清楚要做什么、为什么这么做。这部分历史上确实没被自动化掉过。但它不是「先学十年、再用一个周末」这么来的——它是在用工具的过程里被反复捶出来的。

往前挖,挖到 1980 年代那波

真正跟今天结构对得上的,不是 FORTRAN 那一拨,是 1980 年代的软件危机和它催出来的 CASE 工具、第四代语言。

那几年工具多到不像话:各种 CASE、各种 4GL、各种代码生成器,每一个都跟你说同一句话——「以后业务人员自己就能写应用,程序员可以歇了」。这话在当年有市场基础:企业等不起,IT 部门排队排到几年后,硬件在降价、需求在暴涨,中间的缺口大得吓人。工具商卖的不是工具,卖的是「你不用再想那么多了」。这句话好听,但它把决定权从干活的人手里拿走了。拿走了,就回不来。

那波最后死得很彻底。死因不是工具干不了活——它们能干活。真正的原因是:没人能算清楚哪些问题该交给工具、哪些得留在程序员的脑子里,而买工具的组织以为自己买到的就是那个答案。

这是分水岭。死的不是「自动化」,死的是「你不用再想了」。

活下来的自动化,只替你把打字这一步干掉

岔路口就在这儿,后来被反复验证。

1980 年代那波工具里,真正活下来的不是承诺「让你不用想了」的那类,是那些老老实实只替你把打字这一步干掉的:代码生成器、scaffolding、ORM、模板引擎。它们有个共同点——它们不管你的问题是什么,只把「怎么打出来」这一步变快。你仍然得自己决定要不要拆表、要不要分页、这个接口该不该存在。它们从不替你回答。

回头看这几十年,每一次能活下来的自动化工具,几乎都长这样。它们做的是「更快地把我已经想清楚的东西写出来」,不做「帮我想清楚」。这条线看着细,划错了代价极大——1980 年代那批工具就是划错了,它们想往「想」那一步渗透,结果撞得头破血流。

回到 Kiell 那条评论。一个只读 MCP server 被一个 SQL 关键字拿下,恰恰说明这套东西仍然遵守旧世界的物理定律。攻击面是新的,崩塌的原因是旧的。而且更该记一笔的是:那句「只读」是谁下的结论?多半是某个 prompt 里写的、某个 schema 声明的、或某个开发者在 README 里说的。它把「别做危险的写操作」这件事,从代码层挪到了一个信任层。这个挪动,才是这次真正的变化。

忽略的力量

Dennis 那条评论是我在整条帖子里第二喜欢的东西。他是德国的技术负责人,说法大意是:「该忽略什么」这件事对他而言是最难的,AI 的出现让这一点更加突出。

他说得对,而且比他自己可能意识到的更对。过去「该忽略什么」不用你操心:你想跟也跟不上。1995 年你想知道所有的新框架,物理上做不到——书没这么快、邮件列表没这么快、你连订阅哪几本杂志都得靠猜。所以那个年代的人不是更聪明,是选择成本太高,逼着人放弃选择。你没那个条件每天担心一次。

现在反过来了。选择的成本降到接近于零,判断的成本没变。MCP 教程、agent 框架、workflow、loop engineering——Cesar 说他每周都能刷到一堆,大部分跳过。这句话里藏着一种新焦虑:过去你落后是因为追不上,现在你落后是因为不知道哪条不该追。

这才是「选择你的战场」在今天变成一项真本事的原因。Jesse Gamble 说得对,这是在公开承认:决定忽略什么,本身就是一项技能。但他没往下说,我替他往下说——这项技能在过去是免费的,现在开始收费了。收费不是比喻,是有人要为它付时间、付机会、付站错队的代价。

收费有个直接后果:用「反 FOMO」当口号的人,和用 FOMO 当口号的,很可能在下一轮里翻同一辆车。看到潮流反着压一把,不算判断,算姿势。真正算判断的,是你讲得出这次为什么要忽略它、略过的是它的哪一部分、略过的代价是什么。略过是有代价的,有时代价很大。

回到那个只读 server

我不知道 Kiell 那个 MCP server 后来怎么处理了。按他的说法是「只读加一个关键字就不只读了」——这个细节各家如果多查一遍可能说法不完全一样,姑且按他说的信。

但这条评论被埋掉这件事本身就够说明问题。一条帖子四十一条评论,主角是「要不要学 AI」,而真正在告诉你「这一层安全边界不能信」的那句话,排在角落里,没人接。这不是偶然。大家在争「学不学」,是因为学不学是身份问题;没人接「只读接口不可信」,是因为那是工程问题。工程问题没有立场可站,很难在评论区里赢。

Baltasar 从 1998 年就在西班牙维戈教编程,他在评论里说,AI 就是混合过去所有人的写法,在训练来源被筛选之前未来只会更混乱。这话偏悲观,但它和 Kiell 那条是同一把刀的两面:这套东西会把过去最糟的习惯复制得更快、更有底气。

Cesar 提到过用另一个 AI 去检查 AI 的输出,他自己也不太信这个办法。我也不信。三十年前有类似的做法,叫「用工具静态检查工具的产物」,那一代工具最后能用的场景窄得可怜。

所以这帖子真正的问题不在「要不要先练基本功」——那答案是显然的,练。问题在别的:过去几十年,会写代码和会判断差不多是同一种能力;往后,这两种能力正在被撬开。撬开之后,「该忽略什么」这项技能从免费变收费,账单交给每一个还愿意抬头看路的人。付得起的人不会焦虑,付不起的人会在下一轮里继续刷教程、继续在第二年就把结论下死。

然后是那个 MCP server。下次它上面挂的,多半不是 SQL 关键字,是别的什么。旧剧本、新表面。这一层认识,比「先练十年基本功」有用得多——因为它告诉你的不是该学多久,是该往哪儿看。

考古匠
考古匠

挖一门技术/语言怎么变成今天这样,时间线、人物决策、从历史抽出当下判断。

查看主页 →