# workbuddy-pro **Repository Path**: Ghandi/workbuddy-pro ## Basic Information - **Project Name**: workbuddy-pro - **Description**: Magpie 插件:WorkBuddy 国内版与国际版双 provider,含账号看板、健康探测、每日签到、成长任务、猫猫旅行与定时执行 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-11-04 - **Last Updated**: 2026-11-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # WorkBuddy Pro **一个插件顶两个**:把 WorkBuddy 的**两个版本**(国内版 `workbuddy`、国际版 `workbuddy-ai`)作为 provider 接进 Magpie,同时把成长中心的自动化(每日签到、成长任务、连登链、猫猫旅行、看板、定时)收进同一个包。 它替代原生 `@magpie-community/opencode-workbuddy-auth`:provider 层以原生实现(MIT,同仓)的拷贝为基座, 默认配置下与它等价,所以已经配成 `workbuddy/` 或 `workbuddy-ai/` 的 agent 行为不变。 唯一可选差异是默认关闭的「增强模型目录」(国内版),见下文。 ```sh magpie plugin add /path/to/workbuddy-pro ``` 然后在 **Magpie → Providers → WorkBuddy / WorkBuddy AI** 点 **Sign in**:由 Magpie 打开浏览器, 登录完成即写入 Magpie 的账号列表。插件页面(侧栏「WorkBuddy Pro」)负责看板、任务、定时与执行记录。 > **登录不会再报 `proxyconnect ... 502`**:那来自 Magpie 的全局代理设置——若宿主的代理不转发到这两个域名,登录请求就会被拦。 > 在 magpie 设置里把代理设为 **直连**(或给这两个 provider 单独设 `direct`)即可; > 插件加载时也会把这两个供应商的域名加入 `NO_PROXY`,让它们直连,同时不影响其它插件。 --- ## 一眼看懂 | | | | --- | --- | | **两个 provider** | `workbuddy`(copilot.tencent.com,含 Claude 模型的 Messages 路由)与 `workbuddy-ai`(www.workbuddy.ai)。模型、流式对话、用量、签到、续期、企业头、错误改写全部沿用原生实现。 | | **账号自己管** | 登录、续期、导出、导入都在插件自己的账号库里(`~/.config/workbuddy-pro/accounts.json`,0600)。**不依赖 DeepSeek Harness**;Magpie 的登录与桌面版登录只是可选的导入源(默认关闭)。 | | **自动领积分** | 国内版:每日签到、成长任务(含体验专家族、小程序族 Sequential_Tasks)、连登补签/兑换/抽奖、新手礼包与补偿、猫猫旅行、首只 Buddy、扫尾补领。国际版没有成长中心与签到,只读展示它自己的等级任务。 | | **账号状态** | 每个账号单独探测"能不能真的用":被上游限制(11140)、登录失效、额度用尽、被限流、连不上各有标签。**计费接口对被限制的账号仍返回 200**,所以只看余额会误判成健康。被限制的账号不再排进定时(`keepalive` 除外),签到与已达标任务的领奖照常。 | | **按时段自动跑** | 签到、活跃/旅行/福利、任务、夜猫子、登录续期各自可配时段;失败自动重试,同一天不重复领。 | | **看板** | 每个账号的积分与作废时间、近 7 天用量、签到、任务进度、连登、旅行,三种视图。 | | **页面** | 只有 Magpie 侧栏里的「WorkBuddy Pro」一个页面:看板、提醒(按类别折叠)、定时、执行记录(作业 → 动作 → 日志三层展开)。不另开网页。 | ## 安装与登录 1. 装插件(上面那行)。 2. 在 Magpie 里给 `workbuddy` / `workbuddy-ai` 各登录一次;也可以在 Magpie 的 Providers 里导入本机已有的登录(**只导入访问令牌,不复制刷新令牌** —— 两个工具持同一个刷新令牌会互相把对方登出, 所以导入的账号在访问令牌到期后需要重新走一次浏览器登录)。 3. 打开 Magpie 侧栏的「WorkBuddy Pro」,确认账号列表。 首次安装**默认不开启定时**;手动操作不受影响。 ## 账号从哪里来 **账号归 Magpie**:插件的 provider 走 Magpie 的登录与续期,账号存在 Magpie 自己的 `plugin-auth.json` 里,插件不保存第二份令牌(这是 Magpie 插件契约的要求)。 | 来源 | 路径 | 默认 | | --- | --- | --- | | Magpie | `~/.config/magpie/plugin-auth.json` | **是** | | 本插件导入 | `~/.config/workbuddy-pro/accounts.json` | 总是读取(显式导入的账号) | | DeepSeek Harness | `~/.dsh/.credentials.yaml` | 否(可选) | | WorkBuddy 桌面版 | `~/Library/.../workbuddy-desktop.info` | 否(可选) | 需要在 Magpie 的 provider 之外再看本机其它工具的登录时,可在本插件页面的设置里打开对应来源。 同一 `realm + uid` 的多份登录会合成一行:能续期的那份优先,其余作为回退副本(只在读取失败时借用)。 ### 一键导入账号(JSON) 页面右上角的「导入 JSON」导入外部账号管理工具导出的文件(也接受本插件自己 `accounts.json` 里的行)。文件是数组或 `{"accounts":[…]}`;每个条目需要 `access_token` (或 `auth_raw.accessToken`)和 `uid`(或 `profile_raw.uid`、令牌里的 `sub`), 版本由 `auth_raw.domain` 决定,域名缺失时看令牌签发方。 - 导入的账号存在 `~/.config/workbuddy-pro/accounts.json`(0600),与 Magpie 的 `plugin-auth.json` 是两份文件:**导入与移除都不会改动 Magpie 的登录**; - 带 `refresh_token` 的导入账号由本插件续期,续期结果写回上面这个文件; - 同一个 `realm + uid` 重复导入是**更新**而不是堆积:新令牌覆盖旧的,缺 `refresh_token` 的导出不会抹掉已有的刷新令牌; - 页面按每批 ≤24 KB(且 ≤32 个账号)分批提交,文件上限 2 MB / 500 个账号; 被跳过的条目在底部提示里报出原因; - 导入的账号行有「移除」,只删本插件这一行,Magpie 里的登录不受影响。 ## 自动做的事 **账号状态**:看板给每个账号一个结论——可用 / 已被限制 / 登录失效 / 额度用尽 / 被限流 / 连不上。这不是从余额推出来的:WorkBuddy 对**已被限制的账号仍然用 200 回**余额、用量、任务与签到状态接口, 只有真正发一句对话才会拿到 403 `11140`。所以探针发的是一次一 token 的最小对话,硬结论缓存 60 分钟、软失败 15 分钟,且任何账号 10 分钟内最多探一次 (点刷新也不会连发);一旦某个作业真的撞上 11140 或 401,结论会立刻写回,不必等下一次探测。 主登录失效而同一账号还有另一份可用登录时,看板与**作业**都用那份可用的副本:看板显示的数字与真正执行的是同一个登录。 被限制的账号只跳过**需要对话**的部分,签到与已达标任务的领奖照常执行。 **每日签到**:先查活动状态,`today_checked_in` 为真就报「已签」,否则领取一次;1001/1002/1003 分别按 已签 / 不符合 / 无活动处理,重复运行不会二次领取。 **签到后顺带提交一轮**(`onCheckin`,默认关):打开后,每天签到成交的那一刻顺带提交一轮成长执行, 不必等到 09:00 的时段。在插件页面的「定时与设置」里勾选即可,也可以把 `~/.config/workbuddy-pro/config.json` 的 `onCheckin` 直接改成 `true`。 **成长任务**(国内版):按任务自己的判据上报事件,核对进度,达标才领奖。 - 通用对话、模板、灵感案例、定时任务、Buddy 应用、资料库、主题外观、技能加载、设计画布; - **体验专家族**:真实对话(服务端 requestId)+ 召唤链 + `expert_actual_use(mode=LOCAL)`; - **小程序族** `Sequential_Tasks_1..7`:小程序平台头全链路,对话类按 **45 秒 + 0~10 秒抖动**逐条上报 (连发会被上游反作弊回滚,因此一轮可能持续几分钟); - **扫尾补领**:对全量任务逐项补领「已达标未领取」,以后新增的任务只要判据自然达成也会被领走。 **连登链**:本月漏签逐天补签(补过的日期记下来,不会被重复补)→ 7/14/28 天档位兑换 → 抽奖次数抽完 (上限 20)→ 新手礼包与活动补偿先查状态、待领才领。 **猫猫旅行**:归来则领奖(必要时带 `record_id` 重试),在家则按目的地出发。 **首只 Buddy**:活跃 → 采纳协议 → 领养。 **国际版(`workbuddy-ai`)与国内版不是同一套东西**,插件按版本分开处理: | | 国内版 `workbuddy` | 国际版 `workbuddy-ai` | | --- | --- | --- | | 成长中心(任务/连登/旅行/Buddy/能量/抽奖/礼包/补偿) | 有,全自动 | **没有** | | 每日签到 | 有 | **没有**(官方插件也不给它签到 hook) | | 任务列表 | `Sequential_Tasks_*`、专家族等,事件可推进,达标可领积分 | 只有「养虾等级」五项:**客户端使用自动累计的等级记录,没有可领奖励,也不是待办任务** | | 本插件对它做什么 | 领满 | 只读展示等级任务 + 健康探测 | 国际版账号永远不会被本插件发到任何国内域名;`all` 对它们只会做一次健康探测。 ## 命令与工具 Magpie 里提供 4 个工具: | 工具 | 作用 | | --- | --- | | `workbuddy-pro_status` | 账号、执行记录、定时设置 | | `workbuddy-pro_run` | `all` / `checkin` / `activity` / `tasks` / `travel` / `bonus` / `night` / `keepalive` / `inspect` | | `workbuddy-pro_board` | 看板数据 | | `workbuddy-pro_schedules` | 查看或开关定时 | 页面底部的「定时与设置」可以改时段、代理与账号来源;每个账号行右侧可以启停。 ## 时段 ```json "checkin": ["08:50"], "daily": ["09:00", "21:00"], "tasks": ["09:10", "21:10"], "night": ["01:00"], "keepalive": ["22:00"] ``` 每类最多 24 个 `HH:MM`,留空即关闭该类。电脑睡眠时不执行,唤醒后补跑当天已到点的时段;夜猫子只在 23:00–08:00 有效。 ## 更宽的模型目录(可选) provider 默认只读 `/v3/config` 里 `cli` agent 那一段,和以前完全一致。打开 **增强模型目录** 后,会同时读控制台的 scoped 目录 `/console/enterprises/personal/models`: - **默认列表一个不少**:开关只会把列表变宽——`/v3/config` 里已有的 id 全部保留、顺序不变,scoped 独有的行补在后面。 - **scoped 是主目录**:同一个模型,名字、上下文、倍率以它为准(它比桌面配置更新)。 - **config 补差**:scoped 没有的 id 从 config 补;促销表(限时免费、夜间折扣)仍由 config 提供,价格规则不变。 - **非聊天行一律不列**:`auto`/`default`/`default-1.x` 别名、NES/补全类、输出上限 ≤256 的、以及控制台按 tag 族标出来的媒体模型(`text-to-image`、`image-to-image`、`text-to-video`、`image-to-video` 等)。 - **不会空**:`/v3/config` 一个 cli 模型都没有时,即使开关关着也会自动读一次 scoped;scoped 读失败就退回 config 的列表。 开关在 **Magpie → Providers → WorkBuddy → 「插件选项」** 里,**就在账号列表下面、Routing 上面**,点开卡片就能看到, 不用往下翻到模型列表末尾。两个版本都适用这一位置。「仅免费模型」两个版本都有;「增强模型目录」只给国内版—— 国际版的控制台路由返回 HTTP 500,所以它的列表保持原样,也不会出现一个点了没反应的开关。 ## 已知边界 - **每日签到与成长任务由本插件领取**,不再依赖 Magpie 设置里的 WorkBuddy 签到开关;provider 的 `checkin` hook 仍然保留,供 Magpie 自己的开关使用,两条路径都幂等。 - **代理**:Magpie 会给插件注入自己的 `*_PROXY` 与 `NODE_USE_ENV_PROXY`。那是网关用的本地代理,插件服务会 主动丢掉它们再直连供应商;需要代理时在页面的「定时与设置」里填 `proxy`,会显式传给每个请求。 - **只读来源的登录**不会被本插件续期:令牌到期时需要在原处重新登录(页面会标出来)。 - 企业账号没有个人成长奖励,插件跳过成长部分,只做积分/用量读取。 - 依赖 WorkBuddy 的私有接口;上游改版可能让某个任务族失效,届时任务会显示为未达成而不是被误记成已领。 ## 开发 ```sh node --test test/*.test.mjs # 本插件(121 项) HOME=$(mktemp -d) ~/.cache/magpie/bun/1.4.4/magpie-bun test test/native # provider 原生用例(314 项) ``` `lib/provider.mjs` 与 `test/native/` 以 `magpie-community/plugins` 中 `packages/workbuddy` 为基座: 除下面这处默认关闭的扩展外保持行为等价,`test/native/` 就是这层等价性的用例。 - **增强模型目录**(`extended_catalog`,仅国内版,默认关):开启后把控制台 scoped 目录合并进 `/v3/config` 的模型列表;关闭时列表与原生完全一致。改动集中在这一个开关里,升级上游时按这个边界合并。 ## 许可 MIT。第三方来源见 `THIRD_PARTY_NOTICES.md`。