每个月一次,把七八份同结构的 Excel 拼起来、去重、按客户合并同类行,手工 40 分钟,已经这样做了 14 个月。这次用 Claude Code 写了个命令行小工具,从说清需求到跑通真实数据正好 3 小时。180 分钟里,写代码只占 40 分钟,剩下全花在报错和加护栏上——这个比例值得先说清楚,免得把「3 小时」理解成「聊两句就出来了」。
一句话结论
用 AI 写小工具的成败不在第一版能不能跑,在于第一版遇到真实数据后崩得有多彻底。这次三处报错全部来自数据脏而不是逻辑错:中文列名、两种日期格式、空值把整数列变成文本。所以顺序是先写能跑的最小版、立刻喂真实数据、按报错补护栏,而不是一次把功能想全再动手。
这篇解决什么问题
三种情况最常见。一是不敢开口:觉得写工具是程序员的事,自己提需求都提不清。二是第一版跑通就交付:拿三行假数据测试通过,真数据一进来就全错,然后判定「AI 写代码不行」。三是把工具写成一次性脚本:硬编码文件名和列号,下个月换个表就又要改。
根子是把「写工具」当成「写代码」。对非程序员来说,真正的动作是把一件重复劳动描述成输入、规则、输出三段,代码只是最后一层翻译。描述得准,代码就短;描述含糊,后面要用十次返工来补。
开始前要准备什么
- 一份真实数据,至少两份、最好七八份,脏的那种。用假数据测出来的东西不算数。
- 三段式需求:输入是什么、规则有哪几条、输出长什么样。每条规则一句话,别写在一段里。
- 一个期望结果:手工做一遍,记下最终行数和关键合计,用来对账。
- 一条纪律:不许让它覆盖原文件。输出必须写到新文件,出错时原始数据还在。
具体怎么做
第一步:把需求写成输入、规则、输出三段
15 分钟写在记事本里就够。输入:同一目录下 7 份 xlsx,结构相同,各有 200 到 300 行。规则三条:按订单号去重、同一客户同一产品多行合并成一行且金额相加、日期统一成本月第一天。输出:一个新的 xlsx,附一张统计页写清去重多少行、合并多少组。
这一步的产出不是给 AI 看的,是给自己看的。规则写不全,后面就会在跑数据时反复发现「哦还有这种情况」。这次三条规则在写的时候就漏了一条:金额为空的行怎么算。后面真实数据跑出来才发现,补进去花了 20 分钟。
我要写一个命令行小工具,处理每月一次的表格汇总。需求如下:
输入:同一目录下 7 份 xlsx,结构相同,每份 200 到 300 行,列包括订单号、客户名、产品名、数量、金额、下单日期。
规则:
1. 按订单号去重,重复的保留日期最新的一条;
2. 同一客户同一产品的多行合并成一行,数量与金额分别相加;
3. 日期统一格式化为 YYYY-MM-01,只保留到月。
输出:新的 xlsx,另存不覆盖原文件;再输出一张统计页,写清原始行数、去重删除行数、合并组数、最终行数。请先只给出实现思路与需要我确认的歧义点,不要写代码。
第二步:让它先给思路,再给代码
跳过思路直接要代码,会得到一坨能跑但你看不懂的东西。这次先让它列歧义点,它问了三件事:订单号重复但日期相同怎么办、金额是文本还是数字、合并后客户名要不要去掉空格。三个问题都得回答,其中第二个正是后来出错的源头。
思路确认后再要代码,第一版 40 分钟出来,60 行左右,跑三行假数据通过。这里要克制一件事:不要在假数据通过时就往下走,直接进第三步,用真实数据打它。
思路已确认。请按以下约束写代码:
1. 用 Python,只依赖 pandas 和 openpyxl,不要引入额外库;
2. 读取时把列名去除首尾空格,并统一成简体中文列名(给出映射字典,不要硬编码在逻辑里);
3. 所有路径从命令行参数传,不许硬编码文件名;
4. 输出写到新文件,文件名带时间戳;
5. 每一步的关键数字(原始行数、去重后行数、合并组数、最终行数)都打印出来。代码加中文注释,说明每段在做什么。
第三步:立刻喂真实数据,按报错补
真实数据 1,840 行进去,第一轮直接崩。三处错:一份表的列名是中文但编码不同,读出来是乱码;日期列有两种格式,「2026/9/3」和「2026-09-03」混着;数量列有几行是空值,pandas 整列被推断成 object,相加时变成字符串拼接。
三处都不是逻辑错,是数据脏。改法分别是:读取时显式指定 engine 与编码、日期列用自定义解析函数、数值列先 to_numeric 再 fillna。改这 4 处用了 55 分钟,比写第一版还久。这就是真实比例——写代码 40 分钟,治脏数据 55 分钟。
代码跑真实数据报错,以下是完整报错信息与前 10 行数据(含列名)。
请帮我:
1. 定位每个报错的根因,说明是数据问题还是逻辑问题;
2. 给出针对性修改,每处只改必要的行,不要重写整个文件;
3. 指出还有哪些同类问题会在下一份数据里出现(例如其他列也可能有空值)。要求:先给根因再给改法;改完要能保持原有输出格式不变。
第四步:加护栏,别让它悄悄算错
报错好办,难的是不报错但算错。这次加了三道护栏:一是去重前后行数对比,差值超过 500 就停下来要求人工确认;二是合并组数打印出来,为 0 说明合并规则没生效;三是关键字段合计对账,工具算出的金额总和必须等于原表总和减去被去重行的金额。
护栏加了 35 分钟,最后封装成双击就能跑的 bat 10 分钟。封装时把参数写成默认值,路径改成从拖入的文件推断——这一步不做,下个月换目录就会报错,而报错的人可能已经忘了怎么改。
工具已能跑通。请帮我加三道护栏:
1. 去重前后行数差超过 500 行时中止,并输出被删行样例供人工确认;
2. 合并组数为 0 时警告,说明合并规则未生效;
3. 输出金额合计与原表合计的对账结果,差值不为 0 时列出明细。要求:护栏触发时退出码非 0,并写一行清楚的中文提示;护栏逻辑单独成函数,便于以后调整阈值。
实测记录
六步合计 180 分钟:写需求 15、第一版 40、喂真实数据 25、改 4 处 55、加护栏 35、封装 10。最终处理 1,840 行,去重删 128 行剩 1,712 行,合并 22 组后 1,690 行,金额合计与手工结果一致。
回报怎么算:手工每月 40 分钟,工具每月 3 分钟(跑完加扫一眼护栏输出),每月省 37 分钟。180 除以 37 是 4.86,第 5 次使用才回本。这个工具已经用了 14 个月,所以做它是有账可算的;如果这件事只发生两三次,直接手工做完更省。
要说清的另一点:3 小时里没有一分钟花在学编程上。所有修改都是「报错贴进去、改法贴回来」,需要人做的判断只有一件——这个报错是数据问题还是逻辑问题。这一条判断能力比会写代码重要。
最容易错的 3 个地方
第一,用假数据验收。三行干净数据跑通只能证明语法没错。真实数据的脏是没法预想的:这次空值把整数列变成文本,导致相加变成字符串拼接,输出里出现「1215」这种数字,看着像真的,其实是三段拼起来的。必须真实数据跑通才算通。
第二,让 AI 一次写全功能。第一版就要它支持多目录、多格式、自动识别表头,结果出来 300 行代码,报错时根本定位不了。做法是先写最小可用版,跑通真实数据,再一条条加规则,每次只加一条。
第三,不给对账。工具不报错不等于算对。必须有一个独立来源的期望值——手工算过的合计、上个月的报表数字——用来比对。这次对账发现合并后金额差 2 元,是四舍五入位置不对,如果没有对账,这 2 元会一直跟着报表。
可复用的东西
三段式需求:输入、规则、输出各写一段,规则一条一句,歧义点留空由自己补。
先思路后代码:先让它列歧义点,确认后再生成,省下读懂代码的时间。
真实数据打第一版:假数据只验语法,脏数据才验逻辑。
三道护栏:行数差阈值、合并组数不为 0、金额合计对账,任一不满足就中止。
不覆盖原文件:输出带时间戳另存,出错时原始数据永远还在。
常见问题解答
为什么写代码只占 40 分钟,剩下时间花在哪
花在数据脏上。真实数据 1,840 行进去报三处错:一份表列名编码不同读成乱码、日期有斜杠和短横两种格式、数量列有空值导致整列被推断成文本。改这四处用 55 分钟,比写第一版还久。加护栏 35 分钟,封装 10 分钟,写需求 15 分钟。
三段式需求具体怎么写
输入一段:几份文件、什么格式、多少行、有哪些列。规则一段:一条规则一句话,不写在一段里。输出一段:新文件叫什名、要不要统计页、统计哪些数字。写不全的地方会变成后面的返工,这次漏了“金额为空怎么算”,补进去花了 20 分钟。
护栏为什么必须加
报错好办,不报错但算错最难发现。这次加三道:去重前后行数差超 500 就中止、合并组数为 0 就警告、金额合计必须与原表对账。对账时发现合并后差 2 元,是四舍五入位置不对——没有对账这 2 元会一直跟着报表。
什么情况下不值得写工具
这件事只发生两三次就不值得。180 分钟投入,每月省 37 分钟,要第 5 次使用才回本。这次已经手工做了 14 个月,账算得过来;如果是一次性任务,或者规则每月都在变,直接手工做完更快。
本网站的部分内容可能来源于网络或用户投稿,仅供大家学习与参考,如有侵权,请联系客服: hhxmw778 进行删除处理。
本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
教程如引导您添加微信或有另外收费服务,请自行甄别!
如遇充值环节或绑定支付账户或输入支付密码之类的异常步骤,建议停止操作!本站不对操作项目的损失负责!
本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现任何资源有问题请向站长举报下架
(手机微信用户建议用默认浏览器打开,可体验完整功能)
