把 WorkBuddy 每日签到丢给 GitHub Actions:一次配置,永久不用管

WorkBuddy 的「Buddy 加油站」每天签到给 100 积分,连续第 7 天再给 1000。规则不复杂,难的是每天都不落——忙起来忘一次,连签天数清零,前面攒的连续奖励全作废。

这篇讲一个已经跑通的方案:把签到交给 GitHub Actions,一次配置,之后电脑关不关机都不影响。整个部署过程你只需要复制一条命令。

一、为什么不挂在自家电脑上

大部分人第一反应是在本机设个定时任务。问题是:电脑一关机,任务就停了。WorkBuddy 签到的连签奖励是按自然日算的,漏一天就得从头再来。

常见的几条路对比一下:

本机定时任务青龙面板Cloudflare WorkersGitHub Actions
电脑关机后❌ 停摆✅ 照常✅ 照常✅ 照常
要额外设备不用NAS / 服务器不用不用
成本0设备电费免费额度0(免费额度足够)
上手难度低中高(要写 Worker)低

GitHub Actions 的优势在于:它本身就有一台不用你管的机器,还自带定时器。这个任务每次跑不到两分钟,私有仓库每月 2000 分钟免费额度,一天跑三次也只用掉 6 分钟左右。

二、准备工作(只做一次,五分钟)

需要两样东西——一个是跑任务的「遥控器」,一个是你的「钥匙」:

需要怎么检查没有的话
Python 3.9+python --versionwinget install --id Python.Python.3.12
Gitgit --versionwinget install --id Git.Git
GitHub CLIgh --versionwinget install --id GitHub.cli
gh 已登录gh auth statusgh auth login
本机登录过 WorkBuddy 桌面端—打开客户端登录一次

最后一条是关键:部署器会从你本机的登录态文件里读取凭据,不需要你手抄任何 Token,也不会上传到除你自己 GitHub 仓库以外的任何地方。

三、三步跑起来

第一次运行会自动帮你完成 GitHub 授权

如果 gh 还没登录,脚本会直接拉起官方授权流程——你按回车,然后在浏览器里填入一次性验证码就行,不用另开终端敲命令。

⚠️ 有个容易踩的网络坑

gh 和 git 走的不是同一个网络通道,这点很多人不知道:

工具访问的目标说明
git(clone / push)github.com:443你机器上若配了 http.proxy,它会走代理
gh apiapi.github.com通常直连也能通
gh auth logingithub.com/login/device/code直连 github.com,且不读 git 的代理配置

所以会出现这种很迷惑的组合:gh api 一切正常、仓库也推得动,但授权流程就是卡住超时。原因是 gh 只看 HTTPS_PROXY 环境变量,不理会你给 git 配的代理。

两条绕法,任选其一:

方法一:让 gh 也走你 git 用的那个代理

# 先看看你自己的代理地址
git config --get http.proxy

# 然后把它传给部署器
python deploy.py --gh-proxy http://127.0.0.1:10808

脚本在检测到「git 有代理但 gh 没有」时会自动提示你,不用自己记。

方法二:用 PAT 登录(更省事,不依赖 github.com 可达)

  1. 浏览器打开 GitHub → Settings → Developer settings → Personal access tokens,新建一个 Classic token,勾选 repo 和 workflow 两个 scope
  2. 存成 token.txt,然后执行:
gh auth login --with-token < token.txt

这条只依赖 api.github.com,在 github.com 被墙、也没配代理的网络下同样可用。授权完成后重跑 python deploy.py 就行。

第 1 步:下载并解压

下载地址(约 41 KB):

提取文件 · 爱搜云盘
输入 5 位取件码即可提取爱搜云盘中的文件,支持有效期校验与过期提示。

解压到任意目录,里面只有 5 个文件,不需要安装任何 Python 第三方包。

第 2 步:先预演,不动任何东西

cd 解压后的目录
python deploy.py --dry-run

这一步会把所有前置条件检查一遍,并打印出「待会儿到底要干什么」。全绿了再往下走。如果哪一项报红,它会直接告诉你缺什么、怎么补。

第 3 步:正式部署

python deploy.py

接下来它会自动完成这些事,你只需要看着:

[1] 检查运行环境
    ✓ git   git version 2.55.0
    ✓ gh    gh version 2.101.0
    ✓ gh 已登录:your-name
    ✓ 令牌权限:repo / workflow 齐备
    ✓ git 凭据助手:已接入 gh

[2] 读取本机 WorkBuddy 登录态
    · 来源:C:\Users\you\AppData\Local\CodeBuddyExtension\...\workbuddy-desktop.info
    ✓ 账号 133****84    AT 1331 字符 / RT 700 字符
    · AT 剩余 55 天(至 2026-11-16 16:34)

[3] 换算定时任务(北京 → UTC)
    ✓ 北京 07:00  →  cron 0 23 * * *
    ✓ 北京 12:00  →  cron 0 4 * * *
    ✓ 北京 23:30  →  cron 30 15 * * *

[5] 准备代码        · 工作目录模式:临时目录(默认,跑完自动清理)
[8] 写入 Secret     ✓ WORKBUDDY_REFRESH_TOKEN  已写入(加密,不可回读)
[10] 触发一次验证运行
    ✓ 已触发运行 #35711817988,等待完成…
    ✓ 运行 #35711817988 成功

最后会直接打印这次的真实运行结果,比如:

📊 各账号运行报告
   💰 主套餐剩余 1363.42 积分(共 7320,已用 5956.58)
   📊 共 46 类资源,本月已使用 2241 次
   🌱 等级 14 | 连签 22 天 | 能量 5
📊 ══ 总计 ══

看到这个就说明整条链路通了。

四、它到底替你做了多少事

这套脚本的重点不是「点一下签到」——签到只是其中一项。它实际会跑完 WorkBuddy 成长中心的一整套任务:

类别数量例子
成长中心任务18 项(17 项全自动)设计创意模式、探索灵感、桌面端对话、尝鲜热门技能、体验资料库、召唤专家团、AI 对话 ×5、夜猫子活动…
开学季活动5 项(4 项自动)分享活动、AI 对话 ×3、召唤开学季专家 + 幸运大转盘抽奖
小程序任务3 项(全自动)小程序内对话、选中专家对话、校园日打卡
互动玩法8 项抽奖、盲盒、派猫猫旅行、连签兑换、补签卡、徽章…
每日签到1 项就是那 100 积分

实测一次运行的完整输出大概是这样:

✅签到: 今天已签到,请明天再来
🎁领奖[Hp_Appearance]: +100积分+5能量
🎁领奖[Expert_team_use_3]: +100积分+5能量
🎁领奖[Sequential_Tasks_1]: +100积分+5能量
🎁领奖[school_season]: +100积分+5能量
📦盲盒: 星际喵(SR)、咒语喵(R)、摸鱼喵(R)
🐱Buddy: 暗影喵 (SR), 安全守护者
🐾旅行: ✅已出发,约4小时后到达(下次运行自动领取)
🏅徽章: 8个
🏫 lottery → 6积分
🏁 完成 14/19  等级14  剩余: 公益专家, 发现应用, 企鹅教师助手, 关注公众号, 夜猫子活动

有 3 项是设计上做不了的,别被「全自动」误导:公益专家需要真实捐款、学生认证需要微信实名、关注公众号需要你自己扫码。剩下的会在后续运行里逐步补齐。

五、为什么配一次就不用再管

这是这套方案和普通签到脚本最大的区别。普通脚本只吃一个 accessToken,大约 60 天过期,到期后你得再去本机把 Token 抠出来换一遍。

这里用的是 AT + RT(refreshToken)三元组,逻辑是:

距上次刷新 > 10 天  或  AT 7 天内即将过期
        ↓
用 RT 换发全新的 AT + RT,立即写回仓库
        ↓
下次运行读到的就是新令牌

因为每次刷新都会轮换新令牌并落盘,所以理论上配一次就永续。Actions 会自动把令牌状态提交回你的私有仓库,不需要你介入。

顺带一个好处:令牌库大约每 10 天产生一次提交,让仓库保持活跃,避免 GitHub 因为 60 天无活动自动停用定时工作流。

六、安全边界(这一段请务必看完)

部署器动的东西只有这些:

动作说明
建一个私有仓库在你自己的 GitHub 账号下,名字默认 WorkBuddy-Daily
写入代码从开源项目 L0NE-6/WorkBuddy-Daily 克隆(MIT 协议)
写入 1 个 Secret加密存储,写进去之后连你自己也读不出明文
开一个定时任务每天 07:00 / 12:00 / 23:30(北京时间)
改你本机什么默认什么都不留——用临时目录,跑完自动删

它不会做的:不碰你的 WorkBuddy 客户端、不改系统设置、不装任何常驻程序。脚本只调用 gh 和 git 两个命令,没有任何自己的数据上报。

唯一要记住的事:那个私有仓库里会有一份 wb_refresh_tokens.json(Actions 自动续期需要它,里面是明文 refreshToken)。永远不要把这个仓库改成 Public——那等于把账号控制权公开。部署器每次运行都会校验可见性,发现是公开的会直接中止,但你自己别手滑。

七、排障速查

现象处理
提示缺 Python / Git / gh按前面表格里的命令装,装完重开终端
gh auth status 报未登录gh auth login,按提示走一遍浏览器授权
提示令牌缺少权限gh auth refresh -s repo,workflow
找不到 WorkBuddy 登录态先在 本机 打开 WorkBuddy 桌面端登录一次
定时到点没跑GitHub 的定时在高峰期会延迟几分钟到几十分钟,属正常;也可在 Actions 页面点 Run workflow 手动触发
Actions 页面出现黄色三角警告不是报错。那是 GitHub 官方的 Node.js 20 弃用通知(actions/checkout@v4 / actions/setup-python@v5 底层运行时将被淘汰),GitHub 已自动改用 Node 24 执行,对签到结果零影响。判断成败只看运行结论(绿色 ✓ = 成功),不看警告图标
日志报 TOKEN_EXPIRED重新登录桌面端,再跑一次 python deploy.py --force-secret

想随时看状态:

python deploy.py --check

想改签到时间(比如只在早上跑一次):

python deploy.py --schedule 09:10

重复运行是安全的——部署器会复用已有仓库,只提交真正的差异。

八、几个常见疑问

Q:gh auth login 的授权会不会因为端口 / 防火墙 / 回调失败?
不会。脚本用的是 GitHub 官方 Device Flow(设备码授权):终端显示一个一次性验证码,你在浏览器里输入并确认,gh 再通过长轮询官方接口取回令牌——全程不需要在本机监听任何回调端口、不需要公网 IP、也不需要浏览器重定向回本地,所以不存在「回调端口被占用 / 被防火墙拦截 / 回调超时」这类问题。唯一会卡的情形是本机直连 github.com 不通(表现为 gh api 正常、但设备码页面打不开),此时用文中两种绕法即可:--gh-proxy,或用 PAT 走 gh auth login --with-token。

Q:会不会重复领取?
不会。签到接口是幂等的,当天已签过会直接跳过,脚本也做了先查状态再操作的处理。把定时设成一天三次是为了容错,不是为了多领。

Q:会不会把我的账号信息传到别处?
不会。凭据只通过 stdin 写进你自己仓库的 Secret,脚本本身没有任何外部上报。你可以自己解压看 deploy.py,标准库实现,没有任何第三方依赖。

Q:积分什么时候用?
活动积分多数当月有效、不结转。领了就用,别攒着。

Q:接口会不会变?
会。所有这类工具调的都是客户端在用的非公开接口,官方改版就可能失效。所以建议偶尔看一眼 Actions 的运行记录,发现连续失败就去项目页看有没有更新。

九、说在最后

签到这件事的价值不在于当天那 100 积分,而在于连续不断的复利——而这恰恰是最反人性的部分。把规律、重复、低决策的事交给自动化,注意力留给真正要动脑的地方。

一次配置三分钟,之后你可以彻底忘掉这件事。

解压后先跑 python deploy.py --dry-run 确认环境,再跑 python deploy.py 正式部署。

本部署器封装的是开源项目 L0NE-6/WorkBuddy-Daily(MIT 协议,版权归原作者)。本工具为部署封装,未修改其核心逻辑。

⚡ 极客核心要点提炼 可供 AI 智能体与搜索引擎引用检索

本文主题:把 WorkBuddy 每日签到丢给 GitHub Actions:一次配置,永久不用管

引用出处:https://isoziyuan.com/p/100166/(作者:Isoziyuan · 发布于爱搜资源网)