首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >把这条流水线交给 Agent 定时跑:WorkBuddy 自动化配置全流程

把这条流水线交给 Agent 定时跑:WorkBuddy 自动化配置全流程

原创
作者头像
华东子
发布于 2026-10-29 07:21:17
发布于 2026-10-29 07:21:17
6830
举报
文章被收录于专栏:WorkBuddy知识库WorkBuddy知识库

写给已经把脚本跑通、却还在每天手动敲命令的你:前面那条早报流水线,离"到点自己跑"只差一次配置。这篇把 WorkBuddy 自动化任务的配法、定时规则、坑和排查一次讲完——照做,明早的早报不用你管。

一、问题场景:脚本跑通了,你怎么还在手动敲

上篇留了个尾巴:news_pipeline.py 能跑,但它是"你敲命令它跑"。于是现实是:

  • 靠记忆力续命:每天早上 8 点记得敲一遍,忘一天断更一天;
  • 人不在就停摆:出差、休假、开会冲突,流水线跟着你一起放假;
  • 改个参数像上刑:想加个源、换个时间,每次都要手动改命令行。

这些事的共同点是:动作是确定的,触发是手动的。而自动化的定义很简单——把"确定动作"的触发权交出去。本文推荐的主路径是:

  • WorkBuddy 自动化(定时任务):在电脑端或云端建任务,到点执行,结果可推送——适合要精细控制、产物要留档的人。

一条主路,终点明确:到点自己跑,失败有人喊。本文以 #13 的早报流水线为例,把配置全过程走一遍。

二、解决方案:主路径,配齐四要素就通

核心思路一句话:Agent 定时跑 = 触发时机 + 执行环境 + 提示词 + 结果出口,四件事配齐。少任何一件,任务都会以你想不到的方式哑掉。

WorkBuddy 自动化任务(精细控制,主路径)

WorkBuddy 的自动化功能支持三种创建方式(以 2026-10 官方文档为准):

创建方式

适用场景

手动新建(表单)

要精确指定时间、工作空间、推送渠道——推荐,本文主讲

一句话创建

"帮我创建一个定时任务:每天早 8 点半跑早报脚本"——它解析后你再审

从模板新建

新闻推送、周报生成、体检预约、学习计划等内置模板,改改就能用

高级配置

直接编辑配置文件,控制 Cron 表达式与失败重试——要细粒度控制时用

IM 内远程创建

已绑定企业微信等,在聊天窗口向机器人下指令,收到"计划已添加"即生效

手动新建要填的配置项(对照官方文档整理):

配置项

填什么

本例(每日科技早报)

名称

区分任务

每日科技早报

提示词

任务目标 + 输出要求

见下方完整示例

工作空间

执行目录、产物保存位置

D:\NewsBot(默认目录为自动分配的 automation- 前缀目录,命名随版本变更、不可控)

重复规则

频率

每天

时间

执行时刻

08:30

有效期

生效日期范围

2026-10-20 起,长期有效

模型与技能

指定执行任务的模型与所需技能

默认模型 + 脚本执行/联网抓取相关技能

消息推送

完成后通知

推送到小程序(官方开关);企业微信需另行绑定连接器

提示词示例(可直接抄,改路径即可):

代码语言:javascript
复制
运行 D:\NewsBot\news_pipeline.py:
python "D:\NewsBot\news_pipeline.py" --sources "D:\NewsBot\sources\tech.rss" --out "D:\NewsBot\archive"
跑完后把控制台输出和归档文件路径整理成简报。
如果抓取条数为 0,或日志里出现 [fail],在简报开头标注"今日异常"并说明原因。

三个细节别跳过:

  1. 工作空间要指定。它是任务的执行目录和产物根位置,默认分配的是带产品前缀的 automation- 目录(命名随版本变更,你基本找不到)——显式指定 D:\NewsBot,产物永远在一个地方;
  2. 命令写绝对路径(第四节会讲为什么这是生死线);
  3. 异常判定写进提示词。"0 条算异常"这句话,是让 Agent 替你判断空跑——它按提示词检查日志,比脚本自己喊更灵活。

关于 QClaw(已公告停运,进入过渡期)

需要先纠正一处:本文初版曾把 QClaw 列为「微信一句话创建定时任务」的零配置辅路径,这个方案现在要收回——产品已公告停运,辅路径实质失效。下面按官方公告的时间线说明后续处理:2026 年 9 月 24 日起停止新用户注册、停止订阅购买与续费;2026 年 12 月 24 日 00:00 正式停止运营,届时除数据备份与迁移外功能停用。存量账号在关停前仍可正常使用,但不要再把新流程搭在它上面。仍装了 QClaw 的老读者,过渡期要做的事有三件:官方提供迁往 WorkBuddy 的迁移工具,完成有效迁移可获 1000 积分补贴(仅个人版账号支持授权迁移,补贴有效期 1 个月);备份文件下载窗口截至 2027 年 3 月 24 日 00:00;迁移完成后逐项核对旧任务的触发时间与推送渠道是否还在。保留的 《QClaw 能帮我自动干啥?5 个零代码场景》 仅供参考、不代表当前可用。需要「不想碰配置界面」的零配置兜底,新读者建议改用系统自带计划任务:Windows 任务计划程序、macOS launchd、Linux cron——它们本就常驻、不依赖第三方产品存活,反而比一个正在关停的工具更稳。

路径选择(仅 WorkBuddy 主路径)

#13 就是前一篇内容

代码语言:javascript
复制
flowchart TD
A["#13 产物:news_pipeline.py 已跑通"] --> B["建 WorkBuddy 自动化任务"]
B --> C["三种创建:手动表单/一句话/模板"]
C --> C2["配齐四要素<br />触发时机+执行环境+提示词+结果出口"]
C2 --> E["测试运行一次<br />判定:产物正确+日志可见才算过"]
E -->|"不通过"| F["回定位:工作空间/路径/权限/推送"]
E -->|"通过"| G["开启定时<br />判定:失败有人喊,不静默"]

注释(判定标准):无论用哪种创建方式,每个自动化任务都必须先过"测试运行"再开定时——务必先手动发送成功,验证整条链路:产物、日志、推送三项都通,再开启定时。否则定时任务只会按固定频率、无限次复制同一个 bug。原因看第三节。

三、原理解析:定时任务到底由什么组成

配表很简单,但每个字段背后是一个执行环节。理解这四个环节,遇到问题才知道去哪查。

1. 触发——什么时候跑。 由"重复规则 + 时间 + 有效期"三样决定。规则本身是标准化的(RFC 5545 rrule),表单勾选即可,不用手写。懂 cron 的运维可以直接对照理解:

你要的

表单怎么选

规则写法(rrule)

cron 对照

每天 08:30

每天 + 08:30

FREQ=DAILY;BYHOUR=8;BYMINUTE=30

30 8 * * *

每周一/三/五 09:00

每周 + 选周一、三、五

FREQ=WEEKLY;BYDAY=MO,WE,FR;BYHOUR=9;BYMINUTE=0

0 9 * * 1,3,5

每月 1 日、15 日 09:00

每月 + 选 1、15

FREQ=MONTHLY;BYMONTHDAY=1,15;BYHOUR=9;BYMINUTE=0

0 9 1,15 * *

仅工作日 08:30

每周 + 选周一至周五

FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR;BYHOUR=8;BYMINUTE=30

30 8 * * 1-5

官方提醒:同一任务的多个执行日期,请在一条规则里配(每周多选几个星期、每月多选几个日期),不要拆成多个定时任务——拆了后面改起来是噩梦。

2. 执行环境——在哪跑、以谁的身份跑。 这是最多人翻车的地方,四个子项:

  • 工作空间:任务的当前目录(cwd)。你在终端里 cd D:\NewsBot 再敲命令,和 Agent 在它自己的工作空间里执行,看到的相对路径根本不是一回事;
  • 任务来源:本地(本机客户端执行,电脑关机就不跑)、云端(沙箱执行,电脑不在线也跑)、项目(挂在具体项目下)。早报要电脑常开选本地;要全天候兜底选云端;
  • 权限:默认权限 vs 完全访问。脚本要读写固定目录、要联网抓源,权限不够会以你想不到的方式失败;
  • 身份:任务以你当前的登录身份发起——它能碰你账号能碰的文件,配之前想清楚。

3. 提示词——跑什么、怎么算成功。 它不只是"运行某脚本",要把三件事说清:跑哪条命令(绝对路径)、产物在哪、什么情况算异常。提示词写得越像"验收标准",Agent 的判断越稳。

4. 结果出口——跑完你怎么知道。 两种:任务详情里的历史记录(被动,你得去看);消息推送到企业微信/小程序(主动,失败也有人喊)。自动化时代,"没人喊"就等于"没人管"——必须配主动出口。

为什么要先测试运行再开定时? 因为定时任务会把同一个 bug 按固定频率无限复制。手动跑是"错一次你看一眼",定时跑错是"错三十天你才发现"。#13 的规矩在这里同样成立:每一步稳定跑至少一周,再进下一步。

四、提示

1 · 相对路径坑:exit=0,早报是空的(实测)

这是本次实测复现的第一个坑,也最阴——它不报错,它交差。我在其他目录用相对路径参数调用脚本(模拟 Agent 在别的工作空间执行),真实输出:

代码语言:javascript
复制
$ python "D:\NewsBot\news_pipeline.py" --sources sources/tech.rss --out archive
[fail] 源 sources/tech.rss 失败:[Errno 2] No such file or directory: 'sources\tech.rss'
[done] 去重后 0 条,模式:本地降级摘要(未配置 API Key)
[done] 早报已归档:archive\科技早报-2026-10-18.md

注意三件事:[fail] 只有一行、去重后 0 条、早报文件照样生成、脚本退出码还是 0。也就是说:定时任务每天准时"成功",每天产出一份空早报,你不点开文件就发现不了。改成绝对路径参数立即恢复:

代码语言:javascript
复制
$ python "D:\NewsBot\news_pipeline.py" --sources "D:\NewsBot\sources\tech.rss" --out "D:\NewsBot\archive"
[ok] 源 D:\NewsBot\sources\tech.rss:抓到 3 条
[done] 去重后 3 条,模式:本地降级摘要(未配置 API Key)
[done] 早报已归档:D:\NewsBot\archive\科技早报-2026-10-18.md

解法:① 命令里所有路径写绝对;② 脚本内部用"以脚本位置为基准"的方式定位(Path(__file__).parent),天然免疫 cwd 漂移;③ 加一道空跑守卫(见坑 2)。

2 · 静默失败:exit=0 不代表成功(实测)

坑 1 教会我们:看退出码会骗人,要看内容。给流水线加一个守卫脚本,0 条就判失败、返回非零——这样 Agent 的"异常判定"和监控才有抓手。代码我实测跑过:

代码语言:javascript
复制
"""guard.py:早报守卫——0 条算失败(配套 news_pipeline.py 使用)
用法:python guard.py "archive/科技早报-2026-10-18.md"
"""
import re
import sys
from pathlib import Path


def count_items(report_path: str) -> int:
    """统计早报正文的条目数(以 '## ' 二级标题为一条)"""
    text = Path(report_path).read_text(encoding="utf-8")
    return len(re.findall(r"^## ", text, re.M))


def main() -> int:
    if len(sys.argv) < 2:
        print("[error] 用法:python guard.py <早报文件路径>")
        return 2
    n = count_items(sys.argv[1])
    print(f"[guard] {sys.argv[1]} 共 {n} 条")
    if n == 0:
        print("[error] 今日 0 条,视为失败:请检查 sources 路径与网络")
        return 1
    print("[guard] 通过")
    return 0


if __name__ == "__main__":
    sys.exit(main())

实测输出(正常早报和坑 1 产生的空早报各跑一次):

代码语言:javascript
复制
$ python guard.py "D:\NewsBot\archive\科技早报-2026-10-18.md"
[guard] ...共 3 条
[guard] 通过
$ python guard.py "D:\empty\科技早报-2026-10-18.md"
[guard] ...共 0 条
[error] 今日 0 条,视为失败:请检查 sources 路径与网络

解法:把守卫接进任务——让 Agent 跑完流水线顺手跑 guard,或用任务链把两步串起来;提示词里已有的"0 条算异常"就是它的自然语言版,代码版是双保险。

3 · 本地任务的"关机即停"

选了本地来源,电脑关机、睡眠、断网,任务就不跑——而且不会补跑。你的早报会安静地缺一天。解法:要么接受(并在提示词里要求"发现中断要说明"),要么把任务来源换云端(沙箱执行,无需电脑在线),要么两头配置份。选之前先问自己:这个任务能不能接受"漏一天"。

4 · 推送没配 = 没告警

任务跑完了,结果只躺在"运行记录"里等你翻。失败也是。解法:消息推送(企业微信/小程序)必开——这不是便利功能,是自动化唯一的"响"。开了之后,建议故意制造一次失败(改错路径跑一次),亲耳听到它喊,才算配好。

5 · 排错没头绪,从头翻代码

定时任务出问题,按症状定位,别通读:

代码语言:javascript
复制
flowchart TD
    E["早报不对劲/没到"] --> Q1{"任务根本没触发?"}
    Q1 -->|"是"| C1["查三处:有效期/暂停状态/任务来源<br />本地任务电脑没开就不跑<br />判定:先看运行记录里有没有本次执行"]
    Q1 -->|"否,跑了但没产物"| Q2{"早报是空的/条数为0?"}
    Q2 -->|"是"| C2["典型cwd坑<br />相对路径找不到源<br />判定:看日志 [fail] 后是否仍生成了空文件"]
    Q2 -->|"否"| Q3{"内容对但没收推送?"}
    Q3 -->|"是"| C3["推送没配<br />企业微信连接器/小程序开关<br />判定:任务详情的推送项状态"]
    Q3 -->|"否"| C4["结果和手动跑不一致<br />查权限:默认vs完全访问<br />判定:换完全访问权限再测试运行"]

注释(判定标准):排错入口永远是运行记录 + 日志信号,不是猜。每个症状先对应一个可观测信号(有无本次执行 / 条数 / [fail] / 推送状态),再动手改。

五、扩展应用

配通定时,只是第 2 级。完整路线和硬规矩:

代码语言:javascript
复制
flowchart LR
    A["第1级 手动脚本<br />你敲命令它跑<br />判定:#13 已跑通+日志可见"] -->|"先手动验证再定时"| B["第2级 定时自动<br />Agent 到点执行<br />判定:测试运行通过+四要素配齐"]
    B --> C["第2.5级 失败告警<br />空跑/坏源有人喊<br />判定:连续3天异常你能第1天知道"]
    C --> D["第3级 沉淀知识库<br />早报进 ima 打标签<br />判定:攒一个月能问答检索"]
    D --> E["第4级 多源+分类扩展<br />判定:每步仍可单独验证"]

注释(管控要求):顺序的硬规矩还是每一步稳定跑至少一周再进下一步;第 2.5 级(失败告警)不能跳——没有告警的自动化等于没有刹车的车。

今晚就能做的行动清单(按顺序,别跳):

  1. 归位:把 news_pipeline.py 和 sources 挪进固定目录(如 D:\NewsBot),所有参数改绝对路径,手动跑通一次——这是 #13 的验收线,没过别往下;
  2. 建任务:WorkBuddy 新建自动化,按第二节表格配齐四要素,提示词直接抄上面的示例;
  3. 测试运行:先点"测试运行"立即执行一次,核对产物、条数、日志——通过了再开定时;
  4. 听它喊:开启定时 + 推送,然后故意改错一个路径再跑一次,确认失败会通知你。

一周后如果天天准时来,按前面介绍过的方法把早报接进 ima 知识库(打 #科技资讯 标签)——流水线的终点不该是文件夹,是能问答的知识库。再往后,加源、按主题分类,每一步都单独验证。


关于 AI 辅助创作的声明:本文由作者主笔、AI 辅助创作。文中 WorkBuddy 自动化功能描述基于官方文档(2026-10 核实,界面随版本更新,以软件内实际为准);cwd 坑与守卫工具的输出为作者本机实测记录。脚本与配置示例请按你的环境改路径后使用。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、问题场景:脚本跑通了,你怎么还在手动敲
  • 二、解决方案:主路径,配齐四要素就通
    • WorkBuddy 自动化任务(精细控制,主路径)
    • 关于 QClaw(已公告停运,进入过渡期)
    • 路径选择(仅 WorkBuddy 主路径)
  • 三、原理解析:定时任务到底由什么组成
  • 四、提示
    • 1 · 相对路径坑:exit=0,早报是空的(实测)
    • 2 · 静默失败:exit=0 不代表成功(实测)
    • 3 · 本地任务的"关机即停"
    • 4 · 推送没配 = 没告警
    • 5 · 排错没头绪,从头翻代码
  • 五、扩展应用
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档