AI 入门课星屿光年 · AI 课程
31第 31 节 · 30 分钟

工作流稳定运行

没人盯着也不悄悄出错:它自己报数、留日志,坏了你第一时间知道

学完能做
  • 认得出一条线最危险的毛病:不报错地错
  • 在提示词和技能里加上三句话:报数、写出处、没有就说没有
  • 让每条线留一本运行日志,一眼看出哪天没跑、哪天跑空了
  • 上线前故意把它弄坏一次;知道什么时候才算能放手

同一条“每天早上出日报”的线,两种坏法:

报错的线

早上 9 点,它没找到昨天的数据表,停下来说:“D:/数据/ 里没有 9 月 24 日的文件,今天的日报没有生成。”

你看一眼就知道:同事忘了传表。催一句,十分钟补上。

悄悄错的线

早上 9 点,它没找到昨天的数据表,就拿前天那份凑了一份日报,格式整齐,数字齐全。

你连着看了三天,第四天开会才发现:这三天的数一模一样。

报错的线不可怕,可怕的是悄悄错的线:它照常交东西,交得还挺像样,只是内容不对。人盯着的时候,你一眼就能看出来;设成定时、交给流程技能以后,就没人盯了。

同样出了岔子:一条停下来告诉你,一条若无其事地交了份错的
示意:这一节要做的,就是把第二种变成第一种

这一节不教新功能,教几个习惯:让它出了岔子会吭声,让你不用天天看也知道它好不好。

它会在哪些地方悄悄错

第 27 节说过:第一次跑通,往往是你盯着它的时候;一到定时执行,数据可能还没到齐,授权可能过期,文件可能撞名,旧文件可能搅局。把这些情况摊开,就是一条线最常见的几种悄悄错:

出了什么岔子 它可能怎么“圆过去”
今天的数据还没到 拿昨天的、上周的顶上
该处理的东西是空的 编几条凑数:第 27 节那个“没新闻也凑 5 条”的简报
有几个文件读不出来 跳过不提,汇总里少了几份
连接器授权过期了 只读到一部分,照样出结果
同一条已经处理过 又处理一遍,表里多出重复的行
新文件和旧文件同名 直接覆盖,旧的没了

它这样做不是使坏:你让它“出一份日报”,它就想办法交出一份日报。你没告诉它“交不出来的时候怎么办”,它就会想办法交出来。

三句话,让它自己吭声

看一段每天自动出日报的指令,可以直接抄:

你对 AI 说
每天早上9点读 D:\数据\前一日.xlsx,生成一页日报,通过企业微信发给我。当天文件要是没有,直接告诉我没有,别拿前一天的顶上。日报同时存一份到 D:\日报,文件名带日期。正文第一行写清数据取自哪个文件。

这段话里有两句让它吭声的话,再加上一句报数,凑成三句,适用于每一条线:

让它自己吭声的三句话
  1. 没有就说没有当天文件要是没有,直接告诉我没有,别拿前一天的顶上
  2. 写出处正文第一行写清数据取自哪个文件
  3. 报数做完告诉我转了几份、几份没转成、分别卡在哪
  • 没有就说没有,堵的是“拿旧的顶上”和“编几条凑数”。第 29 节选题推荐那条线的定时任务里,也有同样一句:“没有可用记录时直接说明。”
  • 写出处,让你扫一眼第一行就知道它读的是不是今天的文件。三天数字一样的那种错,第一天就露馅。
  • 报数,让“跳过不提”藏不住。好用的指令,差不多每条都以报数收尾:合并表格的,报“合了几个文件、总共多少行,总额跟原表加起来对不对得上”;清洗名单的,报“原来多少行、删了多少行、剩多少行”。数对不上,就是哪里漏了。

把这三句写进定时任务的提示词,或者写进流程技能的“规则”里,一次写好,每次都守。

给每条线留一本运行日志

报数是一次的,日志是天天的。让它每跑一次,就在一个固定的表里追加一行:

你对 AI 说
每次运行结束,在 D:/流程日志/运行日志.csv 末尾追加一行:运行时间、线的名字、读了哪个文件、处理了几条、有几条问题、成品存在哪、这次有没有异常(没有写“正常”)。不要改动已有的行。

跑上一周,这张表长这样(示意):

运行日志.csv(示意)
ABCDEFG
1运行时间线读了什么处理问题成品异常
29-22 09:01每日销售日报前一日-0921.xlsx86 行0D:/日报/0922.docx正常
39-23 09:01每日销售日报前一日-0922.xlsx91 行2D:/日报/0923.docx2 行金额为空,已标待确认
49-24 09:02每日销售日报没有找到 0923 的文件0—未生成文件缺失,已停止
59-25 09:01每日销售日报前一日-0924.xlsx88 行0D:/日报/0925.docx正常
示意。9 月 24 日那行一眼就能看到:没有文件,它停了,没有凑一份

日志有三个用处:

  • 看它跑没跑。哪天少了一行,就是那天没留下记录:可能根本没触发(电脑睡了、客户端退了,第 27 节讲过,这是定时任务最常见的“失踪”),也可能跑到一半失败了。去定时任务页的运行记录里看一眼,就分得清是哪种。
  • 看它跑没跑空。“处理了 0 条”连着出现,就是上游断了。
  • 出了问题能倒查。哪天开始不对的、读的是哪个文件,都在这里。

有人用定时任务每天更新一个自己做的网站,办法更直接:在网站上放一个“更新时间”,用来追踪它到底有没有更新。打开页面看一眼时间戳,就知道今天跑没跑。日志也好、时间戳也好,都是给一条线装了个“心跳”。第 33 节会把这个心跳放到你的工作台上,打开就能看到每条线今天跳没跳。

上线之前,故意把它弄坏一次

一个好习惯:一条线在启用定时之前,故意制造几种坏情况,看它怎么反应。常见的有这七种:输入文件不存在、格式变化、连接器授权失效、结果为空、超时、同名文件、发送对象不明确。

照这个清单,自己演一遍:

故意造的坏情况 怎么造 过关的反应
输入文件不存在 把今天的数据表挪走 停下说“没有找到”,不拿旧的顶上
格式变了 表里删一列、改一个列名 说出哪一列对不上,而不是算出一堆错数
授权失效 在连接器里断开一次 说读不到,不假装读到了
结果为空 放一个空表进去 写“今天没有”,不编
同名文件 输出文件夹里先放一个同名文件 不覆盖:改名另存,或者停下问
发给谁不清楚 名单里留一个没有邮箱的人 列出来问你,不自己猜
跑得太久 给它一大堆文件 做完多少报多少,没做完的列出来

哪一种没过关,就在提示词或技能里补一句对应的规矩,再演一遍。每补一句,都是在把一种悄悄错变成报错。半小时的演习,省的是以后几个月不知不觉的错账。

常见的断点和补法

线跑起来之后,最常见的几种断法:

断在哪 表现 补法
上一步没交出东西 下一步空跑,或者拿旧文件干活 每步交一个带日期的文件;“没拿到就停下告诉我”
同一条处理了两次 表里多了重复的行 像第 25 节建公众号选题库时那样,写一句“写入前先检查是否已存在”
状态被人改乱 该写的没写,不该写的写了 状态选项定死(单选),写清谁能改
授权过期 读不了飞书、发不了邮件 定期看连接器状态;日志里“异常”那一列会先告诉你
一步错,步步错 方向歪了,后面全白干 在花大力气之前放一道闸门(第 29、30 节)

什么时候算能放手

新线上线,头一周每天看一眼日志,第二周隔天看,稳了再放。能不能脱手,至少看三条:

  • 手动跑顺过不止一次,输入输出都稳定;
  • 结果存在哪是明确的,不是它自己挑的地方;
  • 外面依赖的都稳:数据按时到、连接器授权没过期、模型能用;电脑在该跑的时候开着。

还有一条容易忘:换了模型、技能或连接器,就当是一条新线。之前那次验收是在旧组合下成立的,换完就作废了。最省事的办法是拿一件你已经知道正确答案的小活再跑一遍,结果对得上,再放它回去定时跑。

一条线的上线检查单

下面这份十项验收,拿来当任何一条线上线前的检查单:

动手做

上线前,一条条对

  • 输入从哪来?
  • 在哪个文件夹里干活?
  • 依据哪些资料?
  • 用了哪些技能、专家、连接器?
  • 它有什么权限?
  • 成品存在哪?
  • 怎么判断结果是对的?
  • 失败了怎么停、怎么接着做?
  • 谁负责最后确认?
  • 是不是已经稳到值得自动跑了?

再加上这一节的三样:三句吭声的话写了没有、运行日志开了没有、坏情况演过没有。

线稳了,就会一条条多起来:日报一条,周报一条,选题一条,报销一条。每条都有要你看的成品、要你拍板的闸门、要你扫一眼的日志,散在不同的文件夹和手机推送里。下一章,给它们做一个家:你的个人工作台。