前言¶
在 DSH 裏想「到點再發一句話」,常見做法是依賴宿主自帶的 schedule_*:到點投遞的是 [SCHEDULE REMINDER] 提醒幀,會話裏顯示爲自動化任務,模型收到的是提醒而不是用戶原話。若你希望到點出現的就是一條普通用戶發言——和自己在輸入框敲回車一樣——需要在客戶端側把草稿排進隊列,並由宿主按絕對時間走 sessionController.prompt 投遞。
下面介紹社區插件 dsh-scheduled-send(維護者 wangjiaxi,分類:客戶端)。它在 Web 版輸入框發送鍵旁增加飛書風格的分體按鈕:選時間後由宿主到點投遞真實用戶消息;關標籤頁、切會話或重啓宿主,已排條目仍按 epoch 時間執行。
這是什麼¶
dsh-scheduled-send 不改發送鍵本身的即時發送邏輯,只把宿主藍色發送圓鈕左側接上一段同色 ▾ 半段,拼成一顆膠囊控件:左半邊打開「定時消息」,右半邊照常發送。
- 到點由宿主投遞,不是瀏覽器定時器在頁面上「假髮」
- 投遞結果爲
source.kind === 'user'的普通用戶消息,與自帶定時提醒路徑不同 - 當前版本 0.2.2,許可證 MIT,依賴 DSH >=0.2.0-rc.1 <0.3.0(見 package.json)
目錄頁:skillhub.cn/plugins/wangjiaxi/dsh-scheduled-send
源碼與說明:github.com/wangjiaxi/dsh-scheduled-send
核心功能¶
分體發送鍵與定時對話框¶
點 ▾ 打開日期、時間與正文預覽;底部爲「取消 / 定時發送」。預設包括:10 分鐘後、30 分鐘後、1 小時後、明天 9:00。發送箭頭朝右,整顆膠囊同色;深色主題跟隨宿主。有待發送條目時,▾ 上顯示白點;同一對話框內可逐條撤銷。
定時發送取的是點 ▾ 那一刻輸入框草稿;確認後排進隊列並清空輸入框,正文仍可在待發送列表中查看。
與宿主自帶「定時任務」的區別¶
| 能力 | DSH schedule_* |
本插件 |
|---|---|---|
| 到點內容 | [SCHEDULE REMINDER] 提醒幀 |
用戶輸入的正文 |
| 會話呈現 | 自動化任務 / 提醒 | 普通用戶發言 |
| 典型用途 | 提醒模型 | 替用戶在指定時刻發一句話 |
兩者可並存:要提醒模型用 schedule_create;要「九點鐘把這句話發進會話」用 ▾ 箭頭。
持久隊列與投遞路徑¶
待發送隊列寫在 $DSH_HOME/storages/dsh-scheduled-send/tasks.json(先寫臨時文件再 rename)。宿主每秒掃描隊列,到點調用 ctx.sessionController.prompt({ mode: 'queue' }),會處理冷會話恢復、附件與模型能力校驗(本插件創建時僅文本)。投遞失敗每 60 秒重試,最多 5 次後丟棄並記 warning。時間以 epoch 毫秒存儲;換時區不會挪動已排條目。
HTTP 接口(同源)¶
前綴 /dsh-scheduled-send/api,走瀏覽器登錄 cookie,無獨立鑑權層(與宿主 Web 會話信任模型一致):
| 方法 | 路徑 | 說明 |
|---|---|---|
| GET | /info |
{ ok, name, version, queued } |
| POST | /list |
body { sessionId } → { ok, items } |
| POST | /create |
{ sessionId, text, dueAt, timeZone? },dueAt 須晚於現在且一年內 |
| POST | /cancel |
{ id } |
| POST | /fire |
{ id },立即投遞,便於自測 |
移動端與運行中 UI¶
窄屏(≤767px)或 dsh-web-mobile 環境下不拼膠囊,改爲發送鍵左側 28px 圖標按鈕。對話框在 ≤560px 時自底部升起;≤400px 時日期與時間上下排列。
主按鈕變爲「停止」方塊且輸入框爲空時,▾ 半段自動收起,避免貼在停止鍵上。
安裝與啓用¶
插件聲明瞭 dsh.bundle.patch,dsh plugin add 會自動寫入 dsh.profile.bundles,無需手改 cordis.patch.yml。
從 GitHub 安裝(README 原文):
dsh plugin --profile web add github:wangjiaxi/dsh-scheduled-send
本地開發(link,改文件即時生效):
dsh plugin --profile web add /path/to/dsh-scheduled-send
npm 發佈渠道(README 註明「發佈之後」可用):
dsh plugin --profile web add dsh-scheduled-send@latest
裝完刷新頁面,發送區應變爲分體膠囊(桌面 Web)。插件在宿主進程權限下運行,安裝前建議瀏覽源碼與 MIT 許可證;勿將未加固的 dsh web 直接暴露公網。
典型用法¶
- 在輸入框寫好要發的內容(僅文本;有附件時會提示先去掉)。
- 點 ▾,選日期時間或點預設。
- 點 定時發送 → 輸入框清空,▾ 上出現小白點。
- 到點後宿主把消息投進當前會話;會話空閒立即開新一輪,正忙則排在下一條。
想不等到點驗證投遞:對已有條目 POST /dsh-scheduled-send/api/fire,body { "id": "..." }。
適用場景與限制¶
適合:需要在固定時刻以用戶消息形式觸發一輪對話(例如晨間固定 prompt、延遲跟進同一會話);需要關頁、重啓後仍執行的排隊發送。
限制(README 明確):
- 只發文本,定時發送不帶附件。
- 依賴宿主
webServer與sessionController(Web / 桌面版標配)。 - UI 貼發送鍵依賴若干 CSS 錨點(
[data-composer-card]等);DSH 升級後外觀可能略錯位,功能仍可降級可用。
DeepSeek Harness 生態強調「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-scheduled-send 把「定時發一句話」從模型提醒幀,換成宿主隊列裏的真實用戶消息,並通過分體發送鍵和 tasks.json 持久化,覆蓋關頁與重啓場景。進一步細節見倉庫 README 中的架構示意與開發校驗命令(node scripts/validate.mjs)。
- 目錄頁:https://www.skillhub.cn/plugins/wangjiaxi/dsh-scheduled-send
- GitHub:https://github.com/wangjiaxi/dsh-scheduled-send