做过两个工具之后,自动化 Excel 核对系统和固定资产折旧测算工具,我发现自己反复掉进同样三个坑里。
写的工具代码不一样,但困难背后的本质是一样的。
01
设想的需求十分笼统
核对系统那次,我一开口就是“帮我做一个自动化 Excel 核对系统”,AI 很快写出一堆代码,很华丽,但跑出来的东西完全不是我要的:数据写成了固定值,链接丢了,区域错位,附注表压根没匹配上。
后来把需求拆成先让数据正确写进去、保留链接这个最小动作才解决,此时,别的逻辑都先不管,后面再逐渐加码实现。
这个坑背后的问题,不是 AI 理解力不够,是我在用“系统”这个词时,本身就在邀请 AI 往大了想。
人脑子里冒出的工作念头,可能一团模糊的诉求,在工作的同时,我们的大脑会自动整理、自动核对、自动生成,然而这些念头一旦说出口,很容易用“系统”“平台”“智能助手”这类大词去包装它。
词一变大,AI 没有别的办法,只能顺着词去猜你想要的范围,猜出来的东西,往往比你真正需要的偏离许多,也比你真正需要的更难判断对错。
把需求说小,本质上是把“我能验证的范围”和“AI 要做的范围”对齐。
反过来想,“最小可用动作”其实是一种自我保护。动作越小,越容易在一次反馈里就把对错说清楚;系统越大,出错的地方越多,但你反而越没办法一次指出问题出在哪。
02
数据的具体内涵和规则没设置清晰
折旧测算工具里,“已折旧月份”这个字段的理解失误让我反复在找局部测算偏差原因。
因为我按照惯常理解设置规则。结果就是总有部分资产的折旧差异在一个月折旧额上下浮动,查了很久才发现,这个字段本身就含了本年已过月份,直接用等于把折旧重复算了一遍。
核对系统里也有类似的事,我说“自动取数”,但没说清楚数据要以值的形式还是公式的形式留在底稿里,第一版就把该保留链接的地方写成了固定的数字。
这个卡点很隐蔽,因为它不是说得“太大”,是说得“看似完整,其实漏了一层”。
“已折旧月份”这种字段名字本身就在误导人,名字越像常识,越容易让人跳过追问它到底是什么口径。
说需求的时候,最容易漏掉的往往不是陌生的东西,是看起来不需要解释的东西。
任何一个字段、任何一个动作,只要它在不同场景下可能有不同含义,就值得多问一句“这次具体指什么”。
审计里这种字段特别多,因为不同公司的系统、不同的业务习惯,会让同一个名字装进不同的东西。这不是 AI 的责任范围,AI 只能按它见过的最常见的版本去猜,猜错了也不会主动告诉你它猜的是哪个版本。
03
从正常情况出发,没想到存在异常
核对系统里,项目名称写法千奇百怪,“1年”和“一年”,“应收股利”和“应收股利-母公司”,全角半角混在一起。
折旧工具里,资本化日期缺失、残值率为空、原值带千分位逗号变成文本,这些情况一开始都没在需求里出现过。
AI 写出来的第一版,永远是假设数据是干净的。
这个卡点的本质,是人在描述需求的时候,脑子里默认想的是“正常跑起来该是什么样”,而不是“哪里可能跑不起来”。
这其实是一种很自然的思维习惯,正常路径容易想,异常路径需要主动去回忆那些“曾经踩过的坑”才能想起来。
AI 不会替你想异常情况,因为它没有你那些真实数据里翻车的记忆。
更深一层的问题是,工具到底该怎么处理异常,这本身是一个需要人思考可能存在的异常情况后,设置清晰规则,告诉 AI 在写代码时遇到此类情况该如何处理。
例如,匹配不上的项目不要硬凑一个结果,要记录下来等人复核。这些判断背后是我们对多种复杂情况的汇总梳理与指定,AI 没有这个判断力,无法告诉代码应该怎么做。
写在最后
这三个坑说到底是一件事:AI 能精确执行规则,但它无法替你定义规则。
说系统太大,是没分清“我要验证的”和“AI 要做的”;数据内涵和规则没说清,是把看似清楚的东西当成了真的清楚;没想异常情况,是把“不该自动决定”这件事悄悄交给了 AI。
夜雨聆风