前言¶
在 DSH 環境下,管理工作區內的日程與待辦需要兼顧會話上下文與數據持久化。dsh-calendar-todo 插件通過將日曆應用綁定到 DSH 文件夾,並補丁瀏覽器與 Bash 的時區採樣,解決了跨時區計算與 UI 聯動的痛點。
核心定位¶
DSH Web 插件:按文件夾組織的日曆 + 待辦應用。它支持 iCal 導入(如 Google Calendar)、雙向聯動的小日曆界面,以及一套完整的對話工具集。
安裝與啓用¶
使用官方安裝命令:
dsh plugin --profile web add dsh-calendar-todo
# 或
dsh plugin --profile web add https://github.com/qschen86/dsh-calendar-todo/releases/download/v0.2.0/dsh-calendar-todo-0.2.0.tgz
安裝後,側邊欄會出現 📅 圖標。點擊進入日曆模式,瀏覽器端與宿主端會自動進行佈局補丁。
數據與工作區綁定¶
插件運行在一個文件夾上下文中:
- 默認路徑:首次進入未配置時,自動創建 ~/.dsh/calendar-todo。
- 數據文件:dsh-calendar-todo.json,存儲日曆、待辦及外部日曆數據。
- 會話管理:該文件夾被註冊爲 workspace,對話內容歸檔於 ~/.dsh/sessions。日曆模式下的對話列表會自動過濾爲該文件夾的會話。
界面佈局¶
日曆模式採用專用佈局,側邊欄圖標顯示“今日 X”計數。
- 左側(精簡對話):320px 寬度,僅保留當前會話的消息列表與輸入框,其他會話管理功能移至設置。
- 中間(時間軸):按時間排序展示待辦與日程,支持月份分組。進入時自動定位到今天。
- 頂部待辦條:橫向排列無時間的待辦,支持優先級(高/中/低)、分類標籤、置頂。點擊可切換完成狀態。
- 右側(小日曆):與時間軸雙向聯動,滾動列表時高亮日期,點擊日期定位列表。
外部日曆支持¶
通過 iCal 源支持 Google Calendar 等外部日曆。
- 配置:在設置面板添加 ICS 地址(如 Google 日曆的 webcal 鏈接)。
- 同步:默認 60 分鐘間隔,支持手動立即同步。
- 重複規則:RRULE(如 DAILY)僅存儲一次,查詢時按需展開。
- 篩選:時間軸頂部可按來源(本地/外部/特定標籤)篩選。
對話工具集成¶
插件提供 5 個核心工具,可直接在對話中使用:
calendar_todo_query:查詢待辦/日程,支持按 source 篩選。calendar_todo_add:新增待辦(無時間),模型自動判斷優先級與分類。calendar_todo_add_event:新增日程(帶時間),用於“X 分鐘後提醒”等場景。calendar_todo_update:標記完成或修改屬性(優先級/分類/置頂)。calendar_todo_delete:刪除條目。
判定邏輯:模型根據內容判斷是日程還是待辦。若意圖不明確,通過卡片詢問用戶確認。
時區處理¶
插件強制使用 UTC+8(Asia/Shanghai):
- 瀏覽器端:補丁 Intl.DateTimeFormat.prototype.resolvedOptions,使瀏覽器上報東八區時區。
- 服務端:Bash 命令前置 export TZ=Asia/Shanghai,防止模型使用系統時間計算相對時間。
提醒機制¶
帶時間的日程支持提醒:
- 會話內:在綁定工作區的會話中發送消息。
- Telegram:通過 dsh-telegram-bridge 插件發送通知(需配置 bot token 與授權 chat)。
配置參數¶
可通過環境變量調整默認行爲:
- DSH_CALENDAR_TODO_SYNC_INTERVAL:同步間隔(分鐘,默認 60)。
- DSH_CALENDAR_TODO_LOOKBACK_DAYS / DSH_CALENDAR_TODO_LOOKAHEAD_DAYS:重複日程展開窗口(默認 90 / 365)。
- DSH_CALENDAR_TODO_REMIND_MINUTES:提醒提前分鐘數(默認 5)。
注意事項¶
- 依賴
dsh-client-ui-layout和dsh-workspace-dock進行佈局補丁。 - 卸載不刪除數據,數據存儲在綁定文件夾與插件目錄中。
- License: MIT。
總結¶
dsh-calendar-todo 是一個將日曆功能深度集成到 DSH 工作流中的插件。它通過文件夾綁定、雙向聯動 UI 和對話工具,解決了日程管理的分散問題,並強制統一了時區計算邏輯。
鏈接:GitHub