这是一篇完整案例记录。行业:纺织贸易。起点不是一套系统,而是一盘散沙——几张我自己摸索着写的 VBA 模板文档,各司其职,做出来的文件散落在电脑各处、彼此不通气。任务:把它们改造成「一份母版 + 多台副本」自动同步的总控台。
结论先放前面:只要你有想法,AI 能够帮助你实现——这套系统从头到尾没有一个专业程序员参与,我只会写几行最简单的 VBA,剩下全是跟 AI 一边想一边做出来的。这次任务跨越 12 天、经历四次架构转身,中途有两次因为 AI 自作主张而回退。后来我们定了两条纪律——「只记录、不施工」和「两段式交付」——项目才真正跑起来。而我最大的收获是:把它当成敢顶嘴的搭档,而不是只会执行的工具——我提想法,它会给出更好的方案。最终沉淀出 41 条铁律和一个 12 万字的排坑技能包,这些比代码本身更值钱。
#WorkBuddy #AI办公
这个项目不是从"我有个系统要优化"开始的,而是从一个还没成型的想法开始的。
我最早能拿出来的东西,不是文件、不是需求文档,是一张草图——我在 Excel 里用形状随手画的:一个圆,上下左右各挂一个方框。
方位 | 方框 |
|---|---|
上 | 采购 |
下 | 库存 |
左 | 客户 |
右 | 销售 |
圆的里面和四周,还密密麻麻塞了当时能想到的所有业务词:客户列表、询价记录、订单生成、订单汇总、客户维护、催款回款、供货列表、采购清单、采购汇总、供货报价单、原料趋势、生产安排、跟踪提醒、工厂列表、工厂出货单、生产汇总、对账单、码单、物流跟踪、发货提醒、退换货。

(图注:最初的圆形草图,依据 Excel 原稿重绘)
那一刻我其实说不出"我要一个什么系统"。我能说出来的只有一件事:我这块业务,长这样——四个方向围着中间转,中间那个圆把它们串起来。
这就是全部的"需求"。没有字段定义,没有流程图,没有原型。
后来回头看,这张草图其实定下了整个项目的两件事:一是边界(采购/库存/客户/销售四个域,别跑偏),二是形态(一个中心入口串起所有模块,而不是一堆互不相干的表)。后面四次架构转身,转的都是"怎么实现",这两个东西从头到尾没变过。
从草图到"有个能跑的东西",中间隔着一段我自己摸索的日子:先手工做,再自学 VBA,慢慢攒出一张张模板。等表越攒越多、越攒越乱,"把这些文档整合起来"就从一个念头变成了必须解决的问题——这也正是后来我交给 WorkBuddy 的起点。
我所在的是一家小型纺织贸易企业,日常业务围绕这几件事转:客户资料维护、询价报价、合同签订、唛头打印、码单与采样单、订单整理、对账。
这些东西全部跑在 Excel 上。不是一张表,是一盘散沙——客户一览表、唛头模板、合同模板、码单模板、采样单模板、对账单模板……一张张各司其职,VBA 做出来的文件散落在电脑各处,彼此不通气:客户在一张表里,询价在另一张表里,码单打印又要开第三个文件,做出来的文件散落在电脑各处,谁也找不到谁。
它们是怎么来的?开始全部靠手工完成,后来经过摸索和自学,我写了几个简单的 VBA 代码,慢慢就成了我的工作模板。
虽然大大提高了我的工作效率和准确率,但还是经常会出现遗漏、出现错误,那时候真是一个头两个大,焦头烂额……
我经常在想:要是我有一个能够把这些文档整合起来的系统,那该有多好。
后来我碰到了 WorkBuddy,把我的想法告诉了她,才慢慢有了这个"总控台"。
材料 | 说明 |
|---|---|
一张圆形草图 | 最早的构想,见 §零。它定义了边界(四个域)和形态(一个中心入口) |
7 个业务模板文件 | 唛头生成、合同清单、供货合同、对账单拆分、码单生成、订单整理、采样单——这些就是那盘散沙,是我自己摸索着写 VBA 攒出来的工作模板 |
一份口头需求 | 「多台电脑都要用,数据要能合到一起」 |
就这些。没有一个"总控台"文件——那个东西当时还不存在,它是后面一步一步长出来的。

(图注:V1.0 时期的使用说明书(2026-09-11 整理,已脱敏))
上面这张是我 9 月 11 日自己整理的使用说明——注意里面那句"必须和码单生成模板、采样单、对账单、唛头、合同模板这些文件放在同一个文件夹里":这就是"散沙"最真实的样子,一个业务动作要同时伺候好几个文件。

(图注:V1.0 主页(2026-09-12 实拍,已脱敏))
导出_表名_机器号.xlsx,谁想看全量就得把这些文件挨个合并一遍。还有个隐形问题:早期这些东西是一边想一边做攒出来的——想法还不成熟,代码也就跟着乱:重复模块、硬编码的绝对路径、前后不统一的写法……换个电脑打开就打不开。说白了,一开始连"总控台"都还只是一个想法,不是设计出来的。
💡 接手一套"边想边长出来"的老系统时,先别急着改功能,先让 AI 把结构读明白。这一步省不得,我第一天就靠它躲过一次事故。
win32com 直接操作 Excel.bas/.frm/.cls 文件(下图),在外面做差分比对、确认改动范围,再写回去。不在 Excel 里盲改。
(图注:改动前先把 VBA 源码整个导出,在外面做差分比对)
这是整个项目最重要的一个决定。
改到第三天我发现:AI 每次都在重复踩同一个坑——无头 COM 打开 Excel 会被登录窗体卡死、注入 VBA 后立刻运行会崩、VBIDE 会把标识符大小写改掉……每次都要重新解释一遍。
于是我让 WorkBuddy 把踩过的坑写成一个技能包:
里面按编号记了几十条"铁律",每条都是「现象 → 根因 → 修法 → 验证判据」。之后每次新开对话,加载这个技能就能直接上手。
✅ 这次最大的收获:把踩坑经验本身变成可复用的资产,而不是留在聊天记录里。
我在项目里建了三层记忆,让跨对话的上下文不丢:
文件 | 作用 |
|---|---|
MEMORY.md | 41 条铁律索引 + 当前状态 + 待办。放在文件最前部的,就是最不能被截断的待办 |
YYYY-MM-DD.md | 逐日工作日志,只追加不覆盖 |
用户诉求台账.md | 所有需求先记台账,没说"做"就不动手 |

(图注:工作目录实拍——逐日日志 + MEMORY.md + 技术手册,记忆体系)
上图是项目目录的实拍:逐日日志从 9-11 一直排到 9-24,旁边是 MEMORY.md(铁律索引)和《参考-总控台技术手册》。它们不是事后补的文档,是每天干完活当场追加的——所以第 12 天新开一个对话,加载进来就能直接上手,不用重新讲一遍背景。
版本 | 阶段 | 解决的核心问题 |
|---|---|---|
V1.0 | 起点 | 散沙:几张模板各司其职、文件散落各处 + 多台电脑各存一份,手工导出合并 |
V1.x | 打补丁 → 推倒重建 | 从"手工合并"到"能自动同步" |
V2.0 | 架构改造 | 从"每台机一份全量数据"到"母版/副本职责分离" |
V3.x | 多机实测打磨 | 从"能跑"到"稳定可分发" |
V4.0 | 可维护性改造 | 从"能用"到"好维护" |
第一步,只读不改。 让 AI 用 openpyxl 列全部表结构、用 oletools 把 VBA 全量提取出来读。
这一步纠正了一个差点酿错的事:我在旧版本文件夹里翻出几份历史副本,原本打算拿编号最新的 _3 当基线,对比后发现 _2 和 _3 的 MD5 完全相同,是旧快照,数据比实际在用的那份少了好几个客户。差点把旧数据当基线发出去。
还有个有意思的发现:日志代码里写死了一个陌生的缓存目录路径——那是我最早为这个想法建的工作文件夹,素材都放了进去,后来真正动手、把这套系统一步步做出来的,是 WorkBuddy。所以这条路径留下的不是什么"前人遗产",而是我从一个想法走到第一版系统的那段路。
第二步,中途推翻重来。 我在旧代码上打了一下午补丁,越打越乱:老模块删不掉、过程级编译错误阴魂不散。
🔄 这是第一次转身:我说"删光所有 VBA,分批重建"。规矩是——每批验证通过、我确认后,才做下一批。
第一批只做登录与权限,第二批时钟,第三批待办,第四批生日提醒……一路做到第 6 批。
第三步,多机同步。 改成"通用版 + 安装脚本":来源标识留空,首次录入时用 计算机名-mmdd 自动填充,安装时扫描共享夹做重名检测。
期间挖出两个真缺陷:
Change 事件重新盖章 → 跨机重复追加。解法:加一个全局开关,合并期间直接跳过事件。第四步,长出"本机副本"。 加了一键安装:先推送未同步数据 → 复制到用户目录 → 写标记 → 建桌面快捷方式。文件内的标记让副本拷到哪都能被识别为副本。
🔄 这是第二次转身,也是整个项目最关键的一次架构决策。
起因是一份体检报告。我让 AI 查"为什么云盘老是产生冲突文件",结论很直白:
(2) 命名于是我们重新定义了两个角色:
母版(云盘) | 副本(各机器) | |
|---|---|---|
登录 | 仅管理员 | 操作员 / 访客 |
可改 | 程序(配置、按钮、VBA) | 数据(客户、询价、备忘) |
保存 | 默认不保存 | 自动保存 |
写云盘 | 仅管理员显式保存时 | 只往共享夹写外部文件 |
更深的一层是数据与骨架分离:
同步_<机器标识>.txt 里这样管理员不用点任何按键,就能在母版上看到各机最新数据。

(图注:共享同步夹实拍——每台机器一个同步文件 + 各自的副本档案(已脱敏))
上图是共享同步夹的真实内容:每台机器对应一个 同步_<标识>.txt(本机新增的数据行),外加一份 副本档案_<机器>.txt(登记这台机的身份与状态,退役时就是在这里除名)。母版不写这个文件,只读——所以它是"各机往里推、母版统一看"的单向管道,谁也不会覆盖谁。
⚠️ 这次改造有个做法值得抄:另存一份 2.0 到独立沙箱目录,生产母版零改动。沙箱里放空的共享夹、复制的组件模板,验证两轮全绿后才谈替换。
从 V3.0 一路迭代到 V3.9。这阶段的日常是:我提诉求 → AI 出方案 → 出测试件 → 我实测 → 反馈 → 再改。
期间修掉的典型问题:
同一块主页,9 月 12 日 vs 9 月 23 日——中间那张是 9 月 17 日的 V2.0 副本,能看出按键区从"散落的卡片"一步步变成"统一管理、缺文件变灰"的组件网格:
(按下面顺序连续插入 3 张图,就是一条完整的演进时间线)

—— V1.0 主页(9/12)

—— V2.0 副本(9/17)

—— V3.x 成品(9/23)
V4.0 做三件事:主页版面重排、配置页从竖排改成六分区横排、为将来"删掉某台机器的副本"腾出位置。
配置页为什么要重排:原来它是一个竖着的长条,分区之间互相挤。改成横排后,每个区固定 5 列,第 1 行放标题和按键、第 2 行放字段名、第 3 行起放数据——以后加字段不用挪动整个版面。
这个改动有个前置动作,我把它叫「寻址收敛」:
⚠️ 先挪布局再改代码必出事故。 配置页的坐标在工程里有 50 多处引用,散布在各个过程里。正确顺序是:先把所有坐标收进一个统一寻址函数,确认旧坐标 0 残留,再动布局——这样改布局只需要改一处。

(图注:配置页(SysCfg)实拍,已脱敏)
第 6 天,AI 在没等我确认的情况下连着做了两批改动,我不满意,要求"退回去"。
处理:定了一条纪律——AI 只负责把诉求记进台账、出方案,没收到"做"这个字就不许改生产文件。
这条后来救了我好几次。

(图注:台账文件的开头——纪律写进文件,而不是留在对话里)
第 9 天我跟 AI 说:每次改完就走完整部署流程,太浪费时间。
处理:改成两段——
配套还加了一条:交付测试件之前必须先自查"这文件打开会不会写生产"。有一次差点出事:测试件目录里躺着一个历史遗留的标记文件,会让系统把它判定成"需要自动更新的副本"——一打开就可能被生产母版整文件覆盖。后来测试件一律放进干净的独立子目录。
脚本保存文件时,宏内部把事件开关重新打开了 → 保存触发导出 → 无登录用户 → 弹出一个权限提示框。隐藏 Excel 的模态框把 COM 调用永久挂住,最长卡过 5 小时,直到我手动点掉。
处理:脚本在保存前再关一次事件;并给导出过程加静默参数,后台调用一律不弹框。
早期用"追加"方式注入代码,重复注入会造成同名过程重复 → 名称冲突编译失败。症状很隐蔽:过程计数从 53 涨到 74。
处理:注入前先按过程名删除旧定义,再加新的。
Python 脚本打开工作簿,如果没在 Open 之前关掉事件,Workbook_Open 就会派发登录窗体,无人响应 → 永久卡死。
处理:封装了一个统一的打开工具,做三件事——Open 之前关事件、带看门狗强杀残留的 Excel 进程、保存前再压一次事件开关(因为合并过程会把它改回来)。
处理:注入 → 保存 → 关闭 → 另起新会话 → 再运行。这条成了铁律第 1 条。
新代码里写了 ws.Rows(...),写回后读出来变成 ws.rowS(...)——VBIDE 会把标识符归一为模块内首次出现的大小写。比对脚本因此一直报"不一致",白跑了一整轮。
处理:写回比对时,对"仅大小写不同"判定为一致并打印容忍明细。
FreezePanes 完全不可靠想给四张表冻结前两行。实测发现:选区操作在无头会话里不生效,于是冻结出来的位置跟活动单元格无关——同一文件两次跑,分别得到两套完全不同的 split 值。
处理:放弃选区方式,改用直接指定分界行 + 冻结,这个在无头会话里能可靠落盘。文件层再用 XML 规范成标准写法(幂等)。
主页按键的网格常量,被我插在某个旧常量后面。后来另一个补丁把那块常量区整块重写,这三个声明就没了。
工程首行是强制变量声明 → 它们变成"变量未定义" → 相关过程一调用就编译报错,主页按键从此不再刷新。
处理:补回常量,并给补丁脚本加了断言——「每个新常量声明恰好出现 1 次,且声明行号必须小于第一个过程的行号」。
💡 教训:新常量不要寄居在"会被后续补丁整块重写"的锚点后面。
要求"有内容才填色"。我改了条件格式公式,但漏了体检判据——结果每次切页都会重建一次,之前修好的闪烁又复发了。
处理:这类"自愈型"改动必须同时改三处:规则本身 + 另一页的同类规则 + 体检函数的判据。少改一处就会反复重建。
配置格里写着 3.7,我以为是版本号改成 3.8。实际上那存的是母版版本时间戳,被"防降级"的判据读着。改错会让"已是最新就跳过"失效 → 触发多余的整文件覆盖。
处理:加了一个体检脚本,专门查"这个格子到底归谁管:是静态数据、被 VBA 写、还是被 VBA 读"。改 Excel 之前先搞清楚归属。
文件 | 状态 |
|---|---|
总控台.xlsm(母版,云盘) | 约 1.87 MB(从 3.0 MB 瘦下来),VBA 主模块 1 万余行 |
各机副本 .xlsm | 桌面快捷方式 + 本地目录,带一键安装/卸载 |
7 个业务模板 | 唛头 / 合同 / 对账单 / 码单 / 订单整理 / 采样单 |
共享同步夹 | 每台机一个 同步_<标识>.txt,管理员不用管 |
能力 | V1.0(散沙) | 现在(总控台) |
|---|---|---|
入口 | 几张模板各司其职,VBA 做出的文件散落在电脑各处 | 一个主页串起全部模块,组件按键按文件夹自动生成 |
多机合并 | 手工导出、挨个合并 | 副本定时推送,母版自动汇总 |
改已有行 | 变成新增一条,越积越多 | 按业务键去重,就地更新 |
主文件体积 | 3.0 MB | 1.87 MB(骨架与数据分离) |
母版落盘数据 | 全量业务数据 | 0 条 |
权限 | 所有人一样 | 管理员 / 操作员 / 访客三档 |
上线方式 | 改完就覆盖 | 测试件实测 → 确认 → 部署 |
故障排查 | 靠猜 | 41 条铁律 + 12 万字技能包 |
xlsm-vba-com-patch 技能包:12 万余字,几十条带验证判据的排坑条目MEMORY.md,跨对话不丢这两张是工作目录的实拍,比清单更能说明"这些资产是真的在用":

(图注:输出文件夹——测试件、工具、技能包、投稿、日志各归各的)

(图注:每一批改动前的备份——改坏了随时能退回上一版)
第一,把经验固化成资产,而不是留在对话里。 这个项目值钱的不是那 1 万行 VBA,是那 41 条铁律和 12 万字的技能包。它们让第二天的新对话直接上手,不用重新踩一遍坑。后来我又把踩坑过程写成 4 篇技术投稿发出去——一个人的坑,写出来就是别人的捷径,能让更多创作者少走同样的弯路。
第二,敢在关键节点推翻重来。 第一天打补丁打不动就删光重建,第五天发现同步模型是错的就改架构。在错误的地基上加功能,比推倒重来贵得多。
第三,给 AI 立规矩比给 AI 提需求更重要。 两次回退之后定的"只记录不施工",和一次浪费之后定的"两段式交付",对项目推进的帮助超过任何一个技术决策。
第四,让 AI 自查,而不是只让它做事。 "交付前先查这文件会不会写生产""改 Excel 前先查这个格子归谁管"——这类自检动作写进流程之后,事故率明显下降。
第五,AI 会犯很隐蔽的错,要靠断言兜住。 常量被吞、大小写被改、冻结位置算错——这些都不是报错,是静默出错。全靠"声明恰好 1 次""忽略空行后逐行比对""迁移前后全量差分"这类断言拦下来。
第六,跟 AI 做朋友:我提想法,但它不该盲目照做。 这 12 天里,我提的很多"做法"最后都没按我说的落地——不是被无视,而是被摆出了更好的选项。断代怎么切、表头怎么重排、主页按键排几列,AI 每次都给几个方案,把各自的代价讲清楚,让我拍板;V4.0 的设计文档里甚至专门开了一节"我的反对意见",把不同意我的地方一条条写下来,而不是默默照办。
回头看,这比"它执行力强"值钱得多:把 AI 当执行者,你得到的上限就是你的水平;把它当敢顶嘴的搭档,你得到的才是它的水平。 所以我现在的习惯是——需求只说清"我要什么结果",不指定"你怎么做",并且明确要求一句:有更好的方案就直接说,别闷头干。
📌 这句话我后来固化成了给 AI 的固定开场白,你可以直接抄: 「这是我要的结果,不是我的做法。你有更好的方案就直接说,别闷头干。」
这不是一句口号,是真的留下了痕迹——下面三张是当时方案文档里的原文摘录。
痕迹一:它摆出 A / B 两个方案,连同代价一起给我,让我拍板(2026-09-16 方案预览摘录)

(图注:AI 给出 A/B 两案并写明代价,让我拍板)
痕迹二:它会在设计文档里写下"我不建议"(V4.0 设计方案 §11.8 摘录)

(图注:AI 写下的反对意见——"所以我不建议")
我当时想做的是"事件溯源"(把每条变更都记下来,随时能重放)。它没有照做,而是把要做成这件事必须补齐的三件事、工作量和收益摊开写给我,最后给了一句"所以我不建议"。我接受了这个反对意见——这才是"搭档"该有的样子。
痕迹三:我主动请它发表意见,它真的写了三条不同意见(V4.0 设计方案 §十四 摘录)
到 V4.0 设计时,我对它说了一句:「设计有问题就指出来,没必要全按我想的做」。它还真不客气——在方案文档里专门开了一节"我对这 5 条的复核":哪些完全同意照做、哪些有物理限制做不到、哪些建议换个做法,一条条摆得清清楚楚。最好玩的是结尾那句——「这条听你的,你说不留就不留」:意见它照提,决定权留给我,嘴上还不忘服个软。

(图注:我请 AI 发表意见——它真写了三条,还带一句"这条听你的")
回到开头那句话:只要你有想法,AI 能够帮助你实现。
这 12 天里,我没有写过一行复杂的代码,也没画过一张正规的流程图。我做的只有三件事——把想法说出来、把边界定清楚、在关键节点敢说"这个不行,退回去"。剩下的,是 AI 在一次次试错里把它长成了今天这个样子。
回头看,最值钱的不是那个能自动同步的总控台,而是过程中沉淀下来的东西:41 条铁律、一个 12 万字的排坑技能包、两条工作纪律,以及一个最重要的认知——把 AI 当成敢顶嘴的搭档,别把它当成只会执行的工具。你提想法,它给方案;你有更好的判断,它也会直接说"我不建议"。这个来回,才是效率真正的来源。
如果你手上也有一堆"各司其职、做完就散落在电脑各处"的表格,希望这篇能给你一点信心:先别想着做系统,先把你脑子里的那张草图画出来——剩下的路,AI 可以陪你走。
(文中所有截图已做脱敏处理:账号名、云盘路径、客户信息均已遮蔽。)
#WorkBuddy #AI办公
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。