大家好,我是萌动的红日,专注分享电脑知识。上个月我想给自己做个 Windows 桌面小工具。翻出十年前的 Python 书记了半页,一晚上只憋出一个会报错的空白窗口,还顺手把环境变量改坏了。
后来我换了个思路——让 AI 当程序员,我当产品经理兼测试。8 轮返工之后,一个 4381 行、能天天用的桌面软件真的跑起来了。
先说结论:AI 确实能帮你写出能日常用的软件,但绝不是"一句话生成"。真实流程是你提需求 → AI 写 → 你测出问题 → AI 修,一轮一轮磨出来的。这篇文章我把界面、代码结构、踩过的坑、实测数据全部摊开,源码放在 GitHub(文末自取),照着做能少走一半弯路。
💡 本文讲的是怎么用 AI 做软件,工具本身只是练手载体。涉及下载功能的部分仅作技术演示,实际使用请遵守站点条款与版权规定,仅供个人学习。
一、做出来的东西长这样
这是一个 Windows 桌面程序,四个标签页:下载 / 历史记录 / 设置 / 关于。
它的功能清单:
最实用的是最后两条。我见过太多"绿色软件"装完 C 盘多出 2 GB、注册表一堆残留,所以这个程序的所有东西都锁在程序同目录的 videodownloadconfig\ 文件夹里,删掉文件夹就是彻底卸载。
二、为什么是 Python + tkinter,不用 Electron
做桌面软件,很多人第一反应是 Electron(就是很多国产软件用的那套)。我没选,原因很直接:
- 体积:Electron 打个 hello world 就 150 MB 起;这个程序完整版 89.7 MB,里面还塞了两个命令行组件
- 依赖:Python 的 tkinter 是标准库自带的,装好 Python 就能跑,一行 pip install 都不用
- AI 熟悉度:tkinter 是 Python 官方组件,AI 的训练语料里多到溢出,写出来的代码出错率明显更低
代价是界面朴素。但你看我截图就知道,ttk 自带的主题做日常工具完全够用,而且原生窗口在老电脑上不卡。
三、16 个文件的代码目录,各管一摊
让 AI 写代码,第一件事不是让它写,是让它先给目录结构。这一步直接决定后面好不好改。
我的最终目录长这样(app\ 下 14 个模块 + 入口,共 4381 行):
video-downloader/├── main.py 程序入口 + 组件释放(289 行)├── 启动.bat 双击就能跑(自动找 Python)├── build_exe.py 打包脚本,支持 3 种产物形态├── app/│ ├── paths.py 数据目录定位(71 行)│ ├── config.py 配置读写(98 行)│ ├── db.py 下载历史 SQLite(127 行)│ ├── components.py 组件探测/下载/备份回滚(616 行)│ ├── downloader.py 下载引擎 + 任务队列(550 行)│ ├── tray.py 系统托盘,纯 ctypes(419 行)│ ├── utils.py 日志 / 工具函数(189 行)│ └── ui/│ ├── main_window.py 主窗口 + 消息轮询(401 行)│ ├── download_tab.py 下载页(566 行)│ ├── history_tab.py 历史页(197 行)│ ├── settings_tab.py 设置页(274 行)│ ├── about_tab.py 关于页(258 行)│ └── dialogs.py 各种弹窗(322 行)└── tools_*.py 12 个测试/打包脚本,共 1532 行
两个值得说的点:
1)UI 和逻辑是分开的。 app\ 根目录放"干活"的(下载、配置、组件),app\ui\ 放"显示"的。这样改界面不会碰坏下载逻辑,AI 改起来也不容易串。
2)测试脚本比想象中重要。 那 1532 行 tools_*.py 不是我闲,是被逼的——AI 写的代码"看起来能跑",一测全是坑。没有这堆脚本,第 8 轮那个 bug 我到现在都找不到。
四、8 轮迭代:AI 写代码翻车的 5 个真实瞬间
这部分是我最想写的。网上教程都演示"AI 一句话生成完美代码",没人告诉你中间要返工几轮。我这 8 轮里,AI 翻车翻得最狠的 5 次:
坑 1:界面突然卡死,连关闭都点不动
AI 把"检测组件版本"的代码写在了主线程。而 yt-dlp.exe 本身是个单文件打包程序,每次运行都要先自解压 20 MB。三个组件串着测,界面直接冻住几十秒。
修法是把检测扔到子线程,再把"只显示缓存"做进去。实测对比:
| 32 毫秒 | ||
| 8.6 毫秒 | ||
| 0.002 毫秒 |
坑 2:中文路径全变成乱码
³ÌÐò¿ª·¢ 这种鬼画符。原因是 yt-dlp.exe 在中文 Windows 上恒定用 GBK 输出,AI 默认按 UTF-8 解码。改成"先试 UTF-8、失败回退 GBK"才正常。
坑 3:拷到别的电脑,双击后一直转圈
AI 打包用的单文件模式(onefile),启动时要先把 250 MB 解压到临时目录,这段时间窗口一个都没有,杀毒软件再一扫描就是几分钟。解法是加一个"释放进度窗口",同时提供不解压的文件夹版。
坑 4:系统托盘右键完全没反应,程序还退不出去
这是最难的一个,折腾了整整一轮。点 X 之后窗口没了、图标在、右键没菜单、任务管理器里进程还活着——看起来就是"卡死"。
最后查出是三个问题叠在一起:ctypes 的指针类型声明错了(Windows 上 wintypes.LPARAM 只有 32 位)、拿错了窗口句柄(Tk 窗口没初始化完时返回的是个假句柄)、以及在系统回调里直接调了界面函数(这会让 Python 直接崩溃,连报错都没有)。
这种 bug 的可怕之处在于:它不报错,只是"没反应"。没有测试脚本对着它连点 30 次,我一辈子都以为是随机卡顿。
坑 5:交付包少了 156 MB 的文件
打包脚本里写了个"跳过 bin 目录"的规则,结果把组件文件夹也一起跳过了。压缩包 130 MB,实际应该 210 MB。这种错误不改代码根本发现不了——直到写了"解压后逐文件校验"的脚本才现形。
五、实测数据
我这台机器(Windows 11,固态硬盘)实测:
说明一下:ffmpeg 那 156 MB 是我实测压下来的(deflate 最高级别能压到 39%),所以完整版才能塞进 90 MB 以内。这个数字网上查不到,只有自己压过才知道。
六、想用 AI 写软件,先记住这 4 条 ⚠️
⚠️ 别一次提十几个需求。 我第一版就犯了,AI 一次性写 800 行,错一处全盘崩。后来改成"先出目录结构 → 我确认 → 一个模块一个模块来",效率翻倍。
⚠️ 每写完一个功能就测,别攒到最后。 坑 4 那个托盘问题,如果拖到 8 个功能全写完再测,排查成本至少翻三倍。
⚠️ 让 AI 自己写测试脚本。 它写的测试比我手写的覆盖全,而且它能看懂自己写的测试,改起来快。
⚠️ 关键数据要留证据。 卡不卡、多大、几秒,必须实测填进去。"应该很快吧"这种话,读者一眼就能看出来。
七、源码怎么拿、怎么跑
完整源码和 6 张界面截图都在这里:
👉 https://github.com/fanyuping/videodownloader
只想跑源码的话,3 步:
1. 装好 Python 3.10 以上(勾选 Add to PATH)2. 双击目录里的 启动.bat3. 首次启动会引导下载 yt-dlp / ffmpeg 组件,走国内镜像
想自己打包成 exe:
python build_exe.py # 单文件完整版(89.7 MB)python build_exe.py --lite # 精简版(29.0 MB)python build_exe.py --onedir # 文件夹版(启动最快)
💡 再次提醒:仓库里的下载功能仅作技术演示。下载任何内容前请确认你有相应权限,遵守站点服务条款与版权规定,仅供个人学习,请支持正版。
分人群建议:
如果你只是想要个顺手的下载工具,直接下仓库里打包好的版本;
如果你是想学用 AI 做软件,重点看第四节的 5 个坑和那 12 个测试脚本,比看十个教程都管用;
如果你已经在做类似的事,评论区务必聊聊你踩过什么坑,我想知道我不是一个人。
互动问题: 你用 AI 写代码时,是让它"一次写完"还是"一段一段来"?哪种翻车少?
后台回复【AI编程】,我把这篇的源码地址、打包命令和避坑清单整理成一份文档发你。
#AI编程 #Python #效率工具 #电脑技巧 #小白必看 #程序开发