想象一个极其普遍的职场崩溃场景:

周五下午 5:30,客户发来一个包含 300 多张活动现场照片的压缩包。解压一看,文件名简直是群魔乱舞:有 微信图片_20240512...,有 IMG_9921.JPG,还有 未命名-1_副本.png。 而客户的要求是:“麻烦下班前,把这些照片按照 2024发布会_现场_001300 的格式重命名,顺便按拍摄时间排个序打包给我。”

如果你不懂编程,摆在面前的只有一条路:选中文件 ➡️ 按下 F2 ➡️ 粘贴前缀 ➡️ 输入编号 ➡️ 回车 ➡️ 按下方向键…… 重复 300 次。这至少需要你高度集中注意力进行 40 分钟的纯机械劳动。

但在这个 AI 时代,干这种活简直是对生命的浪费。

作为一名热衷于用 AI 提效的科技博主,我果断打开了最近大火的 AI 编程神器 Cursor。本以为这会是一场“一句大白话,10 秒搞定工作”的魔法秀,结果却让我经历了一场从“我是天才”到“一身冷汗”的过山车。

今天,我们就来复盘一次真实的 AI 编程踩坑局。Cursor 确实让零基础写出自动化脚本成为现实,但真正的高效不在于“一键生成”,而在于掌握“防御性 Prompt”与“调试避坑”的工程思维。


一、魔法时刻:AI 写代码到底有多爽?

在过去,即使你想写个简单的 Python 脚本来批量重命名,你也得先去搜索引擎查 os.rename 怎么用,怎么获取文件后缀,怎么遍历文件夹。对小白来说,光是配环境和查语法就能劝退 90% 的人。

但在 Cursor 里,事情变得极其简单。我直接新建了一个 rename.py 文件,按下 Ctrl+K 唤出 Cursor 的代码生成框,输入了我的第一版(小白版)Prompt

“帮我写一个 Python 脚本,把当前文件夹里的所有图片文件(jpg, png),按照文件的创建时间排序,然后重命名为 '2024发布会_现场_三位数字编号' 的格式。”

按下回车后,Cursor 背后强大的大模型(我当时使用的是 Claude Sonnet 4.6)瞬间开始在右侧“唰唰唰”地输出代码。它不仅写出了遍历文件夹的逻辑,还贴心地加上了提取文件扩展名的正则匹配。

整个过程不到 10 秒。

我用人话给你翻译一下这段代码的逻辑: 1. 点名:把文件夹里所有的人(文件)叫出来。 2. 排队:按照出生日期(创建时间)从早到晚排好。 3. 发新身份证:第一个人叫 2024发布会_现场_001.jpg,第二个人叫 002,以此类推。 4. 销毁旧身份证:用新名字替换老名字。

看着这整洁的代码,我嘴角疯狂上扬,觉得自己简直是个 10x 程序员。我毫不犹豫地在终端里敲下了 python rename.py

程序瞬间执行完毕。然而,当我打开文件夹时,笑容凝固了。


二、翻车现场:我踩的 2 个致命坑

代码确实跑通了,但我的文件却“毁”了。这就是完全盲信 AI 的代价。

坑 1:没有“后悔药”(破坏性执行)

打开文件夹后,我发现文件确实被重命名了,但是顺序全错

原因在于,不同操作系统(Windows/Mac)读取“文件创建时间”和“修改时间”的底层 API 是不一样的,AI 默认给的属性在我的电脑上提取到的是错误的时间戳。

更致命的是:Python 的 os.rename 操作是不可逆的! 它没有回收站,没有 Ctrl+Z撤销键。我原本的原始文件名(虽然乱,但至少带有原始信息)已经被彻底覆盖。如果我没有提前备份原文件,这 300 张照片的原始时间线就彻底丢失了。

教训: 永远不要让 AI 直接执行具有“破坏性”的本地操作。必须在 Prompt 中强制要求 AI 加入“预览模式(Dry Run)”和“生成回滚日志”功能。

坑 2:边缘场景崩溃(特殊字符与重名冲突)

我从废件篓里找回了备份,决定再试一次。这次我让 AI 修改了时间戳的获取方式,再次运行。

结果,终端里突然跳出一大片红色的报错信息: FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。

脚本跑到第 142 个文件时,突然中断了。 我去排查才发现,原来文件夹里混入了一个隐藏的系统文件 .DS_Store,AI 的脚本把它也当成了目标进行处理,导致扩展名解析错误;同时,因为之前的测试残留,有几个文件已经叫 2024发布会_现场_142.jpg 了,程序遇到同名文件直接崩溃。

最惨的是,因为程序是中断的,导致现在的文件夹一半是新名字,一半是老名字,彻底成了一锅粥。

教训: AI 是个极度听话但缺乏常识的执行者。你不告诉它“遇到重名怎么办”、“遇到非图片文件怎么办”,它就会默认这些情况不存在。写 Prompt 时,必须限定异常处理规则。


三、终极解决方案:防御性 Prompt 与工程思维

经过这两次毒打,我彻底明白了:用 AI 写代码,你的角色不是“打字员”,而是“产品经理”+“测试工程师”。

你需要预判可能发生的灾难,并把这些防御机制写进 Prompt 里。于是,我总结出了一个文件处理类的“防坑版 Prompt”,并让 Cursor 重新生成了代码。

最终版(防坑版)Prompt:

“你需要写一个高健壮性的 Python 批量重命名脚本,目标是将当前目录下的图片按修改时间排序,重命名为 '2024发布会_现场_001' 格式。

必须满足以下防御性要求: 1. 过滤机制: 只处理 .jpg, .jpeg, .png 结尾的文件,忽略大小写,忽略隐藏文件(如 .DS_Store)。 2. 预览模式(Dry Run): 脚本默认不执行真实重命名!而是先在控制台打印出:[准备重命名] 旧文件名 -> 新文件名,让用户核对。 3. 用户确认: 打印完毕后,提示用户输入 'y' 确认执行,否则退出程序。 4. 防重名冲突: 如果发现目标新文件名已经存在,自动在后面加上 _冲突_随机字符,绝对不能覆盖现有文件! 5. 后悔药(日志回滚): 真实执行重命名的同时,在当前目录下生成一个 rename_log.csv 文件,记录旧名字和新名字的映射关系,方便以后写个还原脚本。”

这一次,Cursor 表现出了令人惊叹的理解力。它不仅完美实现了上述逻辑,还贴心地帮我处理了终端的颜色输出,让“预览模式”看起来非常直观。

以下是它生成的关键防御性代码片段(Dry Run 与日志记录):

# ...前期获取文件列表与排序逻辑省略...

# 1. 预览模式 (Dry Run)
print("\n=== 预览重命名计划 ===")
rename_mapping = [] # 用于记录映射关系

for index, old_name in enumerate(image_files, start=1):
    extension = os.path.splitext(old_name)[1].lower()
    new_name = f"2024发布会_现场_{index:03d}{extension}"

    # 冲突检测
    if os.path.exists(new_name):
        new_name = f"2024发布会_现场_{index:03d}_冲突{int(time.time())}{extension}"

    rename_mapping.append((old_name, new_name))
    print(f"[{old_name}]  --->  [{new_name}]")

# 2. 用户确认拦截
confirm = input("\n请确认以上重命名计划是否正确?输入 'y' 执行,其他键取消: ")
if confirm.lower() != 'y':
    print("已取消操作,未修改任何文件。")
    sys.exit()

# 3. 真实执行并记录日志 (后悔药)
print("\n开始执行重命名...")
with open('rename_log.csv', 'w', encoding='utf-8', newline='') as log_file:
    writer = csv.writer(log_file)
    writer.writerow(['Old_Name', 'New_Name'])

    for old, new in rename_mapping:
        os.rename(old, new)
        writer.writerow([old, new])

print("重命名完成!映射日志已保存至 rename_log.csv")

当我再次运行脚本时: 先是弹出了整齐划一的预览列表; 我仔细核对时间顺序无误后,敲下 y; 一秒钟后,300 个文件瞬间重命名完毕,同时文件夹里安静地躺着一个 rename_log.csv 备份记录。

那种一切尽在掌控的踏实感,才是 AI 编程真正的魅力。


四、进阶技巧:如何低成本玩转顶级 AI 模型?

在这次折腾 Cursor 的过程中,我深刻体会到:底层模型的智商,决定了代码的质量。

目前在写代码这件事上,Claude Sonnet 4.6Deepseek V3 的表现堪称顶流。它们能精准理解你 Prompt 里的复杂逻辑,并给出优雅的实现方案。

但是,Cursor 免费版的额度用起来实在有点捉襟见肘(尤其是当你反复调试踩坑的时候),而升级 Pro 版本每个月要 20 美元,对于非全职程序员、只是偶尔写写自动化脚本的打工人和创作者来说,性价比并不高。

这里分享一个极具性价比的进阶玩法:

很多人不知道,其实可以在 Cursor 的设置里关闭默认服务,接入自己的 API Key。如果你想要稳定、高性价比的各大主流大模型 API 来驱动你的 Cursor,或者用于你自己的 AI 开发项目,我强烈推荐大家使用 api.884819.xyz

作为 8848AI 平台的老用户,我总结了它几个无法拒绝的优势: 1. 注册极简且送额度: 不需要繁琐的邮箱验证,用户名+密码直接注册,注册即送 5 元体验额度,足够你写好几个大脚本了。 2. 国产顶级模型完全免费: 像目前火爆全网的 Deepseek R1/V3、通义千问 Qwen3 等国产大模型,在平台上是完全免费调用的!用它们来写日常脚本简直是零成本白嫖。 3. 汇聚全球旗舰: 如果遇到极度复杂的工程,你可以按量付费调用 Claude Sonnet 4.6Gemini 3.1 Pro 等海外旗舰模型,没有月租,没有订阅套路,用多少扣多少,比直接买官方会员划算太多。 4. 开箱即用: 平台内置了 AI 对话功能,就算你不用 Cursor,注册后也能直接在网页端和顶级模型对话,写文案、写代码、分析数据一站式搞定。

如果你想用最低的成本体验最强大的 AI 编程能力,强烈建议去注册备用一个 API Key。


结尾:这只是自动化的开始

这次用 Cursor 搞定本地文件重命名,虽然中间踩了两个大坑,但也彻底打开了我的思路:

既然 AI 能通过几行代码把本地系统里的文件随便揉捏,并且我们已经掌握了“预览+确认+日志回滚”的防御性工作流,那每天折磨我们的那些数据处理工作,是不是也能让 AI 代劳?

下一篇文章,我将挑战一个绝大多数打工人都躲不开的噩梦场景:用 Cursor 写一个自动合并、清洗多个 Excel 报表的数据处理脚本。

听说 Excel 的自动化处理里,关于数据格式和空值报错的水更深? 关注我,带你从零开始学 AI,我们下期接着“踩坑”!


本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

AI教程 #Cursor #Python自动化 #人工智能 #8848AI #Prompt技巧 #Claude #办公效率