DSH 插件:WorkBuddy 每日签到自动化

前言

DSH(DeepSeek Harness)的插件化架构让任务自动化变得相对容易,但对于需要「登录态」的外部服务,开发者往往仍需保持一个桌面客户端常驻。WorkBuddy「Buddy 加油站」的每日签到就是这样一类场景:用户需要打开桌面端、点一次签到,才能拿到积分。对于习惯让 DSH 在后台静默运行的人来说,这额外的一次点击就是不必要的打扰。

dsh-workbuddy-checkin 插件通过直接读取 WorkBuddy 桌面端的登录态文件,绕过桌面客户端,直接调用公开 HTTPS 接口完成签到。安装后约 20 秒自动跑第一次,后续只做「今天已领过就不发请求」的判断,失败按 1 / 1 / 2 / 2 / 3 分钟退避重试,约 9 分钟内出结论。结果写入本机状态文件,默认不消耗 token,也不往会话发消息。

插件定位

  • 名称:dsh-workbuddy-checkin
  • 维护者:757400
  • 定位:DSH 插件,在 DSH 启动后自动完成 WorkBuddy「Buddy 加油站」每日签到,并领取当日积分,无需运行 WorkBuddy 桌面客户端。
  • 核心价值:在「无需客户端」的前提下,把签到过程完全自动化,同时控制 token 消耗和消息打扰。

为什么能不用客户端

WorkBuddy 桌面端登录后,会把登录态写在自己的数据目录:

%LOCALAPPDATA%\CodeBuddyExtension\Data\Public\auth\workbuddy-desktop.info

签到接口本身只认一个请求头:

Authorization: Bearer <accessToken>

只要这份文件存在、token 未过期,就能直接走公开 HTTPS 接口完成「查状态 → 领取 → 复核」,不需要 WorkBuddy 进程活着,也不需要任何私有 IPC 模块。

本插件做的全部事情就是:
- 只读这份文件
- 发两个 POST
- 把结果记下来

安装

从 DSH 插件市场安装:

  1. 在 DSH 插件市场搜索 dsh-workbuddy-checkin
  2. 点安装
  3. 重启 DSH

从 GitHub 手动安装:

# 1) 拿到源码
git clone https://github.com/757400/dsh-workbuddy-checkin.git

然后把它加进 DSH profile 的依赖:

// ~/.dsh/profiles/<profile>/package.json
{
  "dependencies": {
    "dsh-workbuddy-checkin": "file:/绝对路径/dsh-workbuddy-checkin"
  },
  "dsh": {
    "profile": {
      "bundles": [
        // ……其他插件……
        "dsh-workbuddy-checkin"
      ]
    }
  }
}

重启 DSH。日志里能看到:

[dsh-workbuddy-checkin] 已装载:启动 20 秒后自动签到
[dsh-workbuddy-checkin] 状态路由已注册:GET /dsh-workbuddy-checkin/status

行为

时机 动作
DSH 启动后 20 秒 跑第一次
今天已领过 / 已尝试过 不发任何请求
领取成功 记状态,当天不再跑
凭据缺失、文件损坏、没登录 当轮直接收工,不重试(重试也不会变好)
token 过期 记一条警告,等你在客户端重新登录
网络抖动、接口 5xx、业务码异常 按 1 / 1 / 2 / 2 / 3 分钟重试,共 5 轮,约 9 分钟
重试用尽 记下最终失败原因,等第二天

状态查询

插件注册了一个只读路由:

GET /dsh-workbuddy-checkin/status

返回:

{
  "plugin": "dsh-workbuddy-checkin",
  "lastRunAt": "2026-10-22T06:00:21.000Z",
  "lastResult": { "status": "claimed", "day": "2026-10-22", "credit": 100 },
  "reportConfig": { "enabled": false, "reason": "config.json 不存在", "source": "default" },
  "state": {
    "lastSuccessDay": "2026-10-22",
    "streakDays": 3,
    "totalCredits": 300,
    "failureCount": 0,
    "history": [ /* 最近 7 天 */ ]
  }
}

状态文件位置:

$DSH_HOME/.workbuddy-checkin/state.json      # 默认 ~/.dsh/.workbuddy-checkin/state.json

它是原子写入的普通 JSON,可以直接打开看,也可以直接删(删了等于清空本地记录,不影响账号侧签到)。

结果回报(默认关闭)

插件可以选择在签到出结果后,往你指定的某个 DSH 会话里投递一条消息并唤醒那个会话的 agent,让它用自然语言把结果讲给你听。

这个功能默认关闭,原因很直接:它会唤醒 agent 跑一轮,消耗的是你自己的 token 额度。不打招呼就替用户花额度不合适,所以默认不开,而且没有任何内置的目标会话——必须由你自己指定投给哪个会话。

开启方式:编辑 $DSH_HOME/.workbuddy-checkin/config.json:

{
  "report": {
    "enabled": true,
    "targetSessionId": "session-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "afterSeconds": 30,
    "acknowledgeTokenCost": true
  }
}
字段 说明
enabled 置 true 才启用
targetSessionId 必填,格式 session-<uuid>
afterSeconds 延迟秒数,允许 5~600,默认 30
acknowledgeTokenCost 置 true 表示你已知悉这会消耗 token

也可以用环境变量覆盖:

DSH_WBCHECKIN_REPORT=1
DSH_WBCHECKIN_REPORT_SESSION=<会话 ID>
DSH_WBCHECKIN_REPORT_DELAY=30

未启用、或开了但没给 targetSessionId,插件会完全跳过这条路径:不写播报文案、不调用 schedule 服务、不投递。签到本身照常进行。

什么情况下会播报:
- 领取成功 → 播一条
- 第一次失败 → 立刻播一条「正在自动重试」,不必等到重试用尽
- 重试用尽仍失败 → 播一条最终失败

「今天已经领过」不打扰。

其它环境变量

变量 用途
WORKBUDDY_AUTH_FILE 覆盖登录文件路径(默认按 %LOCALAPPDATA% 推导)
DSH_HOME 覆盖 DSH 数据目录(默认 ~/.dsh)

安全边界

这是本插件刻意守住的红线:

  • 只读登录文件。不刷新 token、不回写、不打印 token 内容、不上传
  • 只注册一个 exact 只读路由,不抢占其它路径
  • 不注入客户端脚本、不改 DSH 配置、不碰 WorkBuddy 客户端进程
  • 结果回报默认关闭,没有内置会话 ID,不替你决定往哪投
  • 所有异常都在插件内部吸收,不会让 DSH 启动失败
  • 状态文件原子写,格式是人类可读的 JSON

数据流向:

本机登录文件 ──(读)──> 插件 ──(HTTPS POST)──> www.workbuddy.cn
                          └──(写)──> $DSH_HOME/.workbuddy-checkin/state.json

除 WorkBuddy 自己的接口外,不向任何第三方发请求。

卸载

  1. 从 ~/.dsh/profiles/<profile>/package.json 的 dependencies 和 dsh.profile.bundles 里移除 dsh-workbuddy-checkin
  2. 重启 DSH
  3. 可选:删掉 $DSH_HOME/.workbuddy-checkin/(放着也不影响任何东西)

兼容性

项 要求
DSH 提供 dsh.bundle.patch 与 ctx.inject/Schedule/webServer 的版本
Node.js ^22.19.0 \|\| >=24.0.0
操作系统 Windows(登录文件由 WorkBuddy 桌面端写入)

适用场景与注意

  • 适合需要「每日签到拿积分」但不想保持 WorkBuddy 桌面端常驻的开发者。
  • 插件以当前 DSH 进程的权限运行,安装前建议检查源码与许可证。
  • 默认关闭结果回报,避免意外消耗 token。

总结

dsh-workbuddy-checkin 插件通过只读 WorkBuddy 桌面端的登录态文件,直接调用公开接口完成每日签到,让 DSH 启动后约 20 秒自动跑一次,后续不再重复请求。结果写入本地状态文件,默认不消耗 token,也不往会话发消息。结果回报功能默认关闭,需要时可在配置中开启并指定会话 ID。

  • 插件目录页:https://www.skillhub.cn/plugins/757400/dsh-workbuddy-checkin
  • GitHub:https://github.com/757400/dsh-workbuddy-checkin
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye