一个打工人学 AI 的第 N 天。今天记录一个真实项目:从"我想要个东西"到"双击就能用",中间踩了 5 个坑,砍掉了 1 个过度设计的功能,最终交付了一个 Windows 常驻的自动化小工具。
我每周要做两件事:
听起来不复杂,但工作日每天 9:00 和 17:30 各一次,手动重复很烦。而且表格在企业内网网盘上,企业装了文档加密软件,不是真 Excel 进程根本读不到明文。
所以我决定:让 AI 帮我搭一个 Windows 桌面应用,启动后自动读 Excel → 生成表格图 → RPA 模拟人操作 OA 客户端 → 发到指定群。
我一开始只丢了一句"做一个工作日定时任务自动提醒的桌面应用"。AI 很有耐心地问了 4 轮才动手:
轮次 | 澄清点 | 我的选择 |
|---|---|---|
1 | 文件格式 / 截图范围 | Excel (.xlsx) / 状态列文字标记 |
2 | 发送方式 / 运行方式 | 生成表格图片 / Windows 常驻 |
3 | OA 客户端 | 泛微 EMobile10(CEF 架构,内部不可见) |
4 | 登录 / 群名 | 账号密码 / 固定"线束工艺小组" |
最关键的第 3 轮——EMobile10 内部是 Chromium 渲染的,控件树看不到任何内部元素,意味着只能走"窗口激活 + 图像识别 + 键盘模拟"的 RPA 路线。这条路一旦走通,所有 UI 操作都依赖"看图说话"。


技术栈定下来:
10 个模块分别负责:日志、Excel 读取、任务筛选、图片生成、OA 发送、调度、工作日判断、托盘、配置弹窗、主入口。
写代码的过程不展开了——直接说今天撞的 5 个真实坑。
症状:所有任务跑起来都失败,错误是 "File is not a zip file"。
原因:内网网盘上的 Excel 都经过企业文档落地加密(文件头是 00 00 5b 00,不是正常的 PK\x03\x04)。Excel 能打开是因为企业加密软件给 office.exe 注册了"受信进程",实时解密 I/O;openpyxl 是普通 Python 进程,拿不到明文。
试过的死胡同:
教训:内网项目涉及网盘文件解析,先用 head -c 16 file 看魔数再写代码。
清华源装 12 个包,其他都过,就 pyautogui 卡住。错误是沙箱清理临时目录失败。
修法:加 --no-cache-dir 绕过。
教训:pip 默认会把 wheel 缓存到 %TEMP%\pip-*,沙箱环境下临时目录可能被主动清理。
bat 里写了 echo 启动中...,cmd.exe 用 GBK 解析 UTF-8 文件,中文字符全乱码导致后续命令解析失败。
修法:bat 文件全部改 ASCII,用 GBK (cp936) 编码保存。中文输出用 chcp 65001 也不可靠。
教训:Windows 批处理永远用 ASCII,中文一律不写。
__init__ 里加了 config_path: Optional[str] = None,忘记 from typing import Optional。py_compile 不查 NameError,必须实际 import 才会暴露。
教训:改完代码后必须跑"实际 import 测试",不能只看 py_compile 通过。
我设计了"模拟键鼠右键 → DSE迅软数据安全专家 → 申请解密 → 理由'111111' → 确定"的完整流程。代码写完了,结果发现:
右建菜单的子项位置因 DSE 客户端版本而异,没有 OCR 几乎无法稳定定位。
坑 5 我挣扎了一会儿。技术上能搞定(图像识别菜单项),但成本太高:
我做了一个艰难但正确的决定:删除解密模块。
最终流程变成:
教训:自动化要尊重用户工作流。该手工的就手工,不要为了"全自动化"强行覆盖一切。
D:\WorkBuddy Document\任务提醒\task-reminder\
├── main.py
# 主入口
├── modules/
# 10 个业务模块
├── ui/
# 托盘 + 配置弹窗
├── config.json
# 3 个任务 + 定时 + OA 配置
├── start.bat
# 启动脚本 (GBK 编码)
├── check.py
# 永久静态检查脚本
├── requirements.txt
└── README.md功能:
明天打算加一个"工作消息 tab 模板图",把切 tab 也自动化掉。
关于这个系列:记录一个普通打工人学 AI、做项目的全过程。没有大词,没有融资,没有 demo video,只有真实的问题、真实的代码、真实的坑。
如果你也在学 AI 做项目,欢迎留言交流。