个人日程管理
v1.0.0个人日程管理 Skill - 自然语言设置、自动提醒、重复日程、Web界面、导入导出
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
Name, description, and code files align: Python scripts implement natural-language parsing, local SQLite storage, web UI, import/export, and reminder creation. Requiring only python (and Flask at runtime) is proportionate to the stated purpose.
Instruction Scope
Runtime instructions are generally scoped to local operations (start web server, run scripts, edit data/config.json). However the reminder flow is inconsistent: some code (CronManager and scheduler) creates local JSON-based cron/reminder job records and constructs commands to call send_reminder.py, while check_reminders.py expects a database 'reminders' table that the rest of the code never creates — this mismatch can cause unexpected behavior. Also the skill relies on OpenClaw capturing printed output to deliver messages (Feishu), which means reminders are implicitly routed by platform behavior; that coupling should be explicit and understood by the user.
Install Mechanism
No install spec included; the SKILL.md asks only to pip install flask. All code is provided in the skill bundle, so nothing will be downloaded from external URLs during install — low install risk.
Credentials
The skill requests no environment secrets but embeds a default feishu_user_id in config/scheduler defaults (ou_669575f70b8b81dd5c431c4ed1ad41c4). If the user does not edit config.json, reminders may be marked to be sent to that external ID. Cron job entries and command strings are saved with that user ID. This is disproportionate/unexpected by default and could leak reminder content or metadata to an unintended recipient.
Persistence & Privilege
The skill is not always-enabled and does not request elevated platform privileges. It does persist state locally (scheduler.db, config.json, reminder_jobs.json, cron_jobs.json, backups). Creating local scheduled-job configuration files is expected for this functionality, but these files may contain commands and the recipient ID described above — check them if you install.
What to consider before installing
This package largely does what it says: a local scheduler with NL input, a web UI, and local reminders. Before installing or running it: 1) Inspect and edit data/config.json to remove or replace the default feishu_user_id (do not leave the bundled ID); 2) Search the skill data folder after running for reminder_jobs.json / cron_jobs.json and confirm no unexpected recipient IDs or commands are stored; 3) Be aware that reminders are delivered by the platform capturing printed output — verify OpenClaw's delivery behavior in a safe test (use a test account or disable sending) so private reminders are not forwarded to third parties; 4) Note the code inconsistency: check_reminders.py expects a 'reminders' DB table that is never created — reminders may be managed via JSON files instead; test reminder flows end-to-end to ensure behavior matches your expectations; 5) Run the skill locally in a sandboxed environment if possible and audit the files it writes (data/*.json, scheduler.db) before trusting it with sensitive calendar data.Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
📅 Clawdis
Binspython
latest
📅 个人日程管理 Skill
面向个人用户的智能日程管理工具,支持自然语言对话设置、自动提醒、重复日程、Web界面管理、导入导出。
✨ 功能特性
1. 自然语言设置日程
无需记住命令,像聊天一样设置日程:
明天下午3点开会
→ 创建日程:明天 15:00-16:00「开会」
明天上午9点半去出入境
→ 创建日程:明天 09:30-10:30「去出入境」
每周一上午10点团队例会
→ 创建重复日程:每周一 10:00-11:00「团队例会」
把明天3点的会议改到4点
→ 修改日程时间
删除明天下午3点的会议
→ 删除匹配日程
2. 自动提醒(无需手动设置)
创建日程时自动创建提醒任务:
- 默认提前 15 分钟提醒
- 通过飞书/其他渠道发送
- 支持自定义提醒时间
3. 重复日程
支持创建重复事件:
每周一上午10点例会- 每周重复每天下午5点下班打卡- 每天重复
4. 本地数据存储
- SQLite 数据库存储所有日程
- 数据完全本地,保护隐私
- 自动备份到
data/backups/
5. Web 界面管理
浏览器访问 http://localhost:8080:
- 月/周/日/列表视图
- 拖拽调整时间
- 点击创建/编辑
- 支持中英文切换
6. 导入/导出
支持 .ics 格式(与 iPhone/Google/Outlook 日历互通):
# 导出备份
python scripts/calendar_io.py export
# 导入日历
python scripts/calendar_io.py import mycalendar.ics
🚀 快速开始
安装依赖
pip install flask
配置
编辑 data/config.json:
{
"default_reminder_minutes": 15,
"feishu_user_id": "your_feishu_user_id"
}
使用
# 添加日程
python scripts/main.py "明天下午3点开会"
# 添加重复日程
python scripts/main.py "每周一上午10点例会"
# 修改日程
python scripts/main.py "把明天3点的会议改到4点"
# 删除日程
python scripts/main.py "删除明天下午3点的会议"
# 查询日程
python scripts/main.py list
# 启动 Web 界面
python scripts/main.py web
# 导出备份
python scripts/calendar_io.py export
📝 自然语言支持
创建日程
| 输入示例 | 解析结果 |
|---|---|
| 明天下午3点开会 | 明天 15:00-16:00「开会」 |
| 明天上午9点半去银行 | 明天 09:30-10:30「去银行」 |
| 后天晚上7点到9点吃饭 | 后天 19:00-21:00「吃饭」 |
| 3月15号全天出差 | 2026-03-15 全天「出差」 |
| 每周一上午10点例会 | 每周一 10:00-11:00「例会」 |
| 每天下午5点打卡 | 每天 17:00-18:00「打卡」 |
修改日程
| 输入示例 | 操作 |
|---|---|
| 把明天3点的会议改到4点 | 修改时间 |
| 把会议推迟30分钟 | 推迟30分钟 |
| 提前1小时 | 提前1小时 |
删除日程
| 输入示例 | 操作 |
|---|---|
| 删除明天下午3点的会议 | 删除匹配日程 |
| 取消后天的约会 | 删除匹配日程 |
🔔 提醒机制
创建日程时自动创建 OpenClaw 定时任务:
日程时间: 2026-03-07 09:30
提醒时间: 2026-03-07 09:15(提前15分钟)
定时任务: 15 9 7 3 *(cron表达式)
到时间自动发送飞书消息:
⏰ 日程提醒
📌 去出入境
🕐 03月07日 09:30
⏳ 还有 15 分钟
🌐 Web 界面
功能
- 月/周/日/列表视图切换
- 点击日期查看当日日程
- 点击 + 按钮添加日程
- 中英文语言切换
访问
python scripts/main.py web
# 浏览器访问 http://localhost:8080
📁 文件结构
personal-scheduler/
├── SKILL.md # 本文件
├── scripts/
│ ├── main.py # 主入口
│ ├── scheduler.py # 核心逻辑
│ ├── natural_language.py # 自然语言解析
│ ├── send_reminder.py # 发送提醒
│ ├── web_server.py # Web服务
│ └── calendar_io.py # 导入导出
├── web/
│ └── index.html # Web界面(支持中英文)
└── data/
├── config.json # 用户配置
├── scheduler.db # SQLite数据库
└── backups/ # 自动备份
⚙️ 配置说明
config.json
| 配置项 | 说明 | 默认值 |
|---|---|---|
| default_reminder_minutes | 默认提前提醒分钟数 | 15 |
| feishu_user_id | 飞书用户ID(用于发送提醒) | - |
| timezone | 时区 | Asia/Shanghai |
🛠️ 技术栈
- 后端: Python + Flask
- 数据库: SQLite
- 前端: HTML + CSS + JavaScript
- 定时任务: OpenClaw Cron
📄 License
MIT
Comments
Loading comments...
