今日学习从 Vibe Coding 到产品原型我完成的不是“几段代码”而是一个产品闭环今天的 SmartHome AI 项目包含了一条完整链路 摄像头→ OpenCV 获取画面→ MediaPipe 提取手部 21 个关键点→ 手势识别判断用户意图→ 虚拟房间选择→ 智能家居设备状态改变→ PySide6 图形界面反馈→ PyInstaller 打包成 Windows 应用这说明一个可展示的 AI 产品不只是“模型识别成功”而是要让用户能看到、理解、操作并获得反馈。软件项目应分层而不是把所有内容写进 main.py我逐渐理解了模块化的价值文件职责main.py程序入口和界面协调vision.py摄像头、OpenCV、MediaPipe 视觉识别gesture.py手势判断逻辑device.py灯光等设备状态与未来硬件控制接口config.py字体、摄像头、阈值等配置styles.py界面视觉风格核心思想是每个文件只负责一类问题。未来接 STM32 时只需要重点修改device.py而不需要重写摄像头、手势识别或界面。AI 识别不是“有结果就够了”还需要稳定机制摄像头每秒会产生很多画面。如果每一帧都直接执行命令灯会被反复触发。所以项目加入了两个工程思想连续多帧识别到相同手势才确认动作。同一个手势只执行一次松手或改变手势后才允许再次触发。这叫作“防抖”和“防重复触发”。它提醒我真实系统不仅要识别正确还要在连续输入中稳定工作。用户体验也是技术的一部分项目从最初的摄像头窗口升级为桌面应用加入了实时画面手部骨架和手掌光标客厅、卧室、厨房分区当前目标房间当前手势灯光状态操作日志摄像头启停按钮这说明功能能运行不等于产品好用。产品设计需要让用户随时知道系统有没有看到我系统认为我选中了什么系统识别了什么手势最终执行了什么结果虚拟设备层是为未来硬件预留接口目前项目中的灯是 Python 变量模拟的 卧室灯开启 / 关闭未来可以替换成 Python→ 串口 / WiFi / MQTT→ STM32 或 ESP32→ GPIO→ LED、继电器、真实灯光重要思想先做软件原型验证交互逻辑再接入硬件执行层。这样开发风险更低也更容易逐步升级。打包失败不是“项目失败”今天遇到的 PySide6、OpenCV 缺失问题本质是 运行环境≠打包环境一个 Python 项目能运行不代表打包后的 exe 一定带齐全部依赖。我学到的处理方式是使用同一个 Python 环境安装依赖。用requirements.txt固定依赖列表。打包前验证关键库能否导入。PyInstaller 打包时显式收集复杂库例如 PySide6、MediaPipe、OpenCV。复制程序时复制整个dist/SmartHomeAI文件夹而不是只复制 exe。这是一种很重要的工程意识让别人也能运行你的成果。Vibe Coding 的正确使用方式Vibe Coding 不是“不需要理解代码”而是把 AI 当成一位高效率的开发伙伴。我需要负责明确产品要解决什么问题。判断界面是否美观、交互是否自然。提出真实需求和反馈。运行、测试、截图、定位问题。理解核心模块之间的关系。AI 可以帮助我快速生成代码骨架。修复错误。设计界面。重构项目结构。编写打包脚本和说明文档。最重要的能力不是记住每一行代码而是学会提出清晰的问题我想做什么用户如何使用系统如何反馈未来如何扩展我当前掌握的技术地图Python├── OpenCV摄像头与图像处理├── MediaPipe手部关键点检测├── 几何规则手势识别├── PySide6桌面软件界面├── PyInstaller打包 Windows 应用├── 软件模块化分离视觉、逻辑、设备、UI└── 未来 STM32 / ESP32真实硬件控制下一阶段值得学习的方向学习 STM32 的 GPIO、UART、PWM。用串口让 Python 控制 STM32 的 LED。学习 ESP32 WiFi MQTT接入真实智能家居。收集自己的手势数据用机器学习替代部分规则识别。为项目增加空调、窗帘、温湿度、语音控制等模块。学习 Git 和 GitHub保存每一次项目迭代。今日总结今天最大的收获不是“做出了一个软件”而是第一次理解了一个 AI 产品从想法到可运行应用的过程 需求→ 原型→ 视觉识别→ 交互设计→ 状态管理→ 软件界面→ 打包交付→ 未来硬件扩展我已经完成了一个真正可以继续成长的项目起点。