dsh-calendar:在 DSH 右側欄內聯 Obsidian 日記與待辦

前言

在 DeepSeek Harness 裏寫代碼、跑智能體時,日記和待辦往往還在 Obsidian vault 的 Markdown 裏。切窗口改勾選、改 Day Planner 時間塊,會打斷當前會話。常見做法是雙屏或 Alt-Tab,但 DSH 右側欄本身可以掛自定義面板——若能把月曆、當天時間軸、待辦和日記正文讀進來,並在面板裏改完寫回原文件,就不必離開 DSH。

下面介紹社區插件 dsh-calendar(倉庫 AloneFu/dsh-calendar-plugin),維護者爲 AloneFu。它不依賴 Obsidian 進程在運行,直接掃描你配置的日記文件夾;勾選、改內容、改時間會寫回 Markdown 原行。

這是什麼

dsh-calendar 是 DSH 的 web 客戶端插件:在右側欄打開日曆面板,內嵌零依賴 HTML 頁(standalone/calendar.html),展示 Obsidian 風格的日記與任務視圖。Host 側僅使用 Node 內建模塊,client 側使用平臺自帶的 React;默認只在用戶指定的文件夾內掃描與寫回,寫回帶樂觀併發與審計日誌。

許可證爲 MIT;運行要求 Node ≥ 20(見 package.json 的 engines)。當前 package 版本爲 1.1.0。

核心功能

與 Obsidian 生態的銜接

組件 是否必需 作用
Obsidian vault 必需(作爲文件來源) 插件讀 vault 內 Markdown;Obsidian 只是日常編輯器,不必常駐運行
Day Planner 建議 讀取 startHour、defaultDurationMinutes、showNow 等,繪製 HH:mm - HH:mm 時間塊
Calendar(Liam Cain) 建議 讀取 wordsPerDot,在月曆格子裏畫日記字數點;未裝時默認 250 字一點
Tasks 語法 兼容 解析 - [ ] 行及 📅 / ⏳ / 🛫 等日期元數據

面板區域

  1. 月曆:週一起始,可切月;三套皮膚(Y2K / Win95 / 賽璐璐)可切換並記住選擇。
  2. 日期格:字數點 + 任務點(逾期 / 高優 / 待辦 / 完成);懸停可見字數與任務完成比例。
  3. 當天時間軸:Day Planner 風格排布,今日顯示「現在」紅線;無安排小時可摺疊。
  4. 任務列表:未排時間歸入「未安排」;支持標籤、優先級等展示。
  5. 日記:識別多種日期文件名格式;可摺疊正文;缺失時可新建。
  6. 寫回:標完成、改正文、改/清除時間塊、底部新建待辦(帶時間可寫入 # Day planner 小節)。
  7. 同步:約 15 秒輪詢,host 側 2.5 秒緩存;面板有刷新按鈕。

寫回安全方面:路徑 realpath 限制在配置根目錄內;寫操作帶行級樂觀併發(衝突返回 409);原子寫與編碼/換行保留;審計寫入 $DSH_HOME/dsh-calendar/writes.jsonl(不在 vault 內)。可在 config.json 設置 "write": { "enabled": false } 完全只讀。

安裝與啓用

DSH 生態採用「一切皆插件」;社區目錄見 SkillHub 插件頁,與 DeepSeek / 幻方無官方從屬關係。

方式一:插件市場

在 DSH 插件市場中搜索 dsh-calendar 安裝。

方式二:tgz 包

dsh plugin --profile web add "<路徑>\dsh-calendar-1.0.0.tgz"

安裝後重啓 DSH,或通過 dev 熱裝配(免重啓,見 README)。

方式三:手動掛載

  1. 將插件包解壓到例如 D:\plugins\dsh-calendar。
  2. 在 profiles\<profile>\package.json 的 dependencies 增加 "dsh-calendar": "link:D:\\plugins\\dsh-calendar"。
  3. 在同一文件的 dsh.profile.bundles 數組末尾加入 "dsh-calendar"。
  4. 於該 profile 目錄執行 pnpm install,重啓 DSH。

卸載示例:

dsh plugin --profile web remove dsh-calendar

配置與審計目錄爲 $DSH_HOME/dsh-calendar/(DSH_HOME 默認 ~/.dsh),可自行刪除;插件不改動筆記整體結構。

典型用法

首次配置(約 30 秒)

  1. 打開 DSH 右側欄,在「+」中選擇 日曆,或點擊會話 header 的 日曆圖標。
  2. 在「連接 Obsidian」界面:
    - 點 自動尋找:在常見目錄(最多下探兩層)查找含 .obsidian 的 vault,並讀取 Daily Notes 配置作爲建議路徑;
    - 或 手動填寫 存放 2026-09-19.md 這類日記的文件夾路徑。
  3. 點 保存並開始使用,立即生效。

配置寫入 $DSH_HOME/dsh-calendar/config.json。示例結構:

{
  "roots": ["C:\\Users\\me\\Documents\\Obsidian Vault\\日記"],
  "allowAnyRoot": false,
  "autoOpen": true,
  "write": { "enabled": true, "appendDoneDate": true },
  "create": { "enabled": true, "titleTemplate": "# {date} {weekday}" },
  "dayPlanner": { "heading": "Day planner", "headingLevel": 1, "startHour": 6,
                  "defaultDurationMinutes": 30, "minimalDurationMinutes": 10,
                  "snapStepMinutes": 10, "showNow": true, "showNext": true },
  "calendar": { "wordsPerDot": 250, "maxNoteDots": 2 }
}

讓 DSH 內 AI 自動配置

可將 README 中的指引發給會話內 AI:先執行 node <插件目錄>/scripts/setup.mjs --detect --json 獲取 vault 候選,再 node scripts/setup.mjs --root "<路徑>" 寫入配置,最後用 curl "http://127.0.0.1:3080/dsh-calendar/tasks?refresh=1" 自檢。

常用 CLI:

node scripts/setup.mjs --print
node scripts/setup.mjs --detect
node scripts/setup.mjs --detect --json
node scripts/setup.mjs --root "<路徑>"

運行中可通過 GET http://127.0.0.1:3080/dsh-calendar/status 查看 configPath 與寫回開關狀態。寫操作 HTTP 接口需請求頭 x-dsh-calendar: write 且來源爲本機(詳見 README 接口表)。

適用場景與注意

適合誰:已在 Obsidian 用 Daily Notes、Day Planner 或 Tasks 語法管理日記與待辦,希望在 DSH 同屏查看並輕量編輯、且改動落盤到原 Markdown 的開發者。

權限與安全:插件以當前 DSH 進程的用戶權限讀寫本機文件。安裝前應閱讀 GitHub 源碼 與 MIT 許可證,確認 roots 只指向你願意被掃描/寫回的目錄;默認拒絕整盤根、系統目錄等路徑。

排錯提示:面板長期停在「連接 Obsidian」表示尚未保存有效路徑;月曆無任務點需任務行帶日期 emoji 或落在當天日記;勾選無效可查 write.enabled 或是否因他處編輯導致 stale(409)。不想每次進會話自動展開日曆,可設 "autoOpen": false。

結尾

dsh-calendar 把 Obsidian 月曆、時間軸、待辦與日記內聯進 DSH 右側欄,讀寫在用戶指定的 Markdown 目錄內完成,並與 Day Planner / Calendar 插件配置對齊。可從 SkillHub 目錄頁 進入說明,完整安裝、HTTP 接口與排錯見 GitHub README。

羽毛球分组比赛记分
小程序二维码

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

小夜