跳到正文
安时安其时,成其事
下载
插件

安时不打算自己实现每一个外部系统。

飞书、邮箱、Apple 日历、港股新股,这些都不在核心里——它们是插件。 核心只定义扩展点、权限和展示形态,然后不为任何具体插件写特例。

10 个官方插件7 个扩展点独立子进程内置市场

崩了不影响你的数据

插件是独立子进程。卡住、崩溃、拉不到数据,本地读写都不受影响—— 同步失败绝不影响本地写库,这是 local-first 的底线。

不能自己画界面

插件给的是「(标签, 值, 语义档位)」,颜色、字体、排版、项数上限全归宿主。 没有 HTML、没有 iframe、没有自定义布局——那个口子一开,插件的联网面就不可审计了。

个人数据默认不拉

涉及你个人数据的展示面(考勤、请假)默认关闭、逐个显式启用,关着的时候,安时根本不去调那个插件。拉一次本身就需要授权。

同步源

把外部系统的事搬进来

任务是双向的(完成状态会回写),日历目前是 pull-only——外部日历远端权威, 落成只读日历。安时不给外部日历加 push 通道。

飞书

任务同步日历同步通知渠道日历叠加

任务双向同步、日历与会议同步进日程,并把安时的提醒发到飞书(群机器人 Webhook 或你自己的单聊)。也能把考勤画到日历上——那部分默认关闭,要在日历侧栏里逐个显式打开。

VangelisHaha/yinian-plugin-feishu官方插件 · 从内置市场安装

飞书项目

任务同步

把飞书项目(Meegle)的排期同步进安时:一个工作项成一条任务,每个排期节点成一个排期块,段名(「中台开发」这类)印在条上。

VangelisHaha/yinian-plugin-feishu-project官方插件 · 从内置市场安装

邮箱

任务同步日历同步

IMAP 把你标记过的邮件同步成任务,会议邀请按 iMIP 标准落成只读日历。一个实例一个邮箱,可以挂多个。它不删邮件、不替你回复邀请,也不猜正文里写的时间。

VangelisHaha/yinian-plugin-mail官方插件 · 从内置市场安装

Apple 日历

日历同步

把 macOS 上的日历同步进安时,落成只读日历(外部日历远端权威,安时不往回写)。

VangelisHaha/yinian-plugin-apple-calendar官方插件 · 从内置市场安装

港股新股

日历同步

把港股新股的认购截止、公布结果、暗盘与上市四个时点同步成日历事件。一个「插件不必是同步某个账号」的例子:它同步的是公开数据。

VangelisHaha/yinian-plugin-hk-ipo官方插件 · 从内置市场安装
同步后端

三个后端,挑一个就行

它们都只负责把安时已经加密好的字节搬到远端再搬回来。 合并判断全在核心,插件看不懂内容,也不参与任何冲突决策。

自建 CouchDB 同步

多端同步的传输后端:把安时加密后的字节搬到你自己的 CouchDB。带实时订阅,手机上勾完一个任务,电脑上一两秒内就变。只搬字节,看不懂内容。

VangelisHaha/yinian-plugin-couchdb

WebDAV 同步

多端同步的传输后端:任意 WebDAV(坚果云 / Nextcloud / 群晖)。轮询,没有实时订阅,所以比 CouchDB 慢一档;不需要自己跑服务。

文件夹同步

多端同步的传输后端:把加密后的字节写进一个本地目录,由 iCloud Drive / Dropbox / OneDrive 客户端搬到其他设备。不需要服务器也不需要账号——代价是「另一台设备什么时候看到」取决于那个云盘客户端。

后端要不要自己跑服务时效代价
CouchDB要(自建)≤ 1 秒唯一带实时订阅的:远端一有新对象就通知本机。要自己维护一个服务。
WebDAV不要(坚果云 / Nextcloud / 群晖)按轮询间隔没有订阅,只能轮询,所以比 CouchDB 慢一档。
本地文件夹完全不要几秒 – 几十秒写进 iCloud Drive / Dropbox / OneDrive 的同步目录,不需要服务器也不需要账号。 「另一台设备什么时候看到」取决于那个云盘客户端。

无论哪个后端,加密口令都存在本机系统钥匙串里,永不同步、永不上传。 代价是:口令丢了远端数据就解不开(本地数据不受影响)。

系统插件

默认就该有,但需要独立更新的东西

中国法定节假日

系统插件日期标记

系统插件:随应用分发、首次启动自动装好、不受插件总开关约束、不可卸载(只能停用)。几天去上游拉一次放假安排,内置数据兜底,完全离线也能用。放假安排是按年公布、会过期的数据,做成插件才能独立更新。

系统插件的身份只能由宿主判定,manifest 里声明无效—— 否则一行声明就能绕过插件总开关。

扩展点

插件能接到哪几处

同步源sync

把外部系统的任务或日程搬进安时。task 是双向的(完成状态会回写),event 目前是 pull-only——外部日历远端权威,落成只读日历。

通知渠道notify

提醒到点时除了本机系统通知,还能发到别处。内置系统通知与第三方渠道走的是同一条路径。

同步后端replica

多端同步的传输层。插件只负责把一串已经加密好的字节搬到远端再搬回来,合并判断全在核心,插件看不懂内容。

日期标记dayMarks

给某一天贴一个短标签(节假日、纪念日)。这是公开知识——谁算都一样,所以装上即生效。

日历叠加层calendarOverlay

往月视图格子右上角贴角标、往视图右上角贴汇总、往侧栏负载卡里加几行统计。这是你的个人数据(打卡、请假),所以默认关闭、逐个显式启用,关着的时候,安时根本不去调那个插件。

生命周期钩子hooks

订阅 task.completed / task.reopened / task.updated 这类事件,用来把「这条完成了」回写到外部系统。它是扩展点里唯一一个「只收不画」的:不贡献任何界面,所以也没有展示面的开关。

浮窗小组件widget

往浮窗那一列卡片里加一张。插件给的是「(标签, 值, 语义档位)」,颜色、字体、排版、项数上限全归宿主。

开发者

自己写一个

插件是普通的 TypeScript 进程,通过 stdio 走 RPC。manifest 里声明能力与权限, 配置表单由 schema 驱动、宿主用安时自己的控件渲染,所以你不用写任何界面代码。

官方插件模板

从这里开始写你自己的插件:manifest、RPC 骨架、schema 驱动的配置表单、日志与投递统计都已经接好。

VangelisHaha/yinian-plugin-template

插件市场索引

一个 JSON 索引加一份 schema。应用内的市场读它,支持缓存与离线回退、 本地搜索、从 Release 安装、手动检查更新。

VangelisHaha/yinian-plugins

manifest 字段、RPC 方法、权限清单与 schema 规范的完整参考在模板仓库的 README 里, 模板本身跑起来就是一个能装进安时的可用插件。