上章学了3个框架——RTC、EMI、SVC。现在直接动手。5分钟从零口述出一个能用的工具。不是Hello World那种玩具是一个你真的会用的小工具——批量文件重命名器。阿Lee选这个项目是有原因的功能简单明确5分钟真的能做完实用——谁电脑里没一堆乱七八糟的文件名完整——从口述到运行体验完整的口述编程流程准备好了打开Trae我们开始。准备工作30秒打开Trae新建一个项目文件夹随便建一个测试文件夹里面放10个文件名字乱一点plaintext1234567891011IMG_20260101_001.jpgIMG_20260101_002.jpgdoc_最终版.docxdoc_最终版2.docxdoc_最终版最终版.docxreport-2025-Q4.xlsxreport-2025-Q4-副本.xlsxscreenshot_01.pngscreenshot_02.png未命名.txt够乱吧——这还是阿Lee故意收敛了的真实场景更离谱。第1轮用RTC框架起手在Trae的对话框里输入你是一个Python工具开发者帮我写一个批量文件重命名脚本功能把指定文件夹里的文件按规则批量重命名。约束1用pathlib不用os库 2必须先预览重命名结果用户确认后再执行 3加完整的错误处理 4命令行运行这就是RTC框架——角色Python工具开发者任务批量文件重命名脚本约束4条具体要求。等AI生成代码。大概10-15秒。阿Lee拿到的那一版代码大概长这样python1234567891011121314151617181920212223242526272829303132333435363738394041424344454647from pathlib import Pathdef preview_rename(folder_path, rule):预览重命名结果folder Path(folder_path)if not folder.exists():print(f错误文件夹 {folder_path} 不存在)return []rename_pairs []for f in sorted(folder.iterdir()):if f.is_file():new_name rule(f.name)if new_name ! f.name:rename_pairs.append((f, f.parent / new_name))return rename_pairsdef execute_rename(rename_pairs):执行重命名success 0for old_path, new_path in rename_pairs:try:old_path.rename(new_path)success 1except Exception as e:print(f重命名失败{old_path.name} - {new_path.name}原因{e})print(f完成成功重命名 {success}/{len(rename_pairs)} 个文件)if __name__ __main__:# 规则示例把文件名中的空格替换为下划线转小写folder input(请输入文件夹路径)rule lambda name: name.replace( , _).lower()pairs preview_rename(folder, rule)if not pairs:print(没有需要重命名的文件)else:print(\n预览重命名结果)for old, new in pairs:print(f {old.name} - {new.name})confirm input(\n确认执行(y/n))if confirm.lower() y:execute_rename(pairs)else:print(已取消)第1版代码能跑但问题不少——重命名规则太简单只能替换空格转小写没有支持多种规则的选项用户得手动输入路径不方便这就是RTC起手的典型结果方向对了细节不够。没关系EMI框架来迭代。第2轮用EMI框架迭代在第1版的对话基础上继续说在上面的代码基础上做以下修改1加上多种重命名规则替换指定字符串、添加前缀/后缀、序号重命名 2让用户选择使用哪种规则 3路径可以通过命令行参数传入AI在第1版基础上修改大概20秒出结果。阿Lee拿到的第2版增加了这些python12345678910111213141516171819202122232425import argparsefrom pathlib import Pathimport redef rule_replace(name, old_str, new_str):规则1替换指定字符串return name.replace(old_str, new_str)def rule_prefix(name, prefix):规则2添加前缀return prefix namedef rule_suffix(name, suffix):规则3添加后缀在扩展名之前stem Path(name).stemext Path(name).suffixreturn f{stem}{suffix}{ext}def rule_number(name, number, total):规则4序号重命名ext Path(name).suffixreturn f{number:0{len(str(total))}d}{ext}# ... 预览和执行逻辑同第1版加上规则选择菜单好多了4种规则覆盖了最常见的场景。但还有一个问题——没有撤回功能。万一改错了文件名回不去。第3轮继续EMI迭代再加一个撤回功能执行重命名前自动保存一份映射表旧名→新名如果用户想撤回读取映射表恢复原文件名AI又加了一段python1234567891011121314151617181920212223import jsonUNDO_FILE .rename_undo.jsondef save_undo_map(rename_pairs):保存撤回映射undo_map {str(new): str(old) for old, new in rename_pairs}with open(UNDO_FILE, w, encodingutf-8) as f:json.dump(undo_map, f, ensure_asciiFalse, indent2)def undo_rename():撤回上次重命名if not Path(UNDO_FILE).exists():print(没有找到撤回记录)returnwith open(UNDO_FILE, r, encodingutf-8) as f:undo_map json.load(f)pairs [(Path(new), Path(old)) for new, old in undo_map.items()]execute_rename(pairs)Path(UNDO_FILE).unlink() # 删除撤回记录3轮下来这个工具已经很完整了——4种重命名规则 预览确认 撤回功能。运行效果阿Lee用测试文件夹跑了一遍plaintext123456789101112131415161718192021$ python rename_tool.py ./test_files请选择重命名规则1. 替换字符串2. 添加前缀3. 添加后缀4. 序号重命名选择1输入要替换的字符串最终版输入替换为留空则删除预览重命名结果doc_最终版.docx - doc_.docxdoc_最终版2.docx - doc_2.docxdoc_最终版最终版.docx - doc_.docx⚠️ 检测到重命名后可能冲突doc_.docx是否继续(y/n)n已取消看到没——阿Lee故意没加冲突检测但AI在第2版里自己加了这就是RTC框架里角色的威力——当你告诉AI你是一个Python工具开发者它会自动考虑边界情况。换一种规则再试plaintext123456789101112131415161718选择4序号起始值1预览重命名结果IMG_20260101_001.jpg - 01.jpgIMG_20260101_002.jpg - 02.jpgdoc_最终版.docx - 03.docxdoc_最终版2.docx - 04.docxdoc_最终版最终版.docx - 05.docxreport-2025-Q4.xlsx - 06.xlsxreport-2025-Q4-副本.xlsx - 07.xlsxscreenshot_01.png - 08.pngscreenshot_02.png - 09.png未命名.txt - 10.txt确认执行(y/n)y完成成功重命名 10/10 个文件干净利落。10个乱七八糟的文件3秒搞定。复盘5分钟里发生了什么表格步骤框架耗时做了什么第1轮RTC1分钟起手拿到基础版本第2轮EMI1.5分钟加4种规则命令行参数第3轮EMI1分钟加撤回功能测试手动1.5分钟跑了2遍验证功能合计5分钟完整可用的工具如果传统方式写这个工具呢阿Lee估算——写基础重命名逻辑15分钟加预览功能10分钟加多种规则20分钟加撤回功能15分钟加错误处理10分钟测试调试20分钟合计约90分钟5分钟 vs 90分钟提效18倍。这不是夸张是口述编程的真实数据。AI帮你省掉的不是思考的时间而是编码调试的时间。你只需要想清楚要什么告诉AI它帮你写。阿Lee的复盘心得3轮口述做完这个小工具有3个感受特别深1. RTC起手的质量决定了整个项目的效率第1轮我给了4条约束AI出来的代码方向基本正确。如果我只说帮我写个重命名工具大概率要改5轮以上。约束越具体迭代越少。2. 每轮只改一个核心需求第2轮我加了4种规则命令行参数看起来改了两件事但其实都是丰富功能这一个方向。如果你一轮里既改功能又改架构AI容易顾此失彼。3. 必须跑一遍再迭代每一轮我都是先运行代码、看效果再决定下一轮改什么。别光看AI输出的代码觉得差不多就继续——差不多和能用之间差着10个bug。你刚刚完成了人生中第一次口述编程——是不是比想象中简单5分钟一个小工具从零到可用。这不是上限是起点。下章开始阿Lee带你做真正的项目——用SVC框架做一个完整的Web应用。5分钟的小工具只是热身Web应用才是口述编程真正发力的战场。阿Lee | 10年嵌入式老兵转AI | 口述编程vibe-coding专栏专栏导航[Ch1]认知 → [Ch2]工具 → [Ch3]环境 → [Ch4]进阶 → [Ch5]心法 →[Ch6]第一次→ [Ch7-10]实操 → [Ch11]变现 → [Ch12]避坑
口述编程实战:5分钟从零写出批量文件重命名工具(vibe-coding第一次实操)
上章学了3个框架——RTC、EMI、SVC。现在直接动手。5分钟从零口述出一个能用的工具。不是Hello World那种玩具是一个你真的会用的小工具——批量文件重命名器。阿Lee选这个项目是有原因的功能简单明确5分钟真的能做完实用——谁电脑里没一堆乱七八糟的文件名完整——从口述到运行体验完整的口述编程流程准备好了打开Trae我们开始。准备工作30秒打开Trae新建一个项目文件夹随便建一个测试文件夹里面放10个文件名字乱一点plaintext1234567891011IMG_20260101_001.jpgIMG_20260101_002.jpgdoc_最终版.docxdoc_最终版2.docxdoc_最终版最终版.docxreport-2025-Q4.xlsxreport-2025-Q4-副本.xlsxscreenshot_01.pngscreenshot_02.png未命名.txt够乱吧——这还是阿Lee故意收敛了的真实场景更离谱。第1轮用RTC框架起手在Trae的对话框里输入你是一个Python工具开发者帮我写一个批量文件重命名脚本功能把指定文件夹里的文件按规则批量重命名。约束1用pathlib不用os库 2必须先预览重命名结果用户确认后再执行 3加完整的错误处理 4命令行运行这就是RTC框架——角色Python工具开发者任务批量文件重命名脚本约束4条具体要求。等AI生成代码。大概10-15秒。阿Lee拿到的那一版代码大概长这样python1234567891011121314151617181920212223242526272829303132333435363738394041424344454647from pathlib import Pathdef preview_rename(folder_path, rule):预览重命名结果folder Path(folder_path)if not folder.exists():print(f错误文件夹 {folder_path} 不存在)return []rename_pairs []for f in sorted(folder.iterdir()):if f.is_file():new_name rule(f.name)if new_name ! f.name:rename_pairs.append((f, f.parent / new_name))return rename_pairsdef execute_rename(rename_pairs):执行重命名success 0for old_path, new_path in rename_pairs:try:old_path.rename(new_path)success 1except Exception as e:print(f重命名失败{old_path.name} - {new_path.name}原因{e})print(f完成成功重命名 {success}/{len(rename_pairs)} 个文件)if __name__ __main__:# 规则示例把文件名中的空格替换为下划线转小写folder input(请输入文件夹路径)rule lambda name: name.replace( , _).lower()pairs preview_rename(folder, rule)if not pairs:print(没有需要重命名的文件)else:print(\n预览重命名结果)for old, new in pairs:print(f {old.name} - {new.name})confirm input(\n确认执行(y/n))if confirm.lower() y:execute_rename(pairs)else:print(已取消)第1版代码能跑但问题不少——重命名规则太简单只能替换空格转小写没有支持多种规则的选项用户得手动输入路径不方便这就是RTC起手的典型结果方向对了细节不够。没关系EMI框架来迭代。第2轮用EMI框架迭代在第1版的对话基础上继续说在上面的代码基础上做以下修改1加上多种重命名规则替换指定字符串、添加前缀/后缀、序号重命名 2让用户选择使用哪种规则 3路径可以通过命令行参数传入AI在第1版基础上修改大概20秒出结果。阿Lee拿到的第2版增加了这些python12345678910111213141516171819202122232425import argparsefrom pathlib import Pathimport redef rule_replace(name, old_str, new_str):规则1替换指定字符串return name.replace(old_str, new_str)def rule_prefix(name, prefix):规则2添加前缀return prefix namedef rule_suffix(name, suffix):规则3添加后缀在扩展名之前stem Path(name).stemext Path(name).suffixreturn f{stem}{suffix}{ext}def rule_number(name, number, total):规则4序号重命名ext Path(name).suffixreturn f{number:0{len(str(total))}d}{ext}# ... 预览和执行逻辑同第1版加上规则选择菜单好多了4种规则覆盖了最常见的场景。但还有一个问题——没有撤回功能。万一改错了文件名回不去。第3轮继续EMI迭代再加一个撤回功能执行重命名前自动保存一份映射表旧名→新名如果用户想撤回读取映射表恢复原文件名AI又加了一段python1234567891011121314151617181920212223import jsonUNDO_FILE .rename_undo.jsondef save_undo_map(rename_pairs):保存撤回映射undo_map {str(new): str(old) for old, new in rename_pairs}with open(UNDO_FILE, w, encodingutf-8) as f:json.dump(undo_map, f, ensure_asciiFalse, indent2)def undo_rename():撤回上次重命名if not Path(UNDO_FILE).exists():print(没有找到撤回记录)returnwith open(UNDO_FILE, r, encodingutf-8) as f:undo_map json.load(f)pairs [(Path(new), Path(old)) for new, old in undo_map.items()]execute_rename(pairs)Path(UNDO_FILE).unlink() # 删除撤回记录3轮下来这个工具已经很完整了——4种重命名规则 预览确认 撤回功能。运行效果阿Lee用测试文件夹跑了一遍plaintext123456789101112131415161718192021$ python rename_tool.py ./test_files请选择重命名规则1. 替换字符串2. 添加前缀3. 添加后缀4. 序号重命名选择1输入要替换的字符串最终版输入替换为留空则删除预览重命名结果doc_最终版.docx - doc_.docxdoc_最终版2.docx - doc_2.docxdoc_最终版最终版.docx - doc_.docx⚠️ 检测到重命名后可能冲突doc_.docx是否继续(y/n)n已取消看到没——阿Lee故意没加冲突检测但AI在第2版里自己加了这就是RTC框架里角色的威力——当你告诉AI你是一个Python工具开发者它会自动考虑边界情况。换一种规则再试plaintext123456789101112131415161718选择4序号起始值1预览重命名结果IMG_20260101_001.jpg - 01.jpgIMG_20260101_002.jpg - 02.jpgdoc_最终版.docx - 03.docxdoc_最终版2.docx - 04.docxdoc_最终版最终版.docx - 05.docxreport-2025-Q4.xlsx - 06.xlsxreport-2025-Q4-副本.xlsx - 07.xlsxscreenshot_01.png - 08.pngscreenshot_02.png - 09.png未命名.txt - 10.txt确认执行(y/n)y完成成功重命名 10/10 个文件干净利落。10个乱七八糟的文件3秒搞定。复盘5分钟里发生了什么表格步骤框架耗时做了什么第1轮RTC1分钟起手拿到基础版本第2轮EMI1.5分钟加4种规则命令行参数第3轮EMI1分钟加撤回功能测试手动1.5分钟跑了2遍验证功能合计5分钟完整可用的工具如果传统方式写这个工具呢阿Lee估算——写基础重命名逻辑15分钟加预览功能10分钟加多种规则20分钟加撤回功能15分钟加错误处理10分钟测试调试20分钟合计约90分钟5分钟 vs 90分钟提效18倍。这不是夸张是口述编程的真实数据。AI帮你省掉的不是思考的时间而是编码调试的时间。你只需要想清楚要什么告诉AI它帮你写。阿Lee的复盘心得3轮口述做完这个小工具有3个感受特别深1. RTC起手的质量决定了整个项目的效率第1轮我给了4条约束AI出来的代码方向基本正确。如果我只说帮我写个重命名工具大概率要改5轮以上。约束越具体迭代越少。2. 每轮只改一个核心需求第2轮我加了4种规则命令行参数看起来改了两件事但其实都是丰富功能这一个方向。如果你一轮里既改功能又改架构AI容易顾此失彼。3. 必须跑一遍再迭代每一轮我都是先运行代码、看效果再决定下一轮改什么。别光看AI输出的代码觉得差不多就继续——差不多和能用之间差着10个bug。你刚刚完成了人生中第一次口述编程——是不是比想象中简单5分钟一个小工具从零到可用。这不是上限是起点。下章开始阿Lee带你做真正的项目——用SVC框架做一个完整的Web应用。5分钟的小工具只是热身Web应用才是口述编程真正发力的战场。阿Lee | 10年嵌入式老兵转AI | 口述编程vibe-coding专栏专栏导航[Ch1]认知 → [Ch2]工具 → [Ch3]环境 → [Ch4]进阶 → [Ch5]心法 →[Ch6]第一次→ [Ch7-10]实操 → [Ch11]变现 → [Ch12]避坑