不会编程也能用 AI 修脚本:先复现、看差异,再运行验证

本篇目录 6 节
  1. 一、把报错信息变成可复现问题
  2. 二、先运行只读预览
  3. 三、让 AI 一次只改一个问题
  4. 四、用差异检查理解改了什么
  5. 五、真正执行前的验收
  6. 六、常见问题与排错

AI 辅助编程可以帮普通用户修改小脚本,但“回答很有自信”不等于代码适合直接运行。本文用一个把文件名转成大写的需求,演示怎样提供最小样本、要求预览、查看修改差异和验证结果。练习在独立测试文件夹完成,不对个人文档或网站线上目录直接操作。

质量与核验系列主题示意图
系列主题示意图;操作步骤以正文与官方界面为准。

一、把报错信息变成可复现问题

准备系统、语言版本、执行命令、完整报错和最小输入。不要只截一张“运行失败”的弹窗,也不要把整个含口令的项目打包上传。

环境:Windows,Python版本填写实际值。
目录样本:demo/a.txt、demo/B.txt、demo/sub/c.txt。
需求:只预览demo顶层文件改成大写后的名称,不递归、不改内容。
限制:第一版不得重命名,不得删除、移动或覆盖文件。
请解释处理重名冲突的方法,并给出运行前后预期。

提供“a.txt 与 A.txt 同时存在怎么办”这样的边界问题,能发现脚本是否考虑大小写不敏感文件系统。不要等它处理真实资料时才遇到冲突。

二、先运行只读预览

下面是一个最小的只读示例。它只列出候选变化,不修改任何文件。创建 preview.py,与 demo 文件夹放在同一级。

from pathlib import Path

folder = Path("demo")
if not folder.is_dir():
    raise SystemExit("Create a demo folder first")
for path in sorted(folder.iterdir()):
    if not path.is_file():
        continue
    target = path.with_name(path.name.upper())
    if target.name == path.name:
        print("UNCHANGED", path.name)
    else:
        print("PREVIEW", path.name, "->", target.name)

运行后应只看到计划列表,子目录里的 c.txt 不出现。检查原文件名、文件数量和内容都没变,再考虑下一版加入真正执行功能。

py preview.py

三、让 AI 一次只改一个问题

只修改我指出的问题,不重写整个项目。
先说明原因与最小改动,再提供修改后的完整小文件。
保留现有输入输出规则;需要改变行为时明确列出。
不要新增联网、自动下载、删除文件或后台执行。
同时给一个正常样本、一个空输入和一个冲突样本的预期结果。

把同一组样本用于每一版。不要今天改报错,明天发现输出格式也变了,却不知道是哪次修改造成的。

四、用差异检查理解改了什么

如果目录已经使用 Git,可以先查看状态,再检查差异。不要为了获得干净状态而重置已有改动。

git status --short
git diff -- preview.py
git diff --check

没有 Git 的练习,也可以保存 preview-v1.py 与 preview-v2.py,用编辑器比较文件。重点寻找范围以外的行为:新增网络请求、硬编码路径、删除操作、依赖安装或密钥读取。

看不懂某段代码时,让 AI 用具体输入解释“会读取什么、会写到哪里、是否覆盖”。解释与代码也可能不一致,所以仍要在副本中验证。

五、真正执行前的验收

如果最终需要重命名,要求加入显式执行开关、冲突检测和操作日志;先预览完整清单,再对测试副本执行。保存原名与新名映射,确认失败时能按日志恢复。

本教程不提供直接批量改名代码,因为练习目标是掌握验证过程。对于重要文件,备份不是一句提示,而应在运行前确认有可打开的副本。

六、常见问题与排错

AI 说代码没问题,但还是报错?

提供同一次运行的完整错误栈、命令和工作目录。先确认实际执行的是刚修改的文件,而不是旧副本。

它让我升级一堆库,应该照做吗?

先问哪个依赖解决哪个错误,在独立环境中测试。标准库能完成的小脚本不必随意增加依赖。

能让 AI 直接连服务器修改吗?

先在本地副本复现并确认差异。涉及线上服务、数据迁移或权限时,应有明确备份、回退与验证步骤。

可接着用隐私处理方法准备脱敏日志。Git 命令说明见官方 git diff 文档,文件操作接口见Python pathlib 文档。

滚动至顶部