dsh-scheduled-send:在 DSH 輸入框裏定時發送用戶消息

前言

在 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 直接暴露公網。

典型用法

  1. 在輸入框寫好要發的內容(僅文本;有附件時會提示先去掉)。
  2. 點 ▾,選日期時間或點預設。
  3. 點 定時發送 → 輸入框清空,▾ 上出現小白點。
  4. 到點後宿主把消息投進當前會話;會話空閒立即開新一輪,正忙則排在下一條。

想不等到點驗證投遞:對已有條目 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
羽毛球分组比赛记分
小程序二维码

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

小夜