下载地址
https://api.skillhub.cn/api/v1/download?slug=%40user_3a370331%2Ftotorosir-traework-checkin将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3a370331/totorosir-traework-checkin。自动完成 TraeWork / TraeCode 的每日签到并领取每日积分,无需手动点击,可挂定时任务无人值守运行。适用于「TraeWork 签到 / TraeCode 签到 / Trae 自动签到 / 每日打卡 / 领积分 / 签到脚本 / 定时签到 / 签到失败排查」等需求。官网签到入口已被前端关闭,本技能绕过 UI 直连后端 checkin_credits 接口,复用持久化浏览器登录态与本机 Trae 客户端设备头完成签到,幂等安全。
阅读全文 (展开查看完整说明)
概述
执行步骤
当用户提出「TraeWork 签到 / TraeCode 签到 / Trae 自动签到 / 每日打卡 / 领积分 / 设置定时签到 / 排查签到失败」等需求时,按以下步骤执行:
- 先确认运行环境:
python -c "import playwright"。缺失则按下方「准备环境」安装(国内需换 pip 与 chromium 镜像)。
例外:若走零浏览器模式(
--session,见「无头服务器 / 面板」),无需安装 Playwright。
- 运行
python scripts/trae_checkin.py(路径相对于本技能包,务必使用绝对路径)。
首次运行会弹出浏览器并要求登录一次,此后登录态持久化,不再需要人工参与。
- 读取退出码:
0= 成功(本次领取成功,或今天早已签到而跳过);1= 失败。 - 若退出码为
1,读取脚本同目录的checkin.log定位原因,再对照下方「排障」与@references/api-notes.md处理。 - 如实回报结果,绝不把「claim 返回非零」当成签到成功——判定规则见下方「结果判定」。
- 需要无人值守时,按「定时执行」将其挂为系统计划任务。
常用参数:--login 强制重新引导登录;--show-device 仅打印设备指纹不签到;--device-id ID 手动指定设备 ID 跑一次。
版本 v1.2.0 | 技能包:
totorosir-traework-checkin-v1.2.0.zip| 作者:龙猫科技说
安全约束(务必遵守)
本技能每次运行都必须严格遵守以下红线,调用时不得擅自放宽或绕过:
- 仅限本机当前用户:只能用于本机已登录的 Trae 账号,不得用于任何他人账号或远程账号。
- 只读本机登录态:只读取本机持久化的浏览器登录态(
trae_browser_profile/)完成每日签到;不修改该目录下的任何登录文件。为跨设备部署而使用--export-session导出的会话文件,仅限用于用户本人名下的设备之间搬迁,不得上传网盘、不得分享或发送给任何他人;用完即删。 - 今日已签到则跳过:先查
status,若checked_in为true直接跳过领取,不重复执行claim。 - 不打印凭据:日志与控制台一律不得输出 Token / JWT / Cookie 等任何凭据明文(仅
device_id等非敏感设备指纹可出现在日志)。 - 不外发凭证:所有请求只发给 Trae 官方接口(
api.trae.cn/work.trae.cn),绝不以任何形式将登录态、Token 或设备信息发送给任何第三方。 - 失效即停:若 Trae 官方下线签到活动、或调整 / 关闭
checkin_credits接口导致功能不可用,立即停止使用本技能,不得尝试绕过或 hack。
背景:为什么不能直接点按钮
work.trae.cn 的签到入口被前端 kill switch 硬关闭——feature gate 恒返回false,页面上根本不渲染签到按钮,页面自己的 fetchStatus/claim 也会直接短路不发请求。所以 DOM 和网络面板里都搜不到签到调用。
本 skill 绕过 UI,直连后端 checkin_credits 接口完成签到。
快速开始
1. 准备环境
只需要一次。Playwright 的 pip 源和 chromium 下载源在国内都需要换镜像:
pip install playwright -i https://pypi.tuna.tsinghua.edu.cn/simple
# Windows PowerShell
$env:PLAYWRIGHT_DOWNLOAD_HOST = "https://cdn.npmmirror.com/binaries/playwright"
# macOS / Linux
export PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.npmmirror.com/binaries/playwright
playwright install chromium清理 Playwright 残留的 chromium 进程时,按进程路径包含 ms-playwright 过滤,避免误杀用户自己的 Chrome。
2. 首次运行(必须有人参与)
python scripts/trae_checkin.py脚本会自动弹出浏览器并置顶提示,等待用户在 work.trae.cn 完成登录。登录态保存在脚本同目录的 trae_browser_profile/,之后不再需要登录。
3. 后续运行(全自动、无窗口)
同一条命令即可。登录态有效时完全静默执行,不再弹窗。
工作流
脚本内部流程固定为:
- 读取/探测设备指纹,缓存到同目录
device.json - 静默启动持久化浏览器,在页面上下文取 JWT
(GetUserToken——会话 cookie 是 httpOnly,读不到,只能靠页面发请求)
- 登录态失效才弹出浏览器引导登录
- 用 Python 的
urllib直连接口(不是 浏览器fetch):
status → 未签到则 claim → 再次 status 校验
第 4 步必须用 Python 直连:浏览器 fetch 发不出 x-device-id 这类自定义头(会触发被服务端拒绝的 CORS 预检),导致 claim 恒返回 9004。
零浏览器模式(
--session)跳过第 2–3 步的浏览器环节:由 Python 用会话 cookie经纯 HTTP 换取 JWT,然后直接进入第 4 步。
结果判定
| 退出码 | 含义 |
|---|---|
0 | 已签到(本次领取成功,或今天早已签到而跳过) |
1 | 失败,细节见脚本同目录 checkin.log |
脚本是幂等的:先查 status,已签到就跳过领取,一天内重复运行不会出问题。
常用参数
python scripts/trae_checkin.py --login # 强制重新引导登录(登录态过期时)
python scripts/trae_checkin.py --show-device # 只打印设备指纹,不签到
python scripts/trae_checkin.py --device-id ID # 手动指定设备 ID 跑一次
python scripts/trae_checkin.py --export-session sess.json # 导出登录会话(cookies+device_id)供无头服务器部署
python scripts/trae_checkin.py --session sess.json # 【零浏览器】直接用会话文件签到,不需要 Playwright/Chromium
python scripts/trae_checkin.py --import-session sess.json # 在无头服务器导入会话到浏览器 profile 后签到(需 Chromium)
python scripts/trae_checkin.py --notify wecom,bark # 签到后把结果推送到指定通知渠道
python scripts/trae_checkin.py --notify-config PATH # 指定通知配置文件(可选)消息通知(统一消息分发)
脚本内嵌统一消息通知能力(scripts/push.py,12 渠道分发器 + scripts/check_config.py 渠道就绪检查,纯 Python 标准库)。签到结束后自动把结果(成功 / 今日已签到 / 失败、积分、时间)推送到指定渠道:
- 指定渠道:
--notify wecom,bark(逗号分隔),或环境变量TRAE_CHECKIN_NOTIFY(定时任务免改命令)。 - 通知配置:默认
~/.workbuddy/totorosir-push-message/config.json;可用--notify-config或环境变量TRAE_CHECKIN_NOTIFY_CONFIG覆盖。模板生成:python scripts/push.py sample-config --write;就绪检查:python scripts/check_config.py。 - 渠道:dingtalk / feishu / wecom / wechat(pushplus) / email / bark / slack / telegram / webhook 等凭据只存本地配置文件;
system为零配置渠道(本地通知中心文件 + 桌面弹窗,不过网);sms为付费渠道,定时流程永不自动发送。 - 行为保证:通知尽力而为,任何推送失败只记日志,绝不影响签到退出码;通知内容仅含结果摘要(结果 / 积分 / 时间),不含 Token / Cookie 等任何凭据。
- 分发器也可独立使用:
python scripts/push.py send --channels wecom --title "标题" --content "正文"。
无头服务器 / 面板(如呆呆面板)
首次登录需要「有头浏览器 + 真人输入」,无显示器的 Linux 服务器(Docker 面板、无头 VPS)默认跑不通引导登录。改用「本机登录、服务器复用」,有两种模式:
模式一 · 零浏览器(首选,服务器无需 Chromium)
GetUserToken 实测可直接用 cookie 走纯 HTTP 换取 JWT,不依赖浏览器页面上下文。因此服务器侧只需 Python 标准库:
- 在有显示器的机器上登录一次:
python scripts/trae_checkin.py --login。 - 导出会话:
python scripts/trae_checkin.py --export-session sess.json
(仅导出 trae.cn 相关 cookie 与 device_id,不含任何明文 Token)。
- 把
sess.json传到服务器(放在持久卷上),每天直接运行:
python scripts/trae_checkin.py --session /持久卷路径/sess.json全程纯 HTTP、无窗口、无 Chromium。
模式二 · 无头 Chromium(备选,需要装浏览器)
把会话导入浏览器 profile 后复用:
- 同上导出
sess.json并传到服务器。 export TRAE_PROFILE_DIR=/持久卷路径/trae_browser_profilepython scripts/trae_checkin.py --import-session sess.json- 之后每日
python scripts/trae_checkin.py纯无头运行。
模式二需要在容器内 playwright install chromium 并补齐系统库(libnss3 等),模式一不需要,因此面板环境优先用模式一。
两种模式的会话 cookie 都有有效期(数周量级)。失效时报错明确,届时在仍登录的机器上
重新
--export-session覆盖即可。
详见 @references/api-notes.md 与 README「在 Linux 无头服务器 / 面板部署」。
设备指纹
接口要求带客户端设备头,其中 x-device-id 决定成败。脚本会自动从本机 Trae客户端日志里提取并缓存,无需手工配置:
[ICubeDeviceRegisterService] (init) resolve device_id: <数字>日志位置:Windows %APPDATA%Trae CNlogs<session>sharedprocess.log(macOS / Linux 见 references/api-notes.md)。
探测不到时,先启动一次 Trae 桌面客户端再重试,或用 --device-id 手动指定。
排障
遇到失败、想了解接口细节、错误码含义或环境踩坑,读@references/api-notes.md。
最关键的坑:claim 返回 9004 并不代表"今天已签到",它表示请求没通过校验(通常是设备头缺失)。只有 status 里 checked_in: false 且 claim 返回非零,才是真的签到失败,必须如实报失败,不能当成成功。
定时执行
脚本可安全重复运行,适合挂定时任务。配置时注意:
- 用脚本的绝对路径,并允许其在所在目录写入(浏览器 profile 和日志都在这)
- 按退出码判断是否成功:
0成功,1失败 - Windows 计划任务建议用
python.exe而非pythonw.exe,便于排查
关于作者
本技能由 龙猫科技说(longmaoit)开发维护;相关更新、用法答疑与实战笔记发布于公众号 龙猫科技说。