🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

日历日程 JohnXu22786/calendar

DeepSeek Harness
JohnXu2278672 天前有提交已提供中文文档扫描:含敏感能力

连接 CalDAV 管理日程,自动识别农历节假日并检测冲突

27.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add JohnXu22786/calendar
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么[目录]—
dsh 原生插件 · tool
暂无时间戳·判据 →
装得上吗[实装验证]✓
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
数据截至 2026/09/27·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/03·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 72 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 10 处,展示前 10 条)
  • 读取本地文件
    src/cli.ts:30
    if (!fs.existsSync(p)) return
  • 读取本地文件
    src/cli.ts:31
    const raw = fs.readFileSync(p, 'utf8')
  • 发起网络请求
    src/dav/client.ts:162
    const raw = await this.request('PROPFIND', url, xml(body), { Depth: depth, 'Content-Type': 'application/xml; charset=utf-8' })
  • 发起网络请求
    src/dav/client.ts:235
    const raw = await this.request('REPORT', calendarUrl, xml(body), {
  • 发起网络请求
    src/dav/client.ts:260
    const raw = await this.request('GET', url, undefined, { Accept: 'text/calendar; charset=utf-8' })
  • 发起网络请求
    src/dav/client.ts:283
    const raw = await this.request('PUT', url, ics, headers)
  • 发起网络请求
    src/dav/client.ts:292
    const raw = await this.request('DELETE', url)
  • 发起网络请求
    src/dav/client.ts:311
    await this.request('MKCALENDAR', url, xml(body), { 'Content-Type': 'application/xml; charset=utf-8' })
  • 发起网络请求
    src/dav/oauth.ts:39
    const res = await fetch(url, {
  • 发起网络请求
    src/dav/oauth.ts:85
    const res = await fetch(GOOGLE_TOKEN_URL, {
扫描于 2026/11/3(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 连接CalDAV管理日程
  • 识别农历节假日
  • 检测日程冲突

README

由 DeepSeek 最新模型翻译生成
dsh-calendar 面向 DeepSeek Harness(dsh)的日历 / 日程集成插件包(bundle)。遵循 dsh bundle 规范 ("dsh": { "bundle": { "patch": "./cordis.patch.yml" } }),以自包含 npm 包发布。 对接任意 CalDAV 服务器(Google Calendar、iCloud、Nextcloud、自建服务器),自行完成 iCalendar / RRULE 的解析与计算,内置中文日历语境(农历、节假日、默认 Asia/Shanghai 时区),并提供时间冲突检测——零运行时依赖。 功能 1. CalDAV 集成:事件的 list / create / update / delete / search,基于标准 REPORT / PROPFIND / GET / PUT / DELETE,自动发现日历(well-known → current-user-principal → calendar-home-set → calendars)。
展开完整文档(README 剩余 1 节)
dsh-calendar

面向 DeepSeek Harness(dsh)的日历 / 日程集成插件包(bundle)。遵循 dsh bundle 规范
("dsh": { "bundle": { "patch": "./cordis.patch.yml" } }),以自包含 npm 包发布。

对接任意 CalDAV 服务器(Google Calendar、iCloud、Nextcloud、自建服务器),自行完成 iCalendar / RRULE 的解析与计算,内置中文日历语境(农历、节假日、默认 Asia/Shanghai 时区),并提供时间冲突检测——零运行时依赖。

功能

1. CalDAV 集成:事件的 list / create / update / delete / search,基于标准 REPORT / PROPFIND / GET / PUT / DELETE,自动发现日历(well-known → current-user-principal → calendar-home-set → calendars)。
双认证通道:
- Basic 认证(Nextcloud、iCloud、通用服务器)
- Google OAuth2 设备码流程(headless 友好)+ 刷新令牌自动续期、安全存储
- 凭据来自环境变量 或 dsh 凭据服务(ctx.credentials)或 本机 chmod-0600 文件;绝不写入日志(redact() 会屏蔽所有已解析的密钥)。

2. RRULE 展开与单实例编辑:自研 RFC 5545 递归规则引擎,覆盖 FREQ(SECONDLY…YEARLY)、INTERVAL、COUNT、UNTIL(UTC 与本地)、 BYDAY(含序数)、BYMONTH、BYMONTHDAY、BYYEARDAY、BYWEEKNO、 BYSETPOS、WKST、BYHOUR/BYMINUTE/BYSECOND,以及 EXDATE、RDATE。
编辑或删除单个实例通过写入 RECURRENCE-ID override(删除即 STATUS:CANCELLED)实现,绝不改动系列主事件。

3. 中文偏置:农历换算(天文算法、完整覆盖 2000–2100)、中国节假日(春节/清明/端午/中秋/元宵/七夕/重阳/除夕/元旦/劳动节/国庆节)、以立春为界的干支与生肖、默认 Asia/Shanghai 时区;cal_remind 生成的提醒计划可直接喂给 dsh 的 session-local schedule_create。

4. 冲突检测:按时段(含全天与递归实例)检测事件重叠,并返回重叠区间;更新时可排除自身。

5. 时区处理:内嵌零依赖时区引擎(当代规则、2000–2100),正确处理夏令时;墙钟时间 ↔ UTC 换算(含歧义/缺失时间的确定性约定);往返序列化保留 TZID。

6. 工具链:ctx.tools 下的 dsh 工具(cal_list、cal_get、 cal_create、cal_update、cal_delete、cal_search、cal_conflicts、 cal_holidays,另加 cal_calendars、cal_remind),以及独立 CLI dsh-calendar。

目录结构

| 文件 | 作用 |
| package.json | npm 清单,含 dsh.bundle.patch 与 peer 依赖 |
| cordis.patch.yml | 配置层,挂载 bundle 入口 |
| src/index.ts | dsh 插件入口:name / inject / Config / apply |
| src/service.ts | 工具与 CLI 共用的高层操作 |
| src/tools.ts | cal_ 工具定义 |
| src/credentials.ts | 密钥解析 + 脱敏 |
| src/dav/ | CalDAV 客户端、OAuth2(Google 设备码)、XML、存储 |
| src/core/ | 时区、iCalendar、RRULE、递归、冲突、农历 |

零运行时依赖;peerDependencies(@deepseek-ai/cordis、 @deepseek-ai/dsh-tools、@deepseek-ai/schemastery)仅入口模块使用,由 dsh 运行时提供。

安装并接入 dsh

前提:已有一个可用的 dsh profile。

1. 构建 bundle(生成 lib/)
npm install
npm run build

2. 安装到你的 dsh profile
dsh plugin --profile add ./calendar

上述命令将该目录以 pnpm 链接进 profile 并追加到 dsh.profile.bundles,dsh 随后通过 cordis.patch.yml(id: calendar, name: dsh-calendar)挂载入口,注册 cal_ 工具。

快速迭代也可直接打补丁层:

dsh --profile --patch ./cordis.patch.yml

(若是通过 git/包方式安装而非本地目录,请先 npm run build——清单发布的是构建产物 lib/。)

配置

通过 bundle 的 Config 模式(在 patch / profile overlay 中):

- insert:
- id: calendar
name: dsh-calendar
config:
defaultTimezone: Asia/Shanghai
serverUrl: https://nextcloud.example.com/remote.php/dav/
或 calendarUrl: https://nextcloud.example.com/remote.php/dav/calendars/me/personal/ authMode: basic # basic | google

也可用环境变量 / dsh 凭据服务(见下)。

凭据(绝不写日志)

| 密钥 | 含义 |
| CALDAV_URL | 完整日历集合 URL(Basic) |
| CALDAV_USERNAME / CALDAV_PASSWORD | Basic 凭据 |
| GOOGLE_CLIENT_ID | Google OAuth 客户端 id |
| GOOGLE_CALDAV_REFRESH_TOKEN | 长效刷新令牌(见下) |

可写入环境变量、dsh 凭据服务(credentialRef 名称与上表一致,如
credentialRef('CALDAV_PASSWORD')),或 CLI 的本机
.calendar-credentials.json(0600)。解析优先级:环境变量 → dsh 凭据服务 → 本机存储。

Google OAuth(设备码流程)

dsh-calendar auth google --device --client-id

会打开 URL 完成授权;刷新令牌保存到安全存储。服务端在令牌临近过期时自动刷新。

工具(ctx.tools)

| 工具 | 说明 |
| cal_list | 窗口内事件(含墙钟/UTC 时间) |
| cal_get | 单个系列及其具体出现 |
| cal_create | 创建(支持 RRULE/EXDATE/RDATE/全天)+ 冲突检查 |
| cal_update | 更新整个系列,或通过 recurrenceId 更新单个实例 |
| cal_delete | 删除系列,或仅删除单个实例(写入 CANCELLED override) |
| cal_search | 标题/描述/地点文本搜索 |
| cal_conflicts | 检查拟定时段(含递归)的重叠 |
| cal_holidays | 近期中国节假日 + 今日干支/生肖 |
| cal_calendars | 列出可访问的日历 |
| cal_remind | 提醒计划,按 dsh schedule_create 格式输出 |

提醒联动:dsh 的 schedule 表面刻意只面向模型(schedule_create / schedule_list / schedule_delete)。cal_remind 展开事件后按实例返回 { at: { date, time, time_zone }, prompt }——直接传给 schedule_create 即可按日历时区注册 session 本地提醒。

CLI

dsh-calendar list [--start "2026-01-01" --end "2026-01-31" --tz Asia/Shanghai]
dsh-calendar get
dsh-calendar create --summary "团队周会" --start "2026-03-02 10:00" --end "2026-03-02 11:00" \
--rrule "FREQ=WEEKLY;COUNT=4"
dsh-calendar update --summary "改名" --recurrence-id "2026-03-09 10:00" --start "2026-03-09 15:00" dsh-calendar delete [--recurrence-id "2026-03-09 10:00"] dsh-calendar search "meeting" dsh-calendar conflicts --start "2026-06-01 14:00" --end "2026-06-01 15:00" dsh-calendar holidays --days 60 dsh-calendar calendars dsh-calendar remind --before 30m dsh-calendar auth google --device dsh-calendar auth status

若工作目录存在 .env,会先加载后再解析凭据。

时区模型

引擎内嵌常用时区的当代规则(上海、东京、首尔、伦敦、巴黎、柏林、纽约、芝加哥、洛杉矶、悉尼、奥克兰等)。换算约定:

- 墙钟(TZID)↔ UTC,夏令时确定性处理:
- 重叠(秋季,同一墙钟出现两次)取第一次出现(较大偏移);
- 缺口(春季,墙钟不存在)按时钟前移越过缺口。
- 全天日期按日期存储,在事件/默认时区的午夜解释。
- RRULE 实例在 DTSTART 的墙钟表示上展开,因此 09:00 的每周会议在夏令时切换前后始终保持在 09:00。

农历

采用天文算法(Meeus 截断新月级数与太阳黄经级数)而非查表,因此2000–2100 全程由算法覆盖,含闰月(含著名的 2033 闰十一月)。测试用例钉住了 2000–2100 的春节日期、已知闰月(2001–2031)以及节假日日期(端午/中秋/清明)。

开发

npm install
npm test # vitest:167 个用例(RRULE 向量、DST、农历、冲突、CalDAV mock)
npm run typecheck
npm run build # 编译到 lib/

测试使用进程内 mock CalDAV 服务器(test/helpers/mockCaldav.ts)与 RFC 5545 示例向量,无需联网。

许可证

MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓JohnXu22786/calendar
分享 · DeepSeek Harness Hub
JohnXu22786/calendar

连接 CalDAV 管理日程,自动识别农历节假日并检测冲突

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部