前言¶
在 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。