找回密码
 立即注册
查看: 62|回复: 2

[教程] WorkBuddy 自动签到教程:L0NE-6/WorkBuddy-Daily 青龙 / GitHub Actions 部署全流程

[复制链接]

105

主题

321

回帖

1010万

积分

管理员

积分
10103683
包松旺 发表于 昨天 11:27 | 显示全部楼层 |阅读模式 IP:美国–加利福尼亚州–洛杉矶–洛杉矶 Cogent
WorkBuddy 自动签到教程:L0NE-6/WorkBuddy-Daily 青龙 / GitHub Actions 部署全流程
项目地址:<https://github.com/L0NE-6/WorkBuddy-Daily> (MIT · Python 3.8+ · 依赖仅 requests · 单文件自包含)
教程依据:仓库 README(v3.7)整理,所有命令、变量名、定时规则均照抄原文,未做发挥。
适合谁:有 WorkBuddy 账号、想每天自动领成长中心积分,但不想守着手动点的人。
最终效果:配好一行令牌后,青龙或 GitHub Actions 每天定时自动完成 33 项任务(17 项云端 + 7 项小程序链式 + 8 项玩法 + 每日签到),自动领奖,并把全中文报告推到你的微信 / iOS / 企微 / 钉钉 / 青龙面板。重复运行只补缺口、不重复领取。



一、这是什么:一个脚本搞定成长中心全部自动化
01-项目总览.png
脚本干的事,一条链路:
  1. Token 自动续期 → 积分/用量/成长查询 → 17 项云端任务 → 7 项小程序链式任务 → 8 项互动玩法 → 自动领奖 → 中文报告推送
复制代码

几个关键设计:
特性说明
🔐 Token 永续只用一个刷新令牌(RT),脚本到期间自动续期并轮换写回,不用每月手动更新
📦 单文件自包含青龙只上传一个 workbuddy_daily.py 就能跑,专家市场数据、推送通知全部内置
♻️ 幂等补缺所有任务先查进度再执行,已完成/已领取直接跳过,重复运行零副作用
🛡️ 单账号隔离任一账号凭据失效只跳过该账号,不中断整轮运行
📊 全中文报告任务代码自动翻译成中文(如 skill_1 → 尝鲜热门技能),每账号独立分块 + 总计
🧩 不碰客户端文件令牌走短信登录从服务端直接获取,不受客户端本地加密影响(下文细说)

任务覆盖(另有 1 项需人工:微信公众号关注,需真人扫码关注满 24 小时,脚本只检测并提示):
  • 成长中心任务 17 项(云端·全自动):设计创意模式、探索优秀灵感、桌面端对话、尝鲜热门技能、体验资料库、和平精英主题、GLM-5.2 模型对话、和 AI 聊天 5 次、夜猫子活动、召唤 3 次专家团、使用 5 个模板、设置自动化任务、领取 Buddy……
  • 小程序成长任务 7 项(链式·每日解锁一环):Sequential_Tasks_1~7,完成一环次日零点解锁下一环,奖励 +100~+500 积分。
  • 互动玩法 8 项:抽奖、盲盒、Buddy 信息、派猫猫旅行、连签兑换、补签卡、礼包补偿、徽章。
  • 每日签到 1 项:独立接口 /v2/billing/meter/daily-checkin,自动完成。

📌 成长中心任务会随活动更新。脚本内置未覆盖任务检测:遇到没适配的新任务会在日志中明确提示。已结束的活动(开学季、校园日等)代码移到 archive/ 留档,不占主脚本。



二、工作原理:一次配置,Token 永续轮换
02-原理流程.png
为什么不直接读客户端里的 token? WorkBuddy 5.6.2+ 客户端默认强制开启 AtRestEncryption,认证文件(workbuddy-desktop.info / workbuddy-desktop-ai.info)里的 accessToken / refreshToken 不再是明文,而是 {"$wbEncrypted":1,"envelope":"…"} 形式的 AES-256-GCM 加密信封,解密密钥不落盘(只在客户端进程内存里)。
本项目的思路是绕开客户端文件:用官方短信验证码登录,让服务端直接下发明文 AT / RT。所以它不挑客户端版本,任何版本都能用。
自检口诀:值以 eyJ 开头 = 明文,可用;以 {"$wbEncrypted" 开头 = 信封,不可用。
永续循环怎么转起来的:
  • RT(刷新令牌)是唯一的续期凭据;
  • 距上次刷新 >10 天 或 AT 7 天内过期 时才刷新(避免无谓轮换,离线会话 30 天失效);
  • 每次刷新都会换发新 RT 并立即保存到 wb_refresh_tokens.json;
  • Actions 部署时,只有私有仓库才会把这个文件提交回仓库;
  • 只要不清库,令牌永不过期——这就是「配一个刷新令牌,剩下交给它」。
    [/list=1]


    三、准备工作(2 分钟)
    1. 拿到脚本(二选一):
    1. # 方式一:git clone(推荐,方便以后更新)
    2. git clone https://github.com/L0NE-6/WorkBuddy-Daily.git
    3. [size=6][b]方式二:不想用 git,直接到 Releases 下载[/b][/size]
    4. [size=6][b]https://github.com/L0NE-6/WorkBuddy-Daily/releases[/b][/size]
    5. [size=6][b]三个资产:完整包 zip / 主脚本 workbuddy_daily.py / 登录工具 workbuddy_login.py[/b][/size]
    6. [size=6][b]每个包都附 SHA256 校验值,青龙用户只需里面的 workbuddy_daily.py
    复制代码

    2. 装依赖(仅一个):
    1. pip3 install requests
    复制代码

    3. 认识一下目录(知道哪个文件干什么就行):
    1. WorkBuddy-Daily/
    2. ├── .github/workflows/workbuddy.yml   # GitHub Actions 定时工作流
    3. ├── workbuddy_daily.py                # 主脚本(签到/任务/玩法,单文件自包含)
    4. ├── workbuddy_login.py                # 登录工具(短信验证码换 Token)
    5. ├── workbuddy_intl_daily.py           # 国际版每日活跃脚本(workbuddy.ai)
    6. ├── requirements.txt                  # 依赖(仅 requests)
    7. └── archive/                          # 已归档的限时活动实现
    复制代码



    四、第一步:用短信验证码拿到一行令牌
    03-短信登录.png
    运行仓库自带的登录工具:
    1. python workbuddy_login.py                    # 交互式登录(推荐)
    2. python workbuddy_login.py 13800000000        # 指定手机号
    3. python workbuddy_login.py 13800000000 123456 # 手机号+验证码(跳过等待)
    4. python workbuddy_login.py --verify           # 登录后额外验证 RT 是否可用
    复制代码

    流程:输入手机号 → 自动发送短信验证码 → 输入收到的验证码 → 服务端直接下发 Token → 输出一行 手机号:AT:RT:
    1. 13800000000:eyJhbGciOiJSUzI1NiIs...很长...:eyJhbGciOiJIUzUxMiIs...也很长...
    复制代码

    格式要点:
    • 一行 = 手机号:AT:RT,三段用英文冒号 : 分隔(不要用中文冒号);
    • AT 可以留空(写成 手机号::RT);
    • 多账号每行一个,以后加账号就在变量末尾追加一行;
    • 结果同时保存到 wb_login_result.json(已被 .gitignore 屏蔽,不会提交)。

    方式 B(备选):从桌面端认证文件里取。 安装并登录 WorkBuddy 桌面端 → 用记事本打开 C:/Users/你的用户名/AppData/Local/CodeBuddyExtension/Data/Public/auth/workbuddy-desktop.info(新版文件名是 workbuddy-desktop-ai.info,两个都看一下)→ 搜索 accessToken 和 refreshToken,各自后面跟一串 eyJ 开头的长字符串,那就是 AT 和 RT。⛔ 5.6.2+ 客户端里这两个值已是加密信封,不可直接用,请回到方式 A。
    ⚠️ RT 是你唯一的续期凭据,泄露了别人就能操作你的账号,切勿提交到公开仓库。



    五、部署方式 A:青龙面板(三步)
    04-青龙部署.png
    步骤操作
    1️⃣ 上传脚本把 workbuddy_daily.py 放到青龙脚本目录
    2️⃣ 设置变量WORKBUDDY_REFRESH_TOKEN = 每行一个 手机号:AT:RT(多账号换行分隔)
    3️⃣ 定时任务日常 0 7,12 · 夜猫子窗口 30 23 \(青龙用本地时间)

    ⚠️ 高频坑(issue #16 实证):命令必须用青龙运行器。
    定时任务的命令填:
    1. task workbuddy_daily.py
    复制代码

    (在面板「定时任务 → 新建任务」时从脚本列表里选),不要填裸 python workbuddy_daily.py——裸 python 调用不会注入面板环境变量,脚本会直接报「请设置环境变量 WORKBUDDY_REFRESH_TOKEN」。变量明明存在、测试脚本也能读到,就是它。
    依赖管理里装一个:pip3 install requests
    🌙 为什么要单独的 23:30 定时? 夜猫子任务只在 23:00–08:00 期间计入进度,且要求真实对话(不能指纹伪造)。日常的 7 点、12 点都不在窗口内,必须有 30 23 * 这条,否则夜猫子永远跑不了。官方规则是「每天 1 次 × 累计 3 天」,脚本有响应即停,不会一晚空跑多次。
    📢 通知:面板里配了啥通知就用啥,连 webhook 都不用填——青龙 2.18+ 配 QL_CLIENT_ID + QL_CLIENT_SECRET(面板「应用授权」,需 system 权限),旧版自动读 auth.json。


    六、部署方式 B:GitHub Actions(零服务器·推荐)
    05-Actions部署.png
    本仓库已内置工作流 .github/workflows/workbuddy.yml,Import 到你自己的账号即可开启云端定时签到。维护者的仓库已关闭 Actions(不跑定时、也不会再发失败通知),想用云端定时必须自建。
    第 1 步:Import 成私有仓库(⚠️ 不要用 Fork)
    • 打开 <https://github.com/new/import>
    • 在 Your old repository's clone URL 填入 <https://github.com/L0NE-6/WorkBuddy-Daily>
    • 新仓库名称自取,可见性选 Private
    • 点 Begin import,等导入完成
      [/list=1]
      为什么不能 Fork:GitHub 不允许修改 Fork 仓库的可见性(提示原文:For security reasons, you cannot change the visibility of a fork)。想要「私有仓库 + 令牌持久化」,请用 Import(或手动新建私有仓库、上传 4 个文件、照抄 workbuddy.yml),得到的是独立仓库,令牌才能安全持久化、续期不中断。
      第 2 步:添加 Secrets
      仓库 → Settings → Secrets and variables → Actions → New repository secret:
      Secret 名称必填值
      WORKBUDDY_REFRESH_TOKEN✅每行一个 手机号:AT:RT(多账号换行分隔)
      PUSHPLUS_TOKEN⬜PushPlus 推送(微信)
      BARK_URL⬜Bark 推送(iOS),如 <https://api.day.app/xxxxxxxx>
      WECOM_WEBHOOK⬜企业微信群机器人 webhook(或仅填 key)
      DINGTALK_WEBHOOK⬜钉钉群机器人 webhook
      DINGTALK_SECRET⬜钉钉加签密钥(机器人选「加签」时必填)
      QL_CLIENT_ID + QL_CLIENT_SECRET⬜青龙 2.18+ 用面板默认通知时必填(应用授权,勾选 system 权限)
      QL_URL / QL_DIR / QL_TOKEN⬜面板地址(默认 \\<http://127.0.0.1:5700\\)/> 数据目录(默认 /ql)/ 旧版面板 token
      WORKBUDDY_TASKS⬜白名单子任务(如 checkin,travel)
      WORKBUDDY_SKIP_TASKS⬜黑名单子任务(如 lottery,redeem)
      WORKBUDDY_MP_GAP⬜mp 对话事件间隔秒数(默认 45,调小可提速但可能被上游反作弊回滚)

      第 3 步:开启 Actions 并手动验证
      • 进入仓库 Actions 标签页;
      • 若提示需要启用,点 I understand my workflows, go ahead and enable them;
      • 左侧选 🌱 WorkBuddy Daily → Run workflow → 选 main 分支 → 运行;
      • 看到 ✅ 即部署成功。
        [/list=1]
        内置定时(注意 UTC)
        北京时间UTC cron说明
        07:000 23 \*日常全流程
        12:000 4 \*日常全流程
        23:3030 15 \*夜猫子活动窗口

        改时间就编辑 workbuddy.yml 里的 cron(注意是 UTC,北京时间 − 8 小时)。工作流已设置 TZ: Asia/Shanghai——否则 runner 默认 UTC,会导致日志时间显示错误和补签日期算错一天;脚本内部也用 beijing_now() / beijing_today() 强制北京时间,双保险。
        令牌安全判断(工作流内置)
        • 仅在「私有仓库」中把 wb_refresh_tokens.json 提交回仓库;公开仓库会自动跳过,避免 RT 泄露。
        • 若用公开仓库(含公开 Fork),令牌不会持久化,每次运行都依赖 WORKBUDDY_REFRESH_TOKEN 这个 Secret 提供最新 RT——RT 一般 30 天滚动,需自行保证其不过期(建议每月更新一次)。



        七、运行效果与常用命令
        06-运行输出.png
        1. python workbuddy_daily.py                # 全流程:续期 → 查询 → 任务 → 领奖
        2. python workbuddy_daily.py --refresh      # 仅刷新所有账号 Token
        3. python workbuddy_daily.py --query        # 仅查询积分/用量/成长
        4. python workbuddy_daily.py --no-desktop   # 跳过桌面任务(非 Windows 默认走指纹上报)
        5. python workbuddy_daily.py --only 3       # 只跑第 3 个账号
        6. python workbuddy_daily.py --gap 2.0      # 写动作间隔秒数(默认 1.5,最低 1.0)
        7. python workbuddy_daily.py --tasks checkin,travel      # 只跑白名单子任务
        8. python workbuddy_daily.py --skip-tasks lottery,redeem  # 跳过指定子任务
        9. python workbuddy_daily.py --mp-gap 15    # mp 对话事件间隔(默认 45s)
        复制代码

        两种「连签」分开看,别误会:日志/推送统一写成「签到连签 N 天 | 活跃连签 N 天」——前者是积分签到活动(checkin-activity-status.streak_days),后者是成长中心热力墙(growth/streak,由使用事件驱动;成长任务全部领完后常为 0,属正常不属故障)。
        推送报告长这样(README 原文样式):
        1. 📊 各账号运行报告
        2. 👤 账号1
        3.    💰 主套餐剩余980积分(共1000,已用20)
        4.    📊 共12类资源,本月已使用3456次
        5.    🌱 等级3 | 签到连签7天 | 活跃连签7天 | 能量120
        6.    ⏳ 未完成: 桌面端对话、尝鲜热门技能
        7. 👤 账号2
        8.    🌱 等级5 | 签到连签30天 | 活跃连签0天
        9.       ℹ️ 活跃连签=0 属正常:它由成长中心「使用事件(热力墙)」驱动
        10.    ✅ 全部完成!
        11. 📊 ══ 总计 ══
        12. 👥 共2个账号,任务完成 33/34 项
        复制代码



        八、子任务开关:把积分分摊到以后领
        任务完成后领到的积分有一个月有效期,一次全领完容易放过期。用白名单/黑名单裁剪要执行的子任务:
        1. # 只保留每日型任务(签到 + 旅行),其余成长任务留到以后想做时再放开
        2. WORKBUDDY_TASKS=checkin,travel
        3. [size=6][b]反过来:全都做,只跳过大转盘与连登兑换[/b][/size]
        4. WORKBUDDY_SKIP_TASKS=lottery,redeem
        复制代码

        代号:成长任务直接用 task_code(如 chat_5、expert_5、black_cat、Sequential_Tasks_5);玩法/流程用别名 checkin travel lottery redeem gift makeup badges blindbox buddy_info desktop。被跳过的任务不会执行、也不会被领奖(在列表里保持未完成)。
        ⚠️ 别把「使用类」任务全关掉:成长中心页面上那块「今日活跃 / 热力墙」是由使用行为(对话、文档、桌面等任务产生的事件)点亮的,签到只给积分、不点热力墙。若白名单里没有这类任务,页面会显示「开始使用以点亮今日热力墙」——那是活跃度、不是签到失败。想两者兼得,保留一个使用类任务即可,例如 WORKBUDDY_TASKS=checkin,travel,chat_5。



        九、排错速查表
        07-排错速查.png
        现象原因与处理
        日志报 token format error 或 12153服务端认为 RT 不是合法格式。脚本会先做本地凭据体检(不联网)并打印结论,按下表处理;最稳的做法:python workbuddy_login.py 重新登录拿最新一行
        青龙报「请设置环境变量 WORKBUDDY_REFRESH_TOKEN」命令填了裸 python workbuddy_daily.py。改成 task workbuddy_daily.py(从脚本列表里选),面板变量才会注入(issue #16)
        夜猫子任务一直不完成只在 23:00–08:00 计入进度且要求真实对话。加一条 30 23 * 的定时;规则是每日 1 次 × 累计 3 天,有响应即停
        页面显示「开始使用以点亮今日热力墙」那是活跃度不是签到失败。若白名单把使用类任务全关了就会这样。保留一个即可,如 WORKBUDDY_TASKS=checkin,travel,chat_5。签到状态看日志「签到连签 N 天」
        Actions 里 RT 每次都要手动更新用了公开仓库/Fork,工作流不会提交回 wb_refresh_tokens.json。改用 Import 建私有仓库,令牌才能持久化、续期不中断
        公众号关注任务完不成wb_wechat_oa_subscribe_task 需真人扫码关注满 24 小时,脚本只检测并提示,不自动完成
        Actions 日志时间差 8 小时 / 补签日期错一天工作流已内置 TZ: Asia/Shanghai,脚本内部也用 beijing_now() 兜底;若自行改过 workbuddy.yml,检查 cron 是否按 UTC 换算
        国际版刷不出奖励国际版登录态与国内版不通用:workbuddy.ai 的令牌在 copilot.tencent.com 刷不了,反之亦然

        凭据体检输出对照(&#x74;oken format error\** 专用)\\:
        体检输出含义与处理
        RT 的 typ=Bearer(应为 Offline)AT / RT 写反了——顺序必须是 手机号:AT:RT
        RT 不是 eyJ 开头的三段式 JWT被截断,或带了引号 / 空格 / 换行 / 中文冒号
        签发域是 …,不是 CN 站粘成了国际版或其他应用的 token(CN 站合法签发域是 \\www.codebuddy.cn/auth/realms/copilot\\)
        值是 {"$wbEncrypted":1,…} 或含 "envelope"新版客户端(5.6.2+ AtRestEncryption)加密信封,密钥不落盘——改用 python workbuddy_login.py 短信登录取明文

        体检看不出的两种情况:① 该 RT 已被其他工具(面板/网关/另一台机器)轮换过;② 粘的是 CodeBuddyExtension\Data\Public\auth 里别的应用的 token。


        十、国际版每日活跃(workbuddy.ai)
        国际版的每日奖励不是普通签到,而是一条活跃任务链,单独一个脚本:
        1. python workbuddy_intl_daily.py                      # 探测 + 领取 + 保活
        2. python workbuddy_intl_daily.py --no-keepalive       # 只探测与领取
        3. python workbuddy_intl_daily.py --only 1             # 只跑第一个账号
        复制代码

        流程:探测活动是否开放、今天是否已领(/billing/meter/checkin-activity-status)→ 开放且未领时领取每日奖励(/v2/billing/meter/daily-checkin)→ 发一次最小流式对话完成活跃保活(免费模型,不消耗积分)。
        环境变量:WORKBUDDY_INTL_TOKENS(多账号,换行或 & 分隔;每条支持 token / 备注|token / 备注|token|uid / 备注|token|uid|refresh_token)、WORKBUDDY_TOKEN(单账号兜底)、WORKBUDDY_INTL_MODELS(可选,保活模型链)。
        纯 OAuth 账号(Google / GitHub / X)用 python workbuddy_intl_login.py 走设备授权登录,免手机号。带上 refresh_token 时脚本会自动续期并写回 wb_intl_tokens.json;活动未开放属于正常状态,不会当成失败。


        十一、安全与合规须知
        • RT 就是账号:泄露 RT 等于把账号交出去。wb_refresh_tokens.json、WORKBUDDY_ACCESS_TOKEN.txt、wb_login_result.json 均已被 .gitignore 屏蔽,切勿手动提交到任何仓库。
        • 私有仓库优先:Actions 部署请用 Import 建的私有仓库;公开仓库 RT 不持久化且每次运行都依赖 Secret。
        • 下载校验:Releases 每个资产都附 SHA256 校验值,下载后核对再上传到服务器。
        • 合规:本项目仅供学习与个人自动化使用,请遵守 WorkBuddy 服务条款,使用风险自负。
        • 真人节奏:mp 对话事件按 45s±10s 逐条上报(对齐上游反作弊实测),调小 --mp-gap 有被整体回滚的风险,不建议激进。



        十二、FAQ
        Q1:多账号怎么加?
        变量末尾追加一行 手机号:AT:RT,下次运行自动并入,无需其他配置。
        Q2:脚本更新了怎么办?
        每次更新单独发一个 Release(编号 v1 → v2 → v3 依次递增,历史版本保留可下载,不覆盖、不合并)。Release 标题括号里是脚本自身版本号(如 v3(脚本 v3.3))。想固定版本就下对应 Release 的资产覆盖旧脚本,想跟最新就用仓库 main。令牌库 wb_refresh_tokens.json 不会丢,覆盖脚本即可。
        Q3:只想本地跑,不部署青龙/Actions 行吗?
        行。Python 3.8+ 装好 requests,python workbuddy_daily.py 直接跑;桌面任务自动备份并切换桌面端认证文件,跑完还原,全程无需人工。
        Q4:签到连签和活跃连签有什么区别?
        签到连签 = 积分签到活动;活跃连签 = 成长中心热力墙(由使用事件驱动)。成长任务全部领完后活跃连签常显示 0,属正常。
        Q5:任务领到的积分会过期吗?
        会,一个月有效期。这就是为什么脚本提供 WORKBUDDY_TASKS 白名单——把积分分摊到后面几个月领。
        Q6:公众号关注任务为什么脚本不做?
        wb_wechat_oa_subscribe_task 需真人扫码关注满 24 小时,脚本检测并提示,不自动完成。
        Q7:报 Issue 要注意什么?
        附上运行日志和复现步骤,定位会快很多。


        参考来源

        免责声明:本教程仅为技术学习交流,所有命令与规则整理自上述开源仓库 README(v3.7),实际接口与活动规则以 WorkBuddy 官方服务端下发为准。使用任何自动化脚本请遵守平台服务条款,风险自负。
05-Actions部署.png
02-原理流程.png
04-青龙部署.png
06-运行输出.png
07-排错速查.png
01-项目总览.png
03-短信登录.png
矿渣社区欢迎您的加入!
商务合作请联系我

11

主题

95

回帖

861

积分

中级渣柚V2

积分
861
js201500 发表于 昨天 13:10 | 显示全部楼层 IP:–山西 移动/全省通用
玛雅,你字多你赢

105

主题

321

回帖

1010万

积分

管理员

积分
10103683
 楼主| 包松旺 发表于 昨天 13:57 | 显示全部楼层 IP:–浙江 移动
js201500 发表于 2026-10-14 13:10
玛雅,你字多你赢

直接让AI给你弄
矿渣社区欢迎您的加入!
商务合作请联系我
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2026-10-15 07:43 , Processed in 0.064862 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表