workbuddy-handoff:把 WorkBuddy 定时任务桥成 MCP 工具

前言

在 DeepSeek Harness 或其它 MCP 宿主里开发智能体时,常见做法是直接调 API 或自建连接器。若你已经在本机用 WorkBuddy 桌面版跑定时任务、技能与连接器,往往还需要再写一层脚本去「投递指令、等结果、改触发时间」。workbuddy-handoff 走另一条路:不改 WorkBuddy 程序本体,只在协作目录里写任务 JSON、触发已有定时任务执行,再把结构化结果读回 Agent。下面介绍它的定位、安装步骤和工具用法。

这是什么

workbuddy-handoff(仓库 Gao-Leonhard-Euler/dsh-workbuddy-handoff)由 Gao-Leonhard-Euler 维护,在 SkillHub 上归类为工作流插件。README 写明:这是第三方个人项目,与 DeepSeek、WorkBuddy 官方均无关系,未获官方授权;通过 WorkBuddy 本地数据库与工作目录协作,不修改 WorkBuddy 本体、不注入进程、不读取登录凭据。

插件把 WorkBuddy 桌面版的定时任务暴露为 MCP 工具,供 DeepSeek Harness、Claude Desktop、自研 Agent 或脚本使用,能力包括:投递任务并取回结构化结果;立即执行或按秒数 / 指定时间延迟执行;切换该定时任务使用的模型与思考模式。

当前 GitHub 星标为 0(以目录页信息为准)。许可证 MIT,版本 1.0.0(见 package.json)。代码说明由 deepseek V4.1 flash 在 deepseek harness 中编写。

工作原理

WorkBuddy 的定时任务会读取工作目录下的指令,执行后把产物写回同目录。插件只做两件事:往协作目录写入任务文件,并改写定时任务的触发时间以唤醒执行。

你的 Agent ──写任务文件──▶ <协作目录>/handoff/in/*.task.json
                              │
                              ▼  WorkBuddy 定时任务读取并执行
                              │
      <协作目录>/handoff/out/*.result.json ──▶ 你的 Agent 读结果

启动时插件会在协作目录下自动创建 handoff/in、handoff/out、handoff/done、handoff/failed。

核心功能(MCP 工具)

工具名在 DSH 中通常以 mcp__workbuddy-handoff__ 为前缀。README 按三层划分:

Tier 0 — 文件层(不碰数据库)

工具 说明
wb_submit_task 写入 <id>.task.json 到 handoff/in/,可选立刻触发并等待结果
wb_read_result 读取 handoff/out/ 中指定 id 或最新一条;指定 id 时默认归档到 done/
wb_status 只读:配置、任务状态、待处理数、最近运行等

Tier 1 — 触发层(只写 next_run_at)

工具 说明
wb_wake 立刻触发一次;可设 wait_seconds 等待结束
wb_schedule 延迟一次:delay_seconds 或 ISO 时间 at

Tier 2 — 模型层(只写 model_id / model_is_thinking)

工具 说明
wb_set_model 切换模型与思考模式
wb_list_models 只读:列出可用模型与积分单价

任务 JSON 与结果 JSON 的字段格式见仓库 README;结果字段由你在 WorkBuddy 定时任务里的 prompt 约定,插件只做 JSON 解析,不校验业务语义。

使用前准备

在 WorkBuddy 中新建定时任务

插件不会替你创建定时任务,需先在 WorkBuddy → 定时任务(自动化)→ 新建。

  1. 任务名建议填 DSH 处理器(与 WB_AUTOMATION_NAME 默认一致,可在 .env 修改)。
  2. 工作目录设为协作目录(与 WB_HANDOFF_DIR 一致)。
  3. 将 README 中的「任务执行器」prompt 粘贴为指令;新建时触发时间可随意设,之后由插件改写 next_run_at 实现立刻或延迟执行。

配置环境变量

推荐写入 $DSH_HOME/.env(DSH 启动时会注入进程环境)。示例:

# WorkBuddy 桌面版安装目录
WB_APP_DIR=D:\...\WorkBuddy

# 协作目录
WB_HANDOFF_DIR=C:\Users\你的用户名\Documents\deepseek-harness\default-workspace\workbuddy

# 目标定时任务名称(或与 WorkBuddy 里一致的 id)
WB_AUTOMATION_NAME=DSH 处理器
# WB_AUTOMATION_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

未设置时的默认行为(摘自 README):WB_HANDOFF_DIR 默认为 $DSH_WORKSPACE\workbuddy,或 ~/Documents/deepseek-harness/default-workspace/workbuddy;WB_DATA_DIR 默认为 ~/.workbuddy(便携版若存在 .workbuddy 子目录则优先);WB_AUTOMATION_NAME 默认为 DSH 处理器。修改 .env 后需完全退出并重启宿主。

运行环境需要 Node.js ≥ 20(依赖 node:sqlite)。

安装与启用

本仓库是 DSH bundle 包(package.json 中 dsh.bundle.patch 指向 cordis.patch.yml)。安装后 DSH 启动时会自动挂载 MCP server,无需手工改 profile。

资料中的安装命令为:

# 从 GitHub 直接装(把 <owner> 换成实际仓库 owner)
dsh plugin --profile desktop add github:<owner>/workbuddy-handoff

# 或本地目录(绝对路径,安装后会 link 进 profile)
dsh plugin --profile desktop add C:\path\to\workbuddy-handoff

也可在 DSH 插件管理页粘贴同样 spec。装完后重启 DSH,插件列表中应出现 workbuddy-handoff。

若不作为 DSH 插件,可将 dist/public/server.mjs 按普通 MCP server 写入宿主配置;DSH 用户也可在 profile 的 cordis.patch.yml 中插入 MCP 客户端条目(详见 README「方式 B」)。

典型用法示例

投任务并默认立刻执行、最长等待 240 秒:

{ "prompt": "把 data.xlsx 转成 markdown 表格", "type": "doc_transform",
  "inputs": ["data.xlsx"], "wait_seconds": 120 }

只投递、不唤醒(之后可在 WorkBuddy 里手动运行):

{ "prompt": "...", "wake": false }

读结果并归档:

{ "id": "doc-20261104-133709" }

延迟 10 分钟触发:

{ "delay_seconds": 600 }

切换模型:

{ "model_id": "glm-5.3-flash", "thinking": false }

排错时 README 建议先跑 node test/selftest.mjs,或在宿主中调用 wb_status 查看任务 id、数据库路径、协作目录及「未找到任务」类配置错误。

适用场景与注意

适合已经在 Windows 本机使用 WorkBuddy 桌面版、并希望从 DSH 或其它 MCP 宿主远程编排同一条定时任务的开发者。README 写明主要在 Windows + WorkBuddy 5.9.3 上验证;其它版本或平台应先通过 wb_status 确认数据库路径。

已知限制包括:延迟触发依赖 WorkBuddy 本地调度 tick(约 30 秒粒度),不是精确定时;周期性调度仍需在 WorkBuddy 界面配置;插件以当前 DSH 进程权限运行,安装前应自行阅读源码与 MIT 许可证,评估第三方工具风险。

插件与 DeepSeek Harness 生态的关系:DSH 侧理念是「一切皆插件」;SkillHub 目录(插件页)为社区站点,与 DeepSeek / 幻方无官方从属。使用前请遵守各产品服务条款。

结尾

workbuddy-handoff 用目录里的 *.task.json 与 *.result.json 做 handoff,把 WorkBuddy 定时任务变成 MCP 可调度的执行端,减少在宿主与桌面客户端之间重复造轮子。完整 prompt 模板、任务 JSON schema 与排错表见 GitHub 仓库 README。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye