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 / Linux | Windows / 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,不会重复发积分(实测) |
💡 这类审查值得养成习惯:看外联域名 + 看危险调用 + 看凭据处理,三眼就能筛掉绝大多数不安全的脚本。
二、唯一的一处本地改动
我的本机没有安装系统 Python(python / 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:05 | pythonw.exe signin.py silent | PT10M | 2026-09-21 00:05 |
WorkBuddyGrowthPoll | 每天 01/05/09/13/17/21 点(6 个独立触发器) | pythonw.exe signin.py silent-poll | PT5M | 2026-09-20 21:00 |
两者都是当前用户交互式登录运行(非 SYSTEM)、零 Token、无窗口,并勾选了"错过后下次开机补跑"。
日志文件:C:\Users\56167\workbuddy-auto-signin\signin.log(UTF-8,每行一条 JSON)。
四、安装当天的验证结果
| 验证 | 命令 | 结果 |
|---|---|---|
| 只读查签到态 | python signin.py status | HTTP 200,today_checked_in=false,连登 4 天 |
| 真实签到 | python signin.py auto | CLAIMED —— 成功领取 100 积分,连续 5 天,累计 500 |
| 任务 1 实际执行 | 手动 Start-ScheduledTask | LastTaskResult=0,日志写入 {"result":"ALREADY",...} |
| 任务 2 实际执行 | 手动 Start-ScheduledTask | LastTaskResult=0,空跑不写日志(设计如此) |
同时完成了成长中心动作:派 Buddy 去咖啡馆、领取任务「桌面端对话 1 次」等 12 项任务。
先 status 再 auto 的顺序值得照抄——只读命令确认凭据和网络通了,再执行写操作,避免一上手就盲跑。
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 总结
这个工具最打动我的不是功能,而是工程细节的克制:
- 零依赖单文件 —— 没有
requirements.txt、没有虚拟环境,python signin.py auto就能跑 - 幂等优先 —— 先查后领,重复运行不会出问题,这让"多跑几次"变成安全操作
- 写操作不重试 —— 防止重复提交的状态污染
- 凭据零外传 —— 只读本机文件,所有请求打官方端点
- 双模式定时 —— AI 自动化图省心,系统级静默图可靠,按需选
需要注意的就是那条解释器路径依赖:用的是 WorkBuddy 托管运行时,WorkBuddy 自己升级时可能把它清掉。稳妥做法是装个官方 Python 3 并把任务动作指向它。
本项目为第三方非官方工具,签到接口基于逆向实现,可能随时失效。请在使用前阅读仓库免责声明,并遵守相关服务条款。
参考资料
- 88lin/workbuddy-auto-signin — 项目仓库与官方 README
- 本文部署实录部分基于本机安装记录整理(2026-09-20)