前言¶
在 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 語法 | 兼容 | 解析 - [ ] 行及 📅 / ⏳ / 🛫 等日期元數據 |
面板區域¶
- 月曆:週一起始,可切月;三套皮膚(Y2K / Win95 / 賽璐璐)可切換並記住選擇。
- 日期格:字數點 + 任務點(逾期 / 高優 / 待辦 / 完成);懸停可見字數與任務完成比例。
- 當天時間軸:Day Planner 風格排布,今日顯示「現在」紅線;無安排小時可摺疊。
- 任務列表:未排時間歸入「未安排」;支持標籤、優先級等展示。
- 日記:識別多種日期文件名格式;可摺疊正文;缺失時可新建。
- 寫回:標完成、改正文、改/清除時間塊、底部新建待辦(帶時間可寫入
# Day planner小節)。 - 同步:約 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)。
方式三:手動掛載
- 將插件包解壓到例如
D:\plugins\dsh-calendar。 - 在
profiles\<profile>\package.json的dependencies增加"dsh-calendar": "link:D:\\plugins\\dsh-calendar"。 - 在同一文件的
dsh.profile.bundles數組末尾加入"dsh-calendar"。 - 於該 profile 目錄執行
pnpm install,重啓 DSH。
卸載示例:
dsh plugin --profile web remove dsh-calendar
配置與審計目錄爲 $DSH_HOME/dsh-calendar/(DSH_HOME 默認 ~/.dsh),可自行刪除;插件不改動筆記整體結構。
典型用法¶
首次配置(約 30 秒)¶
- 打開 DSH 右側欄,在「+」中選擇 日曆,或點擊會話 header 的 日曆圖標。
- 在「連接 Obsidian」界面:
- 點 自動尋找:在常見目錄(最多下探兩層)查找含.obsidian的 vault,並讀取 Daily Notes 配置作爲建議路徑;
- 或 手動填寫 存放2026-09-19.md這類日記的文件夾路徑。 - 點 保存並開始使用,立即生效。
配置寫入 $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。