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。

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

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

Xiaoye