WorkBuddy自动签到领积分
自动领取 WorkBuddy 每日积分:在本机解密登录态 → 调用腾讯官方接口 → 写一行结果日志。无后端服务、无外部下载、脚本内不含任何密钥。
何时使用
- 用户说「帮我签到」「领一下今天的积分」「今天签到没」「以后每天自动领积分」;
- 需要查询连续签到天数 / 累计积分 / 今日是否已签;
- 需要把签到接到每日定时任务里。
用法
一条命令即可。auto = 先查状态,未签则领取,顺带跑成长中心:
# Windows(Git Bash) / macOS / Linux —— 推荐
bash <skill>/scripts/checkin.sh auto
# Windows 若 Bash 不可用:在 PowerShell 工具里直接调用(不要从 Bash 里调 powershell -File,会被宿主安全策略拒绝)
& "<skill>\scripts\checkin.ps1" -Mode auto
其他模式:status(只查状态)、growth(只跑成长中心)、claim(强制走领取分支,仅调试用)。
> 该命令需读取本机登录态并访问网络,在 Agent 沙箱环境下要求以禁用沙箱方式执行。
脚本向 stdout 输出单行 JSON,直接取 report 字段向用户汇报即可:
{"ok":true,"status":"claimed","credit":100,"streakDays":11,"totalCredits":1100,
"report":"签到成功,+100 积分,连续 11 天,累计 1100 积分,伙伴「拿铁喵」"}
退出码:0=已签到/签到成功;2=终止性失败(不要重试);3=可重试失败(网络/瞬时,可等待约 30 秒重试,最多 3 次)。
结果判读(关键:先看业务码,不要只看 HTTP 状态)
- 「今天已签到」接口返回的是 HTTP 400 +
code=10001,脚本已正确识别为成功。不要把 400 当失败,也不要把10001当错误码汇报。 - 业务码:
1001/10001=已签到;1002=无资格;1003=活动结束。 - 退出码
2的典型原因:未登录(NO_AUTH)、登录态失效(HTTP 401/403)、未找到 WorkBuddy 可执行文件、凭据解密失败 —— 均属终止性,重试无用。此时提示用户「打开 WorkBuddy 桌面端刷新登录态,次日自动恢复」并结束。
设为每日自动签到
用 automation_update 建 recurring 任务,cwds 设为本 skill 所在目录,提示词写成:
运行 bash "<skill>/scripts/checkin.sh" auto,读取输出 JSON 的 report 字段汇报。脚本幂等:已签到会直接跳过。
推荐 rrule: FREQ=DAILY;BYHOUR=8;BYMINUTE=0;如需兜底可加一轮补签(BYHOUR=8,11)。
> 注意:update 已有任务时必须显式传 rrule,否则可能被重置。
依赖
| 依赖 | 说明 |
|---|---|
| WorkBuddy 桌面端(5.3.x 或更高,且已登录) | 唯一必需依赖:既提供登录态,又提供内建 Electron 运行时 |
| Node.js / Electron / curl / Python | 都不需要(脚本借用桌面端自带运行时,HTTP 用内置 fetch) |
> 脚本必须由 WorkBuddy 自带的 Electron 二进制以 ELECTRON_RUN_AS_NODE=1 运行 —— 只有它带 electron_browser_workbuddy_storage 这个内建 native binding(取密钥用)。系统里单独安装的 node.exe 取不到密钥。
可执行文件自动探测顺序(WORKBUDDY_ELECTRON_BIN 可覆盖):%LOCALAPPDATA%\Programs\WorkBuddy\WorkBuddy.exe → %ProgramFiles%\Programs\WorkBuddy\... → macOS /Applications/WorkBuddy.app/Contents/MacOS/WorkBuddy → Linux /usr/lib/workbuddy/workbuddy 等。
环境变量
| 变量 | 作用 |
|---|---|
WORKBUDDY_ELECTRON_BIN |
指定 WorkBuddy 可执行文件(自动探测失败时) |
WORKBUDDY_AUTH_FILE |
指定凭据文件路径 |
WORKBUDDY_KEYBLOB |
指定 keyblob 路径(默认 <configDir>/keyblob) |
WORKBUDDY_BASE_URL |
接口域名(默认 https://copilot.tencent.com) |
WORKBUDDY_TIMEOUT_MS |
单请求超时毫秒(默认 20000) |
WORKBUDDY_LOG_FILE |
日志路径(默认 <skill>/logs/checkin.log) |
WORKBUDDY_FORCE_CLAIM=1 |
调试:已签状态下强制走一次领取(服务端幂等,无副作用) |
排错
| 现象 | 处理 |
|---|---|
未找到登录凭据(NO_AUTH) |
让用户先登录一次桌面端;或用 WORKBUDDY_AUTH_FILE 指定 |
登录态已失效(HTTP 401/403) |
打开桌面端刷新登录态,次日自动恢复。不要重试 |
未找到 WorkBuddy 桌面端可执行文件 |
用 WORKBUDDY_ELECTRON_BIN 指定路径(macOS 自定义安装同理) |
凭据解密失败(DECRYPT_ERR) |
桌面端可能更换了密钥方案。按 references/at-rest-crypto.md 的复现步骤重新校准 |
从 Bash 调 powershell -File ... 被拒 |
宿主安全策略,非脚本问题。改用 Bash 跑 checkin.sh,或在 PowerShell 工具里 & "...checkin.ps1" |
| PowerShell 里看不到输出 | WorkBuddy.exe 是 GUI 子系统程序,stdout 不被直接捕获;checkin.ps1 已内置 .NET 重定向读取。仍看不到就看 logs/checkin.log,或改用 Bash |
| 日志中文乱码(GBK) | 部分终端的显示问题,不影响判读;按关键词 签到成功 / 今日已签到 匹配 |
安全(向用户说明时的口径)
- 解密出的
accessToken等同账号密码:仅在内存中使用,不打印、不落盘、不回显、不进日志。 - 静态密钥与 keyblob 只在内存出现,用后立即
Buffer.fill(0)清零;脚本内不含任何内置密钥。 logs/checkin.log只记录结果(积分 / 连续天数 / 成败)。提醒用户不要把日志或脚本输出贴到公开场合。- 网络仅访问
copilot.tencent.com,不访问任何其他域名、不上传第三方。 - 提醒用户:请勿用于他人账号、批量刷分或违反 WorkBuddy 用户协议的行为。
文件结构
workbuddy-auto-signin/
├── SKILL.md # 本文件(Agent 用)
├── README.md # 小白向:三分钟上手说明
├── CHANGELOG.md
├── LICENSE
├── references/
│ └── at-rest-crypto.md # 5.3.x+ 加密链路 + 逆向复现步骤(客户端升级后重新校准用)
├── logs/checkin.log # 运行后自动生成,仅结果、无令牌
└── scripts/
├── wbcred.js # 解密 helper(可独立运行 / 可 require)
├── signin.js # 签到主脚本(auto|status|claim|growth)
├── checkin.sh # 入口:macOS / Linux / Git Bash
└── checkin.ps1 # 入口:Windows PowerShell