dsh-ai-calendar:把 AI 智能日曆嵌進 DeepSeek Harness 的插件

前言

做 Agent 的人大多遇到過兩件事:一邊是 Harness 裏的對話和任務,一邊是另一套日曆 / 待辦系統,兩邊的提醒和記錄對不上。要麼手動複製,要麼寫腳本同步。dsh-ai-calendar 處理的是後一種情況:它把一套日曆界面直接嵌進 DeepSeek Harness 的側欄,同時給 Agent 暴露一組日曆工具,並且把日曆自帶的 AI 助手換成 Harness 已配置的 DeepSeek 路由,不再單獨申請 key。

下面介紹這個插件是什麼、怎麼裝、怎麼用、有哪些坑。

這是什麼

dsh-ai-calendar 是 dengyinxi100-crypto 維護的 DeepSeek Harness 插件,npm 包名 dsh-ai-calendar,倉庫 dengyinxi100-crypto/ai-calendar-deepseek-harness。當前版本 1.2.1,許可證爲 UNLICENSED(非開源許可,使用前需自行確認授權範圍)。

它解決三件事:

  1. 在 Harness 側欄增加「日曆」入口,主區域嵌入完整日曆界面;
  2. 掛一個可拖拽、可縮放的定時任務浮窗,不打開日曆面板也能收到提醒;
  3. 給 Agent 註冊一組日曆工具,並讓 AI 直接執行新建 / 修改 / 刪除記錄。

日曆自身的多模型 AI 助手被替換爲 Harness 裏已配置的模型,按 token 計費,不額外填 key。

安裝與啓用

前置要求:Node.js ≥ 20,DeepSeek Harness(含 Web GUI),以及能編譯或下載 better-sqlite3 的平臺。

方式一,直接在 Harness 的插件管理裏安裝,填 npm 包名:

dsh-ai-calendar

也可以填本地目錄:

file:F:/path/to/dsh-ai-calendar

方式二,手動裝進 profile:

cd ~/.dsh/profiles/desktop
pnpm add dsh-ai-calendar

然後確認 package.json 的 dsh.profile.bundles 裏包含 dsh-ai-calendar。

裝完必須重啓一次 DeepSeek Harness,側欄纔會出現「日曆」。原因是宿主插件模塊只在啓動時加載一次,插件升級後也要重啓才生效;client / shim 部分刷新頁面即可。

側欄面板與定時任務浮窗

側欄出現「日曆」入口,未完成任務數用小徽標顯示。點擊後主區域嵌入完整日曆,包含月視圖、時間線、任務看板、日誌四種視圖。面板頂部顯示當日消耗,形如 DeepSeek API · 付費 · 今日 ¥0.0000 / 0 tok,懸停可看到總計、調用次數、輸入輸出 token。

左下角掛一個定時任務浮窗,可拖動、右下角可縮放,位置和尺寸會記住。浮窗顯示到點提醒(紅色強調條加「到點」膠囊)、接下來 4 條提醒、未完成任務數,點條目直接跳到日曆面板。提醒到點自動彈出並高亮 2.6 秒,× 或日曆面板裏「主題設置 → 懸浮窗」開關都能關掉。浮窗不依賴日曆面板是否打開:只要 Harness 開着,它每 15 秒輪詢一次後端。

Agent 日曆工具

插件註冊了 6 個工具:

工具 作用
calendar_status 後端狀態、端口、數據路徑、記錄總數
calendar_list_logs 按日期區間、是否週期、是否任務查詢
calendar_create_log 新建日誌或任務
calendar_update_log 修改已有記錄
calendar_delete_log 刪除記錄
calendar_summarize 讀真實日誌後讓 DeepSeek 生成中文總結

Agents 在任務裏可以直接調用這些工具管理日曆數據,不需要走 HTTP 接口自行拼裝。

AI 接管

AI 接管走 /api/ai/chat:插件把用戶消息連同數據庫摘要(總量、今天與之後的量、最近記錄含 id)一起餵給模型。模型返回 {"reply": "...", "ops": [...]},插件真正執行 create / update / delete,再按執行結果回一句人話。

回覆下方有一行淡灰色標註,形如 模型 deepseek-official/deepseek-flash · 入 N / 出 M tokens · ¥0.0000。界面不顯示 SQL、provider id 或技術細節。

配置

全部可選,通過環境變量傳入。

變量 默認 說明
DSH_CALENDAR_ROOT / DSH_CALENDAR_APP_ROOT 包內 rsc/ 覆蓋日曆前端與後端所在目錄,開發時指向源碼項目
DSH_CALENDAR_DB 後端腳本旁的 calendar.db 數據庫文件路徑,升級前建議指向固定目錄
DSH_CALENDAR_PORT 3001 後端端口
DSH_CALENDAR_AI_MODEL 跟隨 Harness 路由 強制指定模型名
DSH_CALENDAR_PRICE_INPUT_PER_M 2 輸入單價(元 / 百萬 token),僅用於估算顯示
DSH_CALENDAR_PRICE_OUTPUT_PER_M 8 輸出單價(元 / 百萬 token)

數據與備份

日曆數據存在後端 SQLite,默認位置是後端腳本同目錄的 calendar.db,發佈包內即 rsc/server/calendar.db。插件會顯式把 DB_PATH 傳給後端,原因是後端 bundle 裏的寫法爲 DB_PATH || <後端腳本目錄>/calendar.db;一旦後端腳本被搬走(例如打包進插件包),不顯式傳參就會憑空生成一個空庫,看起來像數據被清空。

Harness 側的用量賬本存在瀏覽器 localStorage 的 dsh_ai_calendar_usage_v1,按天累計、保留 30 天。診斷日誌在 %TEMP%/dsh-ai-calendar/diag.log,其中 backend:db-path 事件記錄實際使用的數據庫路徑。

升級或重裝插件前,建議備份 calendar.db(連同 -wal / -shm 一起復制),或把 DSH_CALENDAR_DB 指向固定目錄。

常見問題

側欄沒有「日曆」:檢查 profile 的 dsh.profile.bundles 是否包含 dsh-ai-calendar,然後重啓 Harness。

面板裏空白:多半是靜態資源路徑問題。插件會在響應時注入 <base href="/dsh-calendar/app/">,構建產物裏不要自帶 <base href="/">。

提示「日曆服務沒能啓動」:端口 3001 被佔用,或 better-sqlite3 原生模塊沒裝好。裝好後點「刷新」,或先手動跑:

node rsc/server/index.cjs

改了日曆源碼但界面沒變:發佈包內的 rsc/ 是構建快照。重新構建應用後要同步(scripts/package-plugin.mjs 僅倉庫內開發者可用);開發時可以直接用 DSH_CALENDAR_ROOT=F:/AI calendar 指向源碼項目。

用量每次重啓清零:新版已改爲 localStorage 賬本,不再清零。若仍看到 0,請確認頁面已刷新到最新 client 版本。

適用場景與注意

適合需要在 Harness 裏統一管理任務、日誌和提醒,並希望 Agent 能讀寫日曆數據的開發者。

三點注意:

  1. 插件以當前 dsh 進程權限運行,安裝前應檢查其源碼與許可證,尤其是 UNLICENSED 的授權範圍;
  2. 日曆數據落在插件自帶的 SQLite,升級或重裝前應備份;
  3. 插件自帶的輔助腳本(scripts/smoke.mjs、scripts/package-plugin.mjs 等)不進發布包,本地開發時需自行準備。

小結

dsh-ai-calendar 的價值在於把日曆界面、定時提醒和 Agent 工具收斂進 Harness 一處,AI 部分複用已有的 DeepSeek 路由。

  • 目錄頁:https://www.skillhub.cn/plugins/dengyinxi100-crypto/ai-calendar-deepseek-harness
  • GitHub:https://github.com/dengyinxi100-crypto/ai-calendar-deepseek-harness
羽毛球分组比赛记分
小程序二维码

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

小夜