WorkBuddy 自动签到脚本部署实录:从安全审查到计划任务全记录

522 Star 的开源脚本 workbuddy-auto-signin:零依赖纯 Python 单文件,自动完成签到与成长中心全套动作,附本机 Windows 部署实录与踩坑记录。

WorkBuddy 的每日签到本身不复杂,但成长中心那一堆动作就烦人了:领旅行礼物、派 Buddy、领任务、领任务奖励、断登补登、连登兑换、开盲盒、能量开 Buddy 盲盒——每天花几分钟点一遍,断一天连登就归零。

88lin/workbuddy-auto-signin 这个开源脚本把这一整套流程自动化了。522 Star、MIT 协议、零依赖纯 Python 单文件,Windows / macOS / Linux 全支持。

本文分两部分:前面讲这个工具本身,后半部分是我的本机部署实录(含安全审查、唯一的一处本地改动、以及需要留意的风险),可直接对照操作。

⚠️ 这是非官方工具,与腾讯及 WorkBuddy 无任何隶属关系。签到接口系从桌面端 app.asar 逆向所得,可能随时变动,使用风险自负。

01 项目速览

项目内容
仓库88lin/workbuddy-auto-signin
热度⭐ 522 Stars · 🍴 49 Forks
协议MIT
依赖(纯 Python 标准库,无需 pip install
形态单文件 signin.py,完全自包含
平台Windows / macOS / Linux
密钥仓库不含任何密钥,只读取本机登录凭据

02 能力清单:不止签到

核心签到:自动领取每日签到积分。

成长中心全套(一次跑完):

  • 🎁 领取旅行礼物
  • 🐱 派出 Buddy
  • ✅ 领取新任务(进度从领取开始计算)
  • 🏆 领取任务奖励
  • 🔄 断登自动补登(每轮最多补一天)
  • 🎯 连登奖励兑换
  • 🎰 开盲盒抽奖
  • ⚡ 能量开 Buddy 盲盒

轮询机制:Buddy 旅行回来后自动领礼物并补派,把每日名额用满。

工程上的几个亮点

特性说明
幂等安全先查状态,未签才领;重复运行不会多领,已签直接返回 ALREADY
智能汇报输出 JSON,含 report 字段(人话版结果)
健壮容错兼容"已签"两种返回形态,识别 401/403、非签到季
退避重试内置 5/15/30/60/90 秒退避,受时间预算约束
凭据安全永不打印 accessToken,Authorization 头不进日志

03 工作原理

鉴权:读本机凭据,不走任何第三方

WorkBuddy 桌面端登录后会写出一个明文 JSON 会话文件 workbuddy-desktop.info(含 accessToken)。脚本直接读这个本地文件完成身份验证,所有请求都打到官方客户端同一个 endpoint https://copilot.tencent.com——不存在任何第三方服务器中转。

执行流程

重试策略:写操作绝不重试

一个容易被忽略的设计细节:GET 类请求失败自动重试 1 次,写操作(领奖、抽奖)不重试——避免重复提交导致状态错乱。这个取舍很关键,抽奖这种动作重试一次可能就是另一笔记录。

04 两种定时方案

工具提供了两套定时思路,定位完全不同:

对比项模式 A:AI 自动化模式 B:系统级静默 ⭐
平台Win / macOS / LinuxWindows / macOS
原理WorkBuddy 自动化触发 → AI 跑脚本 → 汇报系统定时器直接跑脚本
Token 消耗每次消耗一次模型调用
聊天记录每次一条
可靠性依赖模型可用性纯系统级,更可靠
日志在聊天记录里独立日志文件
关机错过错过就错过可设"下次启动时补跑"

模式 A 适合懒人:在 WorkBuddy 里建一条自动化任务,提示词模板大致是"运行 <python> <signin.py> auto,把输出 JSON 里 report 字段的内容一句话汇报给我"。缺点是每天占用一次模型调用。

模式 B 是推荐做法:注册系统计划任务/launchd,零 Token、零弹窗、独立日志。下面我的部署走的就是这条路线。

05 本机部署实录(Windows)

安装日期:2026-09-20,安装位置 C:\Users\56167\workbuddy-auto-signin

一、安装前的安全审查

跑来源不明的脚本前,先看它到底会做什么。这是我的审查结论:

检查项结果
外联域名https://copilot.tencent.com(端点取自本机凭据文件里的 auth.endpoint),无第三方回传
危险调用subprocess / os.system / eval / exec / base64 / socket / pickle,只用标准库 urllib
凭据处理只读 %LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\workbuddy-desktop.info不打印 token
安装脚本install-windows.ps1 只注册两个计划任务,不下载、不提权、不常驻
幂等性已签到重复运行只返回 ALREADY,不会重复发积分(实测)

💡 这类审查值得养成习惯:看外联域名 + 看危险调用 + 看凭据处理,三眼就能筛掉绝大多数不安全的脚本。

二、唯一的一处本地改动

我的本机没有安装系统 Pythonpython / pythonw / py 都不在 PATH),官方脚本的自动探测找不到解释器。解决办法是把 install-windows.ps1 顶部两行手动预填为 WorkBuddy 自带的托管运行时:

$ManualPythonw = "C:\Users\56167\.workbuddy\binaries\python\versions\3.13.12\pythonw.exe"
$ManualSignin  = "C:\Users\56167\workbuddy-auto-signin\signin.py"

其余脚本内容与官方完全一致,未做任何其它修改。

⚠️ 用 pythonw.exe 而不是 python.exe 很关键——w 版本不带控制台窗口,静默运行时不会弹黑框。

三、注册的计划任务

安装脚本创建了两个任务:

任务名触发时间执行命令时限下次运行
WorkBuddyAutoSignin每天 00:05pythonw.exe signin.py silentPT10M2026-09-21 00:05
WorkBuddyGrowthPoll每天 01/05/09/13/17/21 点(6 个独立触发器)pythonw.exe signin.py silent-pollPT5M2026-09-20 21:00

两者都是当前用户交互式登录运行(非 SYSTEM)、零 Token、无窗口,并勾选了"错过后下次开机补跑"。

日志文件:C:\Users\56167\workbuddy-auto-signin\signin.log(UTF-8,每行一条 JSON)。

四、安装当天的验证结果

验证命令结果
只读查签到态python signin.py statusHTTP 200,today_checked_in=false,连登 4 天
真实签到python signin.py autoCLAIMED —— 成功领取 100 积分,连续 5 天,累计 500
任务 1 实际执行手动 Start-ScheduledTaskLastTaskResult=0,日志写入 {"result":"ALREADY",...}
任务 2 实际执行手动 Start-ScheduledTaskLastTaskResult=0,空跑不写日志(设计如此)

同时完成了成长中心动作:派 Buddy 去咖啡馆、领取任务「桌面端对话 1 次」等 12 项任务。

statusauto 的顺序值得照抄——只读命令确认凭据和网络通了,再执行写操作,避免一上手就盲跑。

06 已知风险与规避

风险 1:解释器路径失效(最需要留意)

计划任务指向的是 WorkBuddy 托管运行时目录。如果 WorkBuddy 升级或清理 binaries\python\versions\3.13.12\,两个任务会静默失败LastTaskResult 非 0、日志不再增长)。

修复:装一个官方 Python 3,然后改任务动作即可:

$p = "C:\Python312\pythonw.exe"
$s = "C:\Users\56167\workbuddy-auto-signin\signin.py"
Set-ScheduledTask -TaskName "WorkBuddyAutoSignin" -Action (New-ScheduledTaskAction -Execute $p -Argument "`"$s`" silent")
Set-ScheduledTask -TaskName "WorkBuddyGrowthPoll" -Action (New-ScheduledTaskAction -Execute $p -Argument "`"$s`" silent-poll")

风险 2:接口失效

签到接口是从桌面端 app.asar 逆向所得,腾讯改版即可能失效。失效表现在日志里会出现 NO_SESSION 或 4xx 状态码。

风险 3:登录态过期

重新登录一次 WorkBuddy 桌面端即可自动恢复,无需改任务

风险 4:非官方工具

与腾讯无隶属关系,存在服务条款合规风险,使用前请自行评估。

07 运维速查

常用命令

# 查看日志(务必指定 UTF8,否则 PowerShell 5.1 按 GBK 读会显示乱码 —— 文件本身没坏)
Get-Content "C:\Users\56167\workbuddy-auto-signin\signin.log" -Tail 5 -Encoding UTF8

# 手动跑一次(调试,有回显)
& "C:\Users\56167\.workbuddy\binaries\python\versions\3.13.12\python.exe" "C:\Users\56167\workbuddy-auto-signin\signin.py" auto

# 查任务状态
Get-ScheduledTaskInfo -TaskName "WorkBuddyAutoSignin" | Select-Object LastRunTime,LastTaskResult

# 卸载(两个一起删)
Unregister-ScheduledTask -TaskName "WorkBuddyAutoSignin" -Confirm:$false
Unregister-ScheduledTask -TaskName "WorkBuddyGrowthPoll" -Confirm:$false

💡 Get-Content 那个 -Encoding UTF8 不是可有可无的:日志文件是 UTF-8,PowerShell 5.1 默认按 GBK 读会显示乱码,很容易误判成"文件坏了"。加参数就好,文件本身没问题。

排错对照表

现象处理方式
NO_AUTH / 未找到凭据重新登录桌面端;或设 WORKBUDDY_AUTH_FILE 指定路径
NO_SESSION / 401·403登录态过期,重新登录
INACTIVE非签到季,属正常
TIMEOUT已达时间预算,已领到的部分照常记录,剩余下次再领
00:05 失败但连签没断正常,轮询任务会先查状态、未签就补上
连登「进阶」未解锁正常,三档分别要连满 7/14/28 天
查不到轮询记录正常,空跑默认不落盘;设 WORKBUDDY_GROWTH_LOG_EMPTY=1
轮询一直「今日名额已用完」正常,服务端每日只放行一次派出

08 更新脚本

本机 git clone 走不通(网络代理返回 CONNECT tunnel failed, response 502),改用 ZIP 直链覆盖,注意保留本地已填好的两行

# 1) 备份本地改动过的安装脚本
Copy-Item "C:\Users\56167\workbuddy-auto-signin\install-windows.ps1" "$env:TEMP\install-windows.ps1.bak" -Force
# 2) 下载并覆盖(curl 在本机可用)
curl.exe -L -o "$env:TEMP\wb.zip" https://codeload.github.com/88lin/workbuddy-auto-signin/zip/refs/heads/main
Expand-Archive "$env:TEMP\wb.zip" "$env:TEMP\wb" -Force
Copy-Item "$env:TEMP\wb\workbuddy-auto-signin-main\signin.py" "C:\Users\56167\workbuddy-auto-signin\signin.py" -Force
Copy-Item "$env:TEMP\wb\workbuddy-auto-signin-main\README.md" "C:\Users\56167\workbuddy-auto-signin\README.md" -Force
# 3) signin.py 是纯脚本、任务指向绝对路径,覆盖后无需重装任务

关键点signin.py 是纯脚本,计划任务指向绝对路径,所以更新时只覆盖脚本文件即可,不用重装任务——这也是把逻辑集中到单文件的好处。

09 总结

这个工具最打动我的不是功能,而是工程细节的克制

  1. 零依赖单文件 —— 没有 requirements.txt、没有虚拟环境,python signin.py auto 就能跑
  2. 幂等优先 —— 先查后领,重复运行不会出问题,这让"多跑几次"变成安全操作
  3. 写操作不重试 —— 防止重复提交的状态污染
  4. 凭据零外传 —— 只读本机文件,所有请求打官方端点
  5. 双模式定时 —— AI 自动化图省心,系统级静默图可靠,按需选

需要注意的就是那条解释器路径依赖:用的是 WorkBuddy 托管运行时,WorkBuddy 自己升级时可能把它清掉。稳妥做法是装个官方 Python 3 并把任务动作指向它。

本项目为第三方非官方工具,签到接口基于逆向实现,可能随时失效。请在使用前阅读仓库免责声明,并遵守相关服务条款。

参考资料