Desktop Calendar Tauri — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Desktop Calendar Tauri (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
面向人类用户和 AI Agent 的桌面日历应用。项目基于 Tauri 2 + React + SQLite 构建,内置本地 MCP Server,让 Agent 可以通过标准 MCP 工具读写同一份日历数据。
核心理念:人类通过桌面 GUI 管理日程,Agent 通过 MCP 协议管理日程,两者共享同一份 SQLite 数据库,改动会实时同步到界面。
桌面日历
MCP / Agent 能力
http://127.0.0.1:18765/mcp| 工具 | 说明 |
|---|---|
list_events | 按时间范围查询事件,返回事件列表 Widget |
get_event | 查询单个事件详情,返回详情 Widget |
create_event | 创建新事件 |
update_event | 更新已有事件,支持 clear_fields 清空备注、地点、链接 |
delete_event | 软删除事件 |
get_free_slots | 按 YYYY-MM-DD 查询指定日期内的空闲时间段,返回空闲时间 Widget |
应用启动后会自动启动 MCP HTTP 服务:
{
"mcpServers": {
"desktop-calendar": {
"type": "http",
"url": "http://127.0.0.1:18765/mcp"
}
}
}健康检查:
http://127.0.0.1:18765/health| 层级 | 技术 |
|---|---|
| 前端 | React 18, TypeScript, Vite 6 |
| UI | Phosphor Icons, Geist Sans/Mono, CSS variables |
| 状态管理 | Zustand |
| 桌面壳 | Tauri 2 |
| 数据库 | SQLite, rusqlite |
| MCP | rmcp Streamable HTTP Server, MCP Apps Widgets |
| 测试 | Cargo test, Vitest |
npm install
# 前端开发服务
npm run dev
# 启动 Tauri 桌面应用
npm run tauri dev
# 前端构建
npm run build
# Rust 测试
cd src-tauri
cargo test当前主要在 Windows 上开发和验证。
| 平台 | 状态 | 说明 |
|---|---|---|
| Windows | 已验证 | 托盘、透明窗口、右下角定位、单实例、MCP Server 均已验证 |
| macOS | 理论兼容,待实测 | Tauri/React/SQLite/MCP 代码基本跨平台,但托盘菜单栏图标、Dock 行为、透明置顶窗口、避开 Dock/Menu Bar 仍需在 macOS 上验证 |
| Linux | 未验证 | 核心依赖跨平台,但托盘和透明窗口行为依赖桌面环境 |
macOS 发布前建议补充:
.app 图标、签名、notarization、entitlementsdesktop-calendar-tauri/
├─ src/ # React 前端
│ ├─ components/
│ │ ├─ Calendar/ # EventCard, EventDialog, EventTooltip
│ │ ├─ Common/ # ErrorBoundary, StatusBar, DiagnosticPanel
│ │ ├─ WeekView/ # 周视图组件
│ │ └─ Widget/ # 悬浮球 Widget
│ ├─ hooks/ # 窗口、拖拽、周导航等 hooks
│ ├─ stores/ # Zustand store
│ ├─ utils/ # 日期、布局、窗口工具
│ ├─ constants/ # 窗口尺寸、事件颜色
│ └─ types/ # TypeScript 类型
├─ src-tauri/ # Tauri / Rust 后端
│ ├─ src/
│ │ ├─ commands/ # Tauri IPC 命令
│ │ ├─ db/ # SQLite schema, migrations, repository
│ │ ├─ mcp/ # MCP Server, tools, resources, widgets
│ │ └─ models/ # Rust 数据模型
│ └─ tests/ # Rust 集成测试
├─ docs/ # 文档
├─ package.json
└─ README.md核心事件表:
CREATE TABLE events (
id TEXT PRIMARY KEY,
title TEXT NOT NULL,
description TEXT,
start_time INTEGER NOT NULL,
end_time INTEGER NOT NULL,
timezone TEXT DEFAULT 'Asia/Shanghai',
is_all_day INTEGER DEFAULT 0,
rrule TEXT,
rrule_until INTEGER,
exdates TEXT,
status TEXT DEFAULT 'confirmed',
color TEXT DEFAULT '#3B82F6',
event_type TEXT DEFAULT 'default',
location TEXT,
url TEXT,
created_by TEXT DEFAULT 'human',
created_at INTEGER NOT NULL,
updated_at INTEGER NOT NULL,
deleted_at INTEGER DEFAULT NULL
);Asia/Shanghai 解读:日期时间为 YYYY-MM-DD HH:mm,日期为 YYYY-MM-DDcreate_event 会拒绝相同时间相同标题的重复事件,并限制任意时间段最多 2 个事件127.0.0.1text/html;profile=mcp-appcargo test 和 npm run buildMIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.