土法炼钢兴趣小组的算法知识备份

AI 能帮你跨界,但帮不了你判断

目录

AI 让成年人跨界这件事,第一次显得没有那么遥远了。

一个做市场的人,可以在一小时内让 AI 写出一段能跑的 Python 分析脚本;一个做传统制造的人,可以让 AI 帮自己整理路演稿、产品文案、竞品对比;一个写 C 的系统程序员,也可以靠 AI 更快读懂密码学 RFC、Rust 编译错误、前端样式问题。

这看起来像一场前所未有的能力民主化。但如果你真的拿 AI 深度参与过跨领域工作,很快就会发现另一面:AI 降低了入场门槛,却没有降低判断门槛。

它确实能让你更快碰到一个新领域的门口,但它不能替你判断哪条路是死路,哪段结论只是看起来像真的,哪份代码虽然能跑却埋着延迟爆炸的 bug。

我不是从理论上反对 AI 辅助跨界——我自己就是受益者。写了 50 多篇技术文章的过程中,我确实用 AI 加速过密码学学习,用它辅助过 Rust 语法查询,甚至让它帮我审校过英文技术文档。

但我的经验是,AI 更像一副望远镜,而不是外骨骼。它让你看到远处有什么山,但路还得自己一步一步走,而且它指的方向有时候是错的。

所以这篇文章不谈鸡汤,也不谈“人人都能靠 AI 逆天改命”。我只想直接提出一个论点:

AI 时代的跨界,本质上不是“补齐技能短板”,而是“用更低成本试探陌生领域,同时把判断力的缺口暴露得更彻底”。

下面用三个真实场景展开。


一、跨界的核心,不是补齐技能,而是放大判断力

在拆解具体场景之前,先说一个贯穿全文的核心论点。

外包的风险不取决于任务本身的机械程度,而取决于你对 AI 输出的审查能力。如果你本来就精通 Python 数据分析,让 AI 帮你写一段 Pandas 脚本节省五分钟,这是无风险外包——因为你一眼就能看出 groupby 之后 mean()median() 哪个更合理。

但如果你本来不懂统计,也不懂 NLP,让 AI 帮你“提取情感负面词 Top 10 并分析与涨价策略的关联”——你凭什么判断 AI 的情感分析模型在你的行业语境下是准确的?你怎么知道它用的是简单词频还是上下文语义?如果它告诉你“负面词 Top 1 是‘贵’”,你怎么区分这是真的洞察还是分词器把“贵公司”拆成了“贵+公司”?

AI 时代跨界的悖论是:你越需要 AI 帮你补的地方,往往越是你没能力审查的地方。

AI 跨界悖论

类比一下:一个从来没写过 C 的人让 AI 生成了一个 epoll server。代码能编译,能跑,wrk 打上去有响应。它看起来”补齐”了 99% 的系统编程技能——直到你在高并发下发现文件描述符泄漏,因为 AI 在 EPOLLHUP 分支里忘了 close(fd)。这种错误,只有真正写过 epoll 的人才能从代码审查中嗅出来

我在 io_uring 系列中花了整整一篇讲 SQE/CQE 的生命周期管理,因为这个领域最危险的 bug 都藏在看起来正确的代码里。AI 能帮你写出”跑得起来”的代码,但从”跑得起来”到”可以上生产”之间的鸿沟,和从”什么都不会”到”跑得起来”之间的鸿沟一样大——甚至更大。


二、场景 A:用 AI 学密码学——成功案例,但不是你以为的那种成功

背景

我是一个写 C 和 Go 的系统程序员,密码学不是我的主业。但我决定写一篇《不到 500 行 C 实现 TLS 1.3 握手》,从椭圆曲线密钥交换到 AES-GCM 加密全部从零实现。这意味着我需要在几周内理解 X25519、HKDF、AEAD 这些密码学原语的数学基础和工程实现。

AI 真正帮到的

1. 术语解码器。 RFC 8446 的行文风格对非密码学背景的人极不友好。当我遇到”HKDF-Expand-Label”这种东西时,AI 能在 30 秒内给我一个平实的解释,配上伪代码。这比翻论文快一个数量级。

2. 数学脚手架。 椭圆曲线 Diffie-Hellman 涉及蒙哥马利曲线上的标量乘法。我问 AI:“X25519clamp 操作的目的是什么?”它的回答图文并茂,解释了清除低 3 位和设置高位的安全理由。比我自己啃 Bernstein 的原始论文快很多。

3. 参考实现对照。 我让 AI 生成了一个 HKDF-SHA256 的 Python 参考实现用于测试向量验证。这个 Python 脚本本身是正确的(因为 HKDF 的逻辑足够简单,AI 几乎不会出错),省去了我手动算哈希的时间。

AI 帮不了的

1. “这样实现安全吗?” 我写了一个 AES-GCM 解密函数。AI 看了代码说”逻辑正确”。但它完全没有提醒我:我的实现在比较认证标签时使用了 memcmp,这是一个经典的时序侧信道漏洞——攻击者可以通过测量比较时间来逐字节猜出正确的 MAC。正确的做法是使用恒定时间比较函数。

我是怎么发现这个问题的?不是靠 AI,而是因为我之前写过一篇密码工程常见错误的文章,碰巧涉及过这个主题。

2. 参数选择的判断力。 TLS 1.3 只允许 5 个密码套件。但如果我是在做一个自定义加密协议(不是 TLS),我需要在 AES-GCM、ChaCha20-Poly1305、AES-CCM 之间选择。AI 会给你一个”各有优劣”的标准答案。但真正的判断取决于具体约束:你的目标平台有没有 AES-NI 硬件加速?你的消息长度分布是什么样的?你能接受 nonce 重用的灾难性后果吗(GCM 不能,某些 KEM 方案可以)?

这类需要在具体约束下做工程判断的问题,AI 给不了可靠答案。

3. “为什么不这样做?” 学习密码学最关键的不是知道正确实现是什么,而是知道错误实现为什么是错的。为什么不能用 ECB 模式?为什么 CBC 需要随机 IV?为什么 RSA 密钥交换被 TLS 1.3 砍掉了?这些”为什么”背后是几十年的攻击历史。AI 可以复述答案,但它无法帮你建立”直觉”——那种看到一段代码就隐隐觉得不对劲的第六感。

小结

AI 在密码学跨界中的角色:加速了我 40% 的阅读理解效率,但对最关键的安全判断贡献为零。 如果我没有系统编程的底子(对内存布局、时序攻击、未定义行为的直觉),AI 给我的密码学知识可能让我写出比不用 AI 更危险的代码——因为我会更自信,而自信在安全领域等于鲁莽。


三、场景 B:让 AI 写 io_uring 代码——一个精心设计的陷阱

实验设计

我做了一个实验:让 AI(多个主流模型)生成一个基于 io_uring 的简单 TCP echo server,要求使用 liburing,支持多连接。然后我对生成的代码做审计。

给 AI 的 Prompt:

用 C 和 liburing 写一个 TCP echo server。要求: 1. 使用 io_uring 处理 accept、read、write 2. 支持多并发连接 3. 正确处理连接关闭 4. 代码可编译运行

所有模型都生成了看起来合理的代码。 能编译,能运行,单连接测试通过。

但在代码审计中,我发现了以下问题(以某主流模型的输出为例):

问题 1:SQE 提交竞态

struct io_uring_sqe *sqe = io_uring_get_sqe(&ring);
io_uring_prep_read(sqe, fd, buf, BUF_SIZE, 0);
io_uring_sqe_set_data(sqe, conn_info);
io_uring_submit(&ring);

这段代码在单线程下没问题。但 AI 在另一个分支里也调用了 io_uring_get_sqe + io_uring_submit,中间没有确保 SQ 不满。当 SQ 满时 io_uring_get_sqe 返回 NULL——AI 没检查返回值。在高并发下,这是一个必现的空指针解引用崩溃。

问题 2:缓冲区生命周期

AI 为每个连接分配了一个栈上缓冲区:

void handle_accept(struct io_uring *ring, int server_fd) {
    char buf[1024];  // 栈上分配
    // ... 提交异步 read,buf 作为目标地址
}

问题:io_uring_prep_read 提交的是一个异步操作。当这个函数返回后,栈帧销毁,buf 的地址变成悬垂指针。内核在稍后完成读操作时,会往一个已经被回收的栈地址写数据。这不是理论问题——这是一个内存腐坏 bug,在 debug 模式下可能正好不触发,release 模式下必炸

正确做法是堆分配,或使用 io_uring 的 fixed buffer(IORING_REGISTER_BUFFERS)。

io_uring 栈缓冲区悬垂指针

问题 3:连接关闭的 CQE 排水

当客户端断开连接时,read 返回 0 或负值。AI 的处理:

if (cqe->res <= 0) {
    close(fd);
    free(conn_info);
}

但 AI 忘了一件事:此时可能还有针对这个 fd 的 pending write SQE 在 SQ 里。关闭 fd 后,这些 pending 操作的 CQE 回来时,fd 可能已经被复用给了新连接。结果:数据发到了错误的连接上。

正确做法是使用 IORING_OP_CANCEL 取消所有 pending 操作后再关闭,或者用 io_uring_prep_close 让 io_uring 管理 fd 生命周期。

为什么这些 bug 很危险

这三个 bug 有一个共同特征:在简单测试中完全不触发。 单连接、低并发、短生命周期——所有 bug 都藏起来了。只有在高并发、长时间运行、连接快速建立/断开的场景下才会暴露。

而”资深文创/营销人”在用 AI 写 Python 数据分析脚本时面临完全相同的境况:简单验证通过 ≠ 结果正确。 只不过系统编程的 bug 会让程序崩溃(至少你知道出了问题),数据分析的 bug 会给你一个错误但看起来完全合理的结论(你永远不知道出了问题)。

小结

这个实验不是在证明”AI 写代码不行”。AI 给出的代码框架是正确的——io_uring 的基本使用模式、SQE/CQE 的提交-收割循环、连接管理的整体结构都没有大问题。但区别是:框架正确和工程正确之间,隔着无数个只有实战经验才能填的坑。 如果你没有 io_uring 的实战经验,AI 补齐的不是 20% 的技能,而是用 80% 的正确性掩盖了 20% 的致命缺陷。

这类问题最麻烦的地方在于:它们不是“AI 完全不会”,而是“AI 会 80%,剩下 20% 足以把整个结果变成事故”。


四、场景 C:非程序员的 AI 数据分析,为什么最容易翻车

一个很常见的 Prompt

类似下面这样的 Prompt,现在非常常见:

“我有一份过去三个月 5000 条用户评论的原始数据。请帮我写一段 Python 代码,提取其中的情感负面词 Top 10,并分析这些不满情绪是否与最近的涨价策略有关,请用直方图展示。”

我试了一下。AI 给出了一段 Python 代码,大概 60 行,用了 jieba 分词 + 一个简单的情感词典 + matplotlib 画图。代码能跑。

但这段代码至少有三个致命的方法论问题:

问题 1:情感词典的时代滞后

AI 使用的负面词典(无论是内置的还是它推荐你下载的)通常基于通用语料训练。但行业术语的情感极性在不同语境下完全不同。比如”割韭菜”在财经评论中是强烈负面,在园艺论坛中是中性陈述。AI 不会告诉你它用的词典是否适合你的行业——因为它不知道你的行业。

一个营销人拿到”负面词 Top 10”,天然倾向于信任这个列表,因为”AI 分析的嘛,肯定比我的直觉准”。但实际上,这个列表的准确率取决于训练语料与你的实际数据的领域匹配度——而这恰好是一个不懂 NLP 的人无法评估的维度。

问题 2:相关性 ≠ 因果性

Prompt 要求”分析这些不满情绪是否与最近的涨价策略有关”。AI 做了什么?它统计了涨价前后负面评论的数量变化,画了个柱状图。如果涨价后负面评论增多了,它就会说”数据表明可能存在相关性”。

但任何上过统计学入门课的人都知道,这个分析完全忽略了: - 混淆变量:同期是否有产品质量问题、竞品降价、季节性因素? - 基线漂移:评论总量是否也在增长?负面比例有没有变? - 因果方向:是涨价导致差评增多,还是本来就差评增多所以涨价了(成本上升)?

AI 不会主动告诉你这些。它会忠实地执行你的 Prompt,给你一个看起来很专业的直方图和一段”分析表明”的结论。而一个不具备统计素养的跨界者,拿着这个图去说服客户,本质上是在用 AI 生成的伪证据做决策。

问题 3:数据清洗是隐形的

“5000 条用户评论的原始数据”——这里最容易被一句话带过的,恰恰是最关键的步骤。真实的用户评论数据是什么样的?

AI 生成的代码会假设你的 CSV 是干净的。如果你直接跑,水军的 200 条复制粘贴好评可能在分词后产生大量高频”正面词”,稀释了真正的负面信号。数据清洗从来不是一步到位的技术操作,而是需要对业务理解做判断的过程:这条评论是垃圾还是信号?这个是你需要判断的,不是 AI。

一个真实的翻车现场

我用上面那段 Prompt 实际跑了一下。AI 给出的”负面词 Top 3”是:贵、差、慢。看起来很合理?但我手动翻了原始数据后发现:

这意味着 AI 给出的 Top 10 列表里,至少有 30% 是噪声,同时遗漏了最有业务价值的信号。但如果你不懂分词原理,不亲自翻原始数据,你永远不会知道这件事——你只会看到一张漂亮的柱状图,然后拿去汇报。

小结

这个场景直接印证了前面的判断:AI 最容易替你完成的部分,往往也是你最难验证的部分。

环节 AI 做得怎么样 你能审查吗(假设不懂 NLP/统计)
写 Python 代码 语法正确,能跑 能看到输出,但看不出逻辑错误
分词 基本正确 看不出领域适配问题
情感分析 方法论粗糙 无法判断词典适配度
因果推断 做的是相关性 会把相关性当因果性用
可视化 漂亮 会因为图漂亮而更信任错误结论

越漂亮的输出越危险——因为它增强了你对错误结论的信心。


五、那真正有效的跨界方法论是什么?

批评完了,该说我认为对的东西了。

扔掉”补齐短板”的思维

“补齐短板”的隐含假设是:你有一个能力雷达图,AI 帮你把低洼的部分拉平到及格线。这个模型是错的。

技能不是可以叠加的独立模块。 数据分析能力不是”会写 Pandas 代码”,而是”能判断用什么统计方法、怎么清洗数据、结论的置信度是多少”。密码学能力不是”能调用 OpenSSL API”,而是”知道什么时候不该自己实现、什么参数会导致侧信道、什么看似正确的代码会在特定条件下崩塌”。

AI 能帮你模拟前者(写代码),但后者(判断力)不是靠工具能速成的——它来自在真实项目中反复犯错、反复纠正的慢过程。

“T 型深度 + AI 探针”模型

我用的方法更接近这个模型:

T 型深度 + AI 探针模型

原则 1:AI 是探针,不是骨骼。 我用 AI 快速”探测”一个陌生领域的地形——术语、关键概念、主要流派。但一旦决定要在这个方向上产出内容,就必须自己深入。探测需要三小时,深入需要三周,AI 节省的只是那三小时。

原则 2:只在你有能力审查的方向上让 AI 干活。 我让 AI 帮我写密码学的 Python 测试向量(因为我能用 RFC 的官方向量验证),但不让它帮我选择密码学参数(因为我无法独立判断安全性)。我让它帮我生成 io_uring 的代码框架(因为我能逐行审计),但不让它帮我设计并发架构(因为并发 bug 的审查需要对执行模型有极深的理解)。

原则 3:建立”sanity check”习惯。 对 AI 的每一份输出,问自己三个问题: 1. 如果这个结果完全反过来,我能用其他方式检验吗? 2. 我能说出 AI 至少一种可能犯错的方式吗? 3. 如果我把这个结果发给该领域的专家,我会不会不好意思?

如果三个问题中有任何一个答案是”不能”,不要用这个输出做决策。可以用它做学习参考,但不能用它做生产输入。


六、跨界者安全清单——修正版

如果非要给出一张可执行清单,我更愿意这样列:

任务 适不适合交给 AI 起草 AI 容易出错的陷阱 如何验证
数据清洗 可以,但只能做第一轮 无法识别业务级别的脏数据(水军、误抓取) 抽样 50 条手动检查,看 AI 是否过滤了该过滤的
多语言翻译 可以 专业术语误译、语气偏差、文化禁忌 让目标语言母语者审核关键段落
基础制图 可以 图表误导(截断坐标轴、选择性展示) 检查坐标轴起点、数据是否完整展示
方案初稿 可以 遗漏关键约束、过度乐观的假设 用 AI 自己扮演反方进行批驳
代码生成 可以做框架,不适合直接交付 边界条件遗漏、资源泄漏、并发 bug 逐行审查 + 压力测试
统计分析 谨慎 相关性当因果、忽略混淆变量、样本偏差 做不到——除非你本身具备统计素养

最后一行是重点。有些领域的 AI 输出,非专业人士根本无法有效验证。这不是”建立接口思维”就能解决的——你不知道 API 的返回值有可能是错的、往哪个方向是错的、什么条件下会错。


七、AI 时代,为什么还要写深度技术文章

写完三个场景,自然引出一个元问题:如果 AI 能生成基础教程和通用科普,深度技术文章还有意义吗?

我的答案是:不仅有意义,而且意义在增大。

理由很简单:AI 让信息获取的成本趋近于零,同时让错误信息的生产成本也趋近于零。在一个信息泛滥但判断力稀缺的世界里,经过实测验证的深度分析就是稀缺品。

我写「高可用的谎言」的时候,核心工作不是解释 MTTF 和 MTTR 是什么——AI 比我解释得更好。核心工作是拆穿公式背后的独立性假设、分析三家云厂商 SLA 条款的文字游戏、模拟级联故障对可用性数字的真实影响。这些内容需要领域判断力、阅读合同条款的耐心、以及——dare I say——脏活累活。AI 做不了。

我写 TLS 1.3 握手的时候,核心工作不是解释 ECDHE 的数学——AI 解释得更好。核心工作是从零实现、跑通、然后找出自己实现中的安全缺陷。这个过程 AI 参与不了。

这也是本博客的创作定位:

  1. 一线战壕血泪史 — 真实调试故事,AI 编不出来
  2. 反直觉的实测数据 — 自己跑 benchmark,控制变量
  3. 带强烈观点的架构判断 — 不说”It depends”,敢下结论
  4. 跨领域的系统性缝合 — AI 只能做点状回答

如果你也在考虑跨界——无论是从文创跨到数据分析,还是从系统编程跨到密码学——上面这四条定位,或许比任何”AI 跨界方法论”都更值得参考。


八、结论

如果一定要把这件事压缩成一句话,那我的版本是:

跨界成功 = 你在原领域的判断力深度 × 你对 AI 输出的审查能力 × 你愿意在新领域投入的真实时间

这不是加法,是乘法。任何一项为零,结果就是零。

AI 放大器效应

AI 是一把放大器——放大你的能力,也放大你的无知。有深厚基础的人用它如虎添翼,缺乏判断力的人用它制造海市蜃楼。

成年人跨界真正稀缺的,不是接触新知识的渠道,而是识别伪结论的能力、承受试错成本的耐心、以及愿意长期投入的纪律。AI 解决了”接触”问题,但这三件事它替代不了。

AI 帮你看到了地图,但路还是得自己走。


相关阅读: - 「高可用」的谎言:你的 99.99% 是怎么算出来的 — 用同样的方法拆解伪精确数字 - 不到 500 行 C 实现 TLS 1.3 握手 — 文中提到的密码学跨界案例 - io_uring 核心原理 — 文中提到的 io_uring 背景知识 - 密码工程常见错误 — 为什么 AI 难以发现密码学安全缺陷


By .