把一件跨步骤的办公任务交给 WorkSwarm,通常不是整段交出去,而是先切出一段「输入齐、判定确定、失败能停下」的步骤让它跑完,取数和对外发送这两头留给人。判断的入口只有一个:这一步需要的输入,在任务开始时是否已经躺在工作区里。已经在,才有自动化前提;要靠邮件、共享盘或他人动作先产生的,先不划进自动段。
把任务先写成步骤串,再逐条核对输入是否已在工作区,能自动的一段通常落在中间转换环节:校验、对齐、汇总、出图、按模板套正文。建议在测试工作区里只跑这一小段,看日志停在第几步、留下哪些中间文件,再数一遍人工接手要补的内容。边界是:涉及审批、外发、改写共享盘原件的步骤,即使技术上能跑也不并入自动段;输入缺失时不要用占位文件硬凑,否则停机点会从缺输入的位置后移到结果校验的位置,收拾成本更高。
挑一个真实的多步骤任务并写出完整步骤串
选一个有明确交付物的任务,例如「把三个渠道导出的订单明细合成 6 月渠道月报,主管看过之后发给三家对接人」。口头需求要落成可切分的步骤表,每个步骤只做一件事,同时写清输入来自哪里、产出是什么文件或什么结论。步骤表先写在文档里,字段固定成:步骤号、动作、输入来源、产出物。
- 收齐三份渠道导出文件。输入:邮箱附件或共享盘目录;产出:
work/inbox/channel_a.csv、channel_b.csv、channel_c.csv以及manifest.txt(记录文件名、字节数、落地时间)。 - 校验列名与行数。输入:上一步三份 csv;产出:
work/out/validate.log,逐文件记录缺失列名、表头行、空主键行号。 - 字段对齐并合并。输入:三份 csv 加
work/conf/channel_map.csv(渠道名到标准渠道编码的映射);产出:work/out/merged.csv。 - 按渠道与品类汇总。输入:
merged.csv;产出:work/out/summary.csv。 - 生成汇总图。输入:
summary.csv;产出:work/out/charts/bar_channel.png。 - 套模板写月报正文。输入:
summary.csv、图表、上月月报模板;产出:work/out/draft_month_report.docx。 - 主管审批。输入:草稿与汇总表;产出:审批意见或放行标记。
- 发邮件给三家对接人。输入:草稿、图表、收件人清单;产出:发送记录。
写步骤串时把「读取」和写「写入」分开写,后面判断输入时就不会混。步骤数通常控制在 8 步以内,超过这个量一般说明有两件任务被并到了一起,建议拆开。
逐个标注每步的输入是否已经存在于工作区
逐条问一句:这步运行前,需要的输入是不是已经在工作区里,路径能不能被列出来。先列完整输入来源,再给每步归类。
- 三份渠道导出文件:来自邮箱或共享盘,不在工作区,需要先落地。
channel_map.csv:渠道名映射表,通常由运营维护,需确认是否已经放进work/conf/。- 上月月报模板:需确认是否已有可用的
docx或md模板。 - 收件人清单:需确认,且属于外发相关信息。
- 步骤 2 至步骤 5 的输入:全部来自前一步产出,落在工作区内。
归类时用下面这张三栏表,归类依据写具体,不写「看情况」。
| 可自动 | 需确认 | 需人工 |
|---|---|---|
| 步骤 2 校验、步骤 4 汇总、步骤 5 出图:输入全部来自上一步工作区产出 | 步骤 3 合并:取决于 channel_map.csv 是否齐全;步骤 6 写正文:取决于模板是否已在工作区 | 步骤 1 收文件:输入来自邮箱或共享盘;步骤 7 审批;步骤 8 发送 |
判断单个步骤能不能自动化,可以只认三条可验证标准:一是输入可达,运行前用一次目录列举或一次读取就能确认文件存在,路径能被日志打印出来,缺失即判不可自动;二是判定可写成确定性规则,例如列名匹配、主键非空、行数大于零,同一份输入重复跑结论一致,需要「看着办」的判不可自动;三是失败可停且不触外,这一步只往工作区写新文件,不改原文件、不发邮件、不提交审批、不写共享盘。三条都满足才划进自动段。下面这段骨架用来把结论落成配置,字段名按你实际使用的编排方式替换。
task: channel_monthly_report
workspace: ./work
steps:
- id: collect
run: manual
- id: validate
run: auto
in: [work/inbox]
out: work/out/validate.log
- id: merge
run: auto
in: [work/inbox, work/conf/channel_map.csv]
out: work/out/merged.csv
- id: draft
run: confirm
- id: approve
run: confirm
- id: send
run: manual跑之前用一条命令核对输入,缺什么当场就能看到:
ls -l work/inbox work/conf
test -f work/conf/channel_map.csv && echo "input ok"把需要外部拍板的步骤单独拎出来
需要人拍板的步骤不要混在自动段里,单列成确认点,每个确认点写三件事:谁确认、依据什么确认、确认之后流程往哪走。
- 映射表新增条目:确认人是维护映射表的运营同事,依据是
validate.log里列出的未匹配渠道名,确认后把新条目写进channel_map.csv,再重跑合并及之后的步骤。 - 月报草稿内容:确认人是主管,依据是
draft_month_report.docx与summary.csv,确认后进入发送准备,未确认则流程停在草稿,不生成外发内容。 - 外发动作:确认人是业务负责人,依据是收件人清单、邮件正文与附件,确认后才触发发送,这一步默认不进自动段。
确认点写清之后,自动段的边界也就固定了:确认点之前的转换步骤可以跑,确认点本身要人介入。
只在测试任务上跑可自动的那一段
验证切分是否成立,不要一上来就跑正式目录。新建一个测试工作区,放几份小体量的样例 csv、一份映射表和一份模板,把归类为「可自动」的步骤挂上去跑,其余步骤保持关闭。跑完按日志核对三件事:停在第几步、停下时留下了哪些中间结果、有没有改动输入文件。
grep -nE "step=|stop_at_step|error" work/out/run.log
ls -lt work/out work/out/charts需要记录下来的中间结果,通常是 validate.log 里的列名与空值清单、merged.csv 的行数、summary.csv 的汇总结构、charts 目录下的图片文件,以及日志里明确的 stop_at_step。如果停机发生在校验步骤,说明输入本身没备齐,先回到第二节补输入来源,而不是去改自动段的规则。为了确认判定规则稳定,可以用同一份样例再跑一次,对比两次产出是否一致;也可以用 diff 对比输入文件跑前跑后的差异,确认自动段没有回写原文件。
把停机后留下的中间结果接到下一步手工操作上
停机位置确定后,量一遍交接成本:数一数人工接手时要复制或补写的具体内容有多少条。
- 日志里未匹配的渠道名,需要补写进
channel_map.csv的映射条目,再重跑合并之后的步骤。 summary.csv中的汇总数字,需要复制进月报正文对应表格位置。- 草稿里模板无法生成的部分,需要补写:数据口径说明、异常波动的解释、下月计划。
- 图表标题、单位、渠道名的显示名称,需要人工校正。
- 收件人清单、抄送范围、邮件问候语与落款,需要人工填写。
- 如果停机发生在生成草稿之前,还需要把中间结果文件路径手动登记进人工操作清单,避免下一个接手的人重新找。
这些条目数就是这段自动化的实际交接成本:需要复制的字段越多、需要重跑的步骤越靠前,说明自动段圈得不成形,可以缩小范围,只保留校验、汇总、出图这类输入全部来自工作区的步骤。反过来,如果接手时只需补少数几条映射和一个正文段落,切分基本成立,再考虑把这段固化下来。所有判断都以日志和工作区文件为准,环境不同、映射表和模板的维护方式不同,结论需要结合实际情况再确认一遍。