灵魂拷问:当下Claude Code、Codex只有 80 分,我们怎么敢让它上生产?

开发与运维智能应用安全

有段时间,我特别爱在下班前用代码助手“冲一把”。

picture.image

周五晚上七点,大家都准备走人,我还在改一个支付回调的接口,心想:反正逻辑不复杂,让助手帮忙改成新风控服务的调用得了。
几十秒,代码刷地一下出来了,看起来结构挺优雅,日志也打得很齐,单测还顺手生成了几个。

我一看测试全绿,心里那个爽。
提交、合并、关电脑、走人。

结果周一早会被产品点名:新用户支付成功了,但有一小撮人的状态一直卡在“待确认”。
顺着日志一查,问题很简单——助手把一个“幂等校验”的细节忽略了,多次重试时直接把某些边界情况吃掉了。

说实话,不是多高级的 bug,就是那种你多盯一眼就会发现的小坑。

那一刻对它的感觉特别矛盾:
一方面,确实帮我省了一大截时间。
另一方面,这口锅,最后还是得自己背。

那种“好用,但又不敢完全信”的状态,大概就是很多人口中的“80 分信任危机”。


1. 80 分的真实感受:顺手,又有点心虚

现在主流的智能代码助手,平均水平真不算低。
做一些日常开发的活,比如接口拼装、CRUD、写各种重复的脚手架,确实能明显感觉到:同样的需求,以前要一个小时,现在半个小时就能收工。
你甚至会下意识地依赖它:写一半,停几秒,看它怎么补。

问题在于,它不是每一刀都准。

一到安全相关的逻辑、并发、边界条件这些地方,它的翻车率就肉眼可见。
有些坑还特别阴间:代码风格整整齐齐,注释也有,跑起来也没报错,就是业务上悄悄错了一点点。

身边同事的反应挺有代表性:

  • • 有人说:“我就拿它当高级自动补全,心里踏实。”
  • • 有人说:“平时小需求用得飞起,真到核心逻辑就自动收手了。”
  • • 也有人踩过坑之后,变成那种:看一眼,怀疑一眼,永远不敢一次性全收。

它的麻烦就在这里:不是那种一眼就知道“靠不住”的工具。

而是那种平时帮你很多,偶尔害你一次,但那一次刚好在关键环节上。
久而久之,你对它的感觉就会变成:离不开,但也不敢靠得太近。


2. 与其纠结“它不完美”,不如想想:你打算怎么用它

有一次内部分享,一个同事问了个问题:
“要不要等助手再成熟一点,再考虑大规模用?不然总感觉在给未来埋雷。”

安全同学当场说了一句挺扎心的话:

“等它完全成熟,你可能早被那些敢冒险的人卷下去了。”

这话听着有点刺耳,但也很现实。
从模型本身来看,它短期内不会变成“永远不犯错”的存在。
就算能力继续进化,它的底层还是概率式的逻辑,不会突然变成编译器那种确定性工具。

那问题就变了味儿:

与其等它有 100 分的那一天,不如承认它现在就是 80 分。

然后认真想一个实际问题:

  • • 这 80 分,丢到什么场景里,是划算的?
  • • 又丢到什么场景里,是危险的?

如果你愿意调整一下心态,把它当成“永远在线、水平中上”的实习生,而不是“天降架构师”,后面的很多决策就好做多了。


3. 哪些活适合丢给“80 分实习生”?

后来我给自己和组里立了一条简单的规则:
别急着以“信任”作为出发点,先从“适合干什么活”开始。

有几类任务,我现在几乎是直接交给助手打底的:

  • • 高重复度的样板代码

DTO、转换器、Mapper、路由配置、参数校验模板,这些基本是它的主场。

我曾经做过一个很无聊但有效的实验:老系统从 XML 配置迁到注解,手写真的是折磨,让助手先打一版,再自己扫一遍特例,效率起码翻了一倍。

  • • 基于现有代码生成测试

不用指望它一次把所有用例写完,但让它先根据现有逻辑把正常路径、异常路径、边界参数都列出来,真的能省很多脑力。

你再在这个基础上删一删、改一改、加几个自己最担心的 case,既补了测试,又加深了对那块逻辑的理解。

  • • 重构草稿

经典场景:500 行的历史遗留大函数,谁动谁心慌。

我现在的做法是:先让助手给出两三版拆分方案,看它怎么切模块、怎么命名,再选一个大致方向自己接着改。

这样风险可控,也不至于卡在“第一刀怎么下”这种心理门槛上。

在这些场景里,你不要把命运交给它,要把它当成一个非常勤奋的搭档。

它来干粗活,你来拍板。
这个角色一旦定住,所谓的“信任危机”会立刻缓和很多。


4. 把它写的代码,当成CP给的

如果只能说一个最实用的习惯,那大概是这个:
心里默默把所有助手生成的代码,当作外包公司给你的。

什么意思呢?
就是你天然假设:

  • • 里面有价值的东西,但不能整段照单全收;
  • • 结构可能不错,但细节要自己抠;
  • • 提交之前,至少要自己能把核心逻辑讲清楚。

有些团队已经做得比较激进了:

  • • AI 参与生成的代码,在提交信息里要打标签;
  • • CI 里对这类提交跑更严格的测试集,甚至加一层针对“AI 历史错法”的专项用例;
  • • 代码评审时,看到一段风格特别“工整”的新逻辑,会直接问一句:哪部分是你自己写的?哪部分是助手提的?你检查到什么程度?

听起来有点麻烦,但至少有一个好处:
你不会再“无意识地”把一整块逻辑交给它。
它给出的,是提案、草稿、素材。
真正落地的,是你自己认过、扛得住的那一部分。


5. 有些地方,可以明确把门关上

说点有画面的翻车场景。

一个是权限系统。
有个团队用助手重写了一段 RBAC 的校验逻辑,单测写了不少,压测也跑过,大家都挺满意。
上线后才发现,有一种历史遗留的账号角色组合被误判成“有权限”,直接看到了不该看的数据。
这类问题,很难靠“多跑一遍测试”解决,只能一点点回溯。

另一个是加解密逻辑。
有人让助手设计了一个“看起来很聪明”的自定义加密方案,代码写得花里胡哨,变量名也挺专业。
安全同学扫了一眼:不符合任何成熟标准,有明显弱点,完全不该出现在线上。

所以现在我给自己定的“黑名单”大概有这么几类:

  • • 权限、鉴权、资金流转等核心逻辑,助手最多参与讨论和重构草稿,实现必须自己按标准来。
  • • 密码学、合规、隐私相关的实现,宁可看官方文档看到头疼,也别直接照着生成的代码用。

这些地方出一次问题,不是几个 bug 的事,可能直接升级成事故。
对这类场景说一句“这里你先别进来”,是很正常的边界感。


6. 你的直觉,是最后一道防线

有一点很多人容易忽略:
开发者自己的“不踏实感”,其实非常重要。

你应该有过这种体验:
助手给你生成了一段代码,逻辑看着也顺,测试也过了,但你就是觉得哪儿不对。
可能是一个 if 写得太含糊,可能是异常被“默默吞掉”,也可能是一个看着就很危险的默认值。

以前我会嫌自己想太多。
现在只要有这种感觉,就会强迫自己停下来,用口头语言把这段逻辑复述一遍:
“这个接口在各种输入下,会发生什么?哪几种情况,是我没讲清楚的?”

只要开始复述,很多问题就会浮出来:
你会发现有分支根本没考虑,有错误路径没日志,有状态变化说不清。
这些细节,模型很难替你担心。
能帮你的只有:经验、直觉,还有愿不愿意多花那几分钟的耐心。


7. 团队要把话说开,而不是各玩各的

还有一个挺现实的问题:

同一个团队里,有人天天用,有人死活不用。

用的人怕被误解成“偷懒”,不用的人又怕被贴上“落伍”的标签。
最后就变成:线下吐槽很多,正式的规范里一个字都不写。

其实完全可以把“怎么用助手”当成正常的工程话题来聊,而不是茶水间八卦。

比如:

  • • 明确团队推荐的使用场景:样板代码、测试生成、重构草稿等;
  • • 明确高风险场景的红线:权限、资金、合规这些地方统一不直接接受生成实现;
  • • 约定一个简单的标记方式,让大家知道哪块代码有助手参与过,后面排查问题也有线索。

这样一来,信任就不再是每个人各自瞎猜,而是逐渐沉淀成团队共识。
你用也好,不用也好,至少知道边界画在哪儿。


8. 写在最后

现在围绕代码助手的情绪,大概可以用四个字概括:又香又怕。 香的是效率,怕的是锅。

如果你对它还保持着本能的怀疑,那一点问题也没有。
甚至可以说,这是一个合格开发者该有的自我保护机制。

也许可以换个角度看这件事:
就当你们团队多了一个永远在线、平均水平 80 分的实习生。
你不会让实习生一个人改结算核心,也不会嫌实习生帮你搬砖。
你会给 TA 设范围、给流程设护栏、给自己留足检查的空间。

当你用这种方式跟它相处一段时间,再回头看,很可能会发现:
被修好的不只是你对这类工具的信任感,还有你们整个工程体系的安全感和透明度。

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
CV 技术在视频创作中的应用
本次演讲将介绍在拍摄、编辑等场景,我们如何利用 AI 技术赋能创作者;以及基于这些场景,字节跳动积累的领先技术能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论