工作流稳定运行
没人盯着也不悄悄出错:它自己报数、留日志,坏了你第一时间知道
- 认得出一条线最危险的毛病:不报错地错
- 在提示词和技能里加上三句话:报数、写出处、没有就说没有
- 让每条线留一本运行日志,一眼看出哪天没跑、哪天跑空了
- 上线前故意把它弄坏一次;知道什么时候才算能放手
同一条“每天早上出日报”的线,两种坏法:
早上 9 点,它没找到昨天的数据表,停下来说:“D:/数据/ 里没有 9 月 24 日的文件,今天的日报没有生成。”
你看一眼就知道:同事忘了传表。催一句,十分钟补上。
早上 9 点,它没找到昨天的数据表,就拿前天那份凑了一份日报,格式整齐,数字齐全。
你连着看了三天,第四天开会才发现:这三天的数一模一样。
报错的线不可怕,可怕的是悄悄错的线:它照常交东西,交得还挺像样,只是内容不对。人盯着的时候,你一眼就能看出来;设成定时、交给流程技能以后,就没人盯了。

这一节不教新功能,教几个习惯:让它出了岔子会吭声,让你不用天天看也知道它好不好。
它会在哪些地方悄悄错
第 27 节说过:第一次跑通,往往是你盯着它的时候;一到定时执行,数据可能还没到齐,授权可能过期,文件可能撞名,旧文件可能搅局。把这些情况摊开,就是一条线最常见的几种悄悄错:
| 出了什么岔子 | 它可能怎么“圆过去” |
|---|---|
| 今天的数据还没到 | 拿昨天的、上周的顶上 |
| 该处理的东西是空的 | 编几条凑数:第 27 节那个“没新闻也凑 5 条”的简报 |
| 有几个文件读不出来 | 跳过不提,汇总里少了几份 |
| 连接器授权过期了 | 只读到一部分,照样出结果 |
| 同一条已经处理过 | 又处理一遍,表里多出重复的行 |
| 新文件和旧文件同名 | 直接覆盖,旧的没了 |
它这样做不是使坏:你让它“出一份日报”,它就想办法交出一份日报。你没告诉它“交不出来的时候怎么办”,它就会想办法交出来。
三句话,让它自己吭声
看一段每天自动出日报的指令,可以直接抄:
每天早上9点读 D:\数据\前一日.xlsx,生成一页日报,通过企业微信发给我。当天文件要是没有,直接告诉我没有,别拿前一天的顶上。日报同时存一份到 D:\日报,文件名带日期。正文第一行写清数据取自哪个文件。
这段话里有两句让它吭声的话,再加上一句报数,凑成三句,适用于每一条线:
- 没有就说没有当天文件要是没有,直接告诉我没有,别拿前一天的顶上
- 写出处正文第一行写清数据取自哪个文件
- 报数做完告诉我转了几份、几份没转成、分别卡在哪
当天文件要是没有,直接告诉我没有,别拿前一天的顶上 正文第一行写清数据取自哪个文件 做完告诉我转了几份、几份没转成、分别卡在哪
- 没有就说没有,堵的是“拿旧的顶上”和“编几条凑数”。第 29 节选题推荐那条线的定时任务里,也有同样一句:“没有可用记录时直接说明。”
- 写出处,让你扫一眼第一行就知道它读的是不是今天的文件。三天数字一样的那种错,第一天就露馅。
- 报数,让“跳过不提”藏不住。好用的指令,差不多每条都以报数收尾:合并表格的,报“合了几个文件、总共多少行,总额跟原表加起来对不对得上”;清洗名单的,报“原来多少行、删了多少行、剩多少行”。数对不上,就是哪里漏了。
把这三句写进定时任务的提示词,或者写进流程技能的“规则”里,一次写好,每次都守。
给每条线留一本运行日志
报数是一次的,日志是天天的。让它每跑一次,就在一个固定的表里追加一行:
每次运行结束,在 D:/流程日志/运行日志.csv 末尾追加一行:运行时间、线的名字、读了哪个文件、处理了几条、有几条问题、成品存在哪、这次有没有异常(没有写“正常”)。不要改动已有的行。
跑上一周,这张表长这样(示意):
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | 运行时间 | 线 | 读了什么 | 处理 | 问题 | 成品 | 异常 |
| 2 | 9-22 09:01 | 每日销售日报 | 前一日-0921.xlsx | 86 行 | 0 | D:/日报/0922.docx | 正常 |
| 3 | 9-23 09:01 | 每日销售日报 | 前一日-0922.xlsx | 91 行 | 2 | D:/日报/0923.docx | 2 行金额为空,已标待确认 |
| 4 | 9-24 09:02 | 每日销售日报 | 没有找到 0923 的文件 | 0 | — | 未生成 | 文件缺失,已停止 |
| 5 | 9-25 09:01 | 每日销售日报 | 前一日-0924.xlsx | 88 行 | 0 | D:/日报/0925.docx | 正常 |
日志有三个用处:
- 看它跑没跑。哪天少了一行,就是那天没留下记录:可能根本没触发(电脑睡了、客户端退了,第 27 节讲过,这是定时任务最常见的“失踪”),也可能跑到一半失败了。去定时任务页的运行记录里看一眼,就分得清是哪种。
- 看它跑没跑空。“处理了 0 条”连着出现,就是上游断了。
- 出了问题能倒查。哪天开始不对的、读的是哪个文件,都在这里。
有人用定时任务每天更新一个自己做的网站,办法更直接:在网站上放一个“更新时间”,用来追踪它到底有没有更新。打开页面看一眼时间戳,就知道今天跑没跑。日志也好、时间戳也好,都是给一条线装了个“心跳”。第 33 节会把这个心跳放到你的工作台上,打开就能看到每条线今天跳没跳。
上线之前,故意把它弄坏一次
一个好习惯:一条线在启用定时之前,故意制造几种坏情况,看它怎么反应。常见的有这七种:输入文件不存在、格式变化、连接器授权失效、结果为空、超时、同名文件、发送对象不明确。
照这个清单,自己演一遍:
| 故意造的坏情况 | 怎么造 | 过关的反应 |
|---|---|---|
| 输入文件不存在 | 把今天的数据表挪走 | 停下说“没有找到”,不拿旧的顶上 |
| 格式变了 | 表里删一列、改一个列名 | 说出哪一列对不上,而不是算出一堆错数 |
| 授权失效 | 在连接器里断开一次 | 说读不到,不假装读到了 |
| 结果为空 | 放一个空表进去 | 写“今天没有”,不编 |
| 同名文件 | 输出文件夹里先放一个同名文件 | 不覆盖:改名另存,或者停下问 |
| 发给谁不清楚 | 名单里留一个没有邮箱的人 | 列出来问你,不自己猜 |
| 跑得太久 | 给它一大堆文件 | 做完多少报多少,没做完的列出来 |
哪一种没过关,就在提示词或技能里补一句对应的规矩,再演一遍。每补一句,都是在把一种悄悄错变成报错。半小时的演习,省的是以后几个月不知不觉的错账。
常见的断点和补法
线跑起来之后,最常见的几种断法:
| 断在哪 | 表现 | 补法 |
|---|---|---|
| 上一步没交出东西 | 下一步空跑,或者拿旧文件干活 | 每步交一个带日期的文件;“没拿到就停下告诉我” |
| 同一条处理了两次 | 表里多了重复的行 | 像第 25 节建公众号选题库时那样,写一句“写入前先检查是否已存在” |
| 状态被人改乱 | 该写的没写,不该写的写了 | 状态选项定死(单选),写清谁能改 |
| 授权过期 | 读不了飞书、发不了邮件 | 定期看连接器状态;日志里“异常”那一列会先告诉你 |
| 一步错,步步错 | 方向歪了,后面全白干 | 在花大力气之前放一道闸门(第 29、30 节) |
什么时候算能放手
新线上线,头一周每天看一眼日志,第二周隔天看,稳了再放。能不能脱手,至少看三条:
- 手动跑顺过不止一次,输入输出都稳定;
- 结果存在哪是明确的,不是它自己挑的地方;
- 外面依赖的都稳:数据按时到、连接器授权没过期、模型能用;电脑在该跑的时候开着。
还有一条容易忘:换了模型、技能或连接器,就当是一条新线。之前那次验收是在旧组合下成立的,换完就作废了。最省事的办法是拿一件你已经知道正确答案的小活再跑一遍,结果对得上,再放它回去定时跑。
一条线的上线检查单
下面这份十项验收,拿来当任何一条线上线前的检查单:
上线前,一条条对
- 输入从哪来?
- 在哪个文件夹里干活?
- 依据哪些资料?
- 用了哪些技能、专家、连接器?
- 它有什么权限?
- 成品存在哪?
- 怎么判断结果是对的?
- 失败了怎么停、怎么接着做?
- 谁负责最后确认?
- 是不是已经稳到值得自动跑了?
再加上这一节的三样:三句吭声的话写了没有、运行日志开了没有、坏情况演过没有。
线稳了,就会一条条多起来:日报一条,周报一条,选题一条,报销一条。每条都有要你看的成品、要你拍板的闸门、要你扫一眼的日志,散在不同的文件夹和手机推送里。下一章,给它们做一个家:你的个人工作台。