前言¶
在 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 → 定時任務(自動化)→ 新建。
- 任務名建議填
DSH 處理器(與WB_AUTOMATION_NAME默認一致,可在.env修改)。 - 工作目錄設爲協作目錄(與
WB_HANDOFF_DIR一致)。 - 將 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。