Add --rrule flag to send with DTSTART/BYDAY validation (RFC 5545). Add event list (via khal) and event delete (safe single-event removal). Document safety rules from 2026-03-25 incident: always dry-run recurring events, never rm .ics files, space out SMTP sends.
112 lines
3.7 KiB
Markdown
112 lines
3.7 KiB
Markdown
# MEMORY.md - 有路的长期记忆
|
||
|
||
_这份文件记录持续性项目和重要状态,跨会话保留。_
|
||
|
||
## 📝 重要规则
|
||
|
||
### 邮件发送规则(v2)
|
||
- **youlu@luyanxin.com → mail@luyx.org**: 直接发送,无需确认(用户 SimpleLogin 别名)
|
||
- 其他所有对外邮件: 仍需确认
|
||
|
||
### 代码审查规则
|
||
写/改/部署代码前,必须先确认:
|
||
1. 为什么需要?
|
||
2. 改了什么功能?
|
||
3. 文件放在哪里?
|
||
|
||
---
|
||
|
||
## 👤 用户背景
|
||
|
||
见 `USER.md`
|
||
|
||
---
|
||
|
||
## 🎯 活跃项目
|
||
|
||
### 1. 邮件自动处理系统
|
||
**状态**: 运行中
|
||
**创建**: 2026-02-27
|
||
**更新**: 2026-03-05(基于学习机制优化)
|
||
**配置**:
|
||
- 目录: `~/.openclaw/workspace/scripts/email_processor/`
|
||
- Cron: 每天 08:30 / 17:00(PST)
|
||
- Runner: uv + isolated subagent
|
||
- LLM: Ollama (kamekichi128/qwen3-4b-instruct-2507)
|
||
- 置信度阈值: 85%(需要同一发件人+标签组合至少9次一致决策才自动执行)
|
||
|
||
**工作原理**:
|
||
1. **LLM 分类**: 对每个未读邮件,LLM 建议一个操作(delete/archive/keep/mark_read)并分配 3-5 个标签
|
||
2. **置信度计算**: 基于历史决策匹配 `(发件人邮箱, 标签)` 签名,计算该操作的历史一致率
|
||
3. **阈值判断**:
|
||
- 置信度 ≥ 85% → 自动执行操作
|
||
- 置信度 < 85% → 加入待处理队列等待人工审核
|
||
|
||
**关键概念**:
|
||
- 没有固定的学习期,置信度随历史积累逐步增长
|
||
- 每个匹配历史决策增加 10% 置信度上限(1次匹配=10%,9次=90%)
|
||
- 新/未知发件人从 50% 起步
|
||
|
||
**Tag 分类(14个)**: receipt, billing, shipping, promotion, newsletter, security, social, reminder, confirmation, alert, personal, account, subscription, travel
|
||
|
||
---
|
||
|
||
### 2. 工作区自动备份
|
||
**状态**: 运行中
|
||
**创建**: 2026-03-06
|
||
**更新**: 2026-03-24(修复:agentTurn → systemEvent)
|
||
**配置**:
|
||
- Cron ID: `53c0b2a6-e3b3-4a1d-b2a8-66e216fad753`
|
||
- Schedule: 每天 00:00(PST)
|
||
- Target: `main` session(通过 heartbeat 触发)
|
||
- Payload: `systemEvent` 直接执行 shell
|
||
- 远程: `ssh://git@luyanxin.com:8103/lyx/youlu-openclaw-workspace.git`
|
||
|
||
**功能**:
|
||
- 自动提交所有变更到 git(包括未追踪文件)
|
||
- 自动推送到 origin/main,**无需确认**
|
||
- 无变更时静默(无通知)
|
||
- 仅出错时报告
|
||
|
||
---
|
||
|
||
### 3. 日历邀请 + CalDAV 同步
|
||
**状态**: 运行中
|
||
**创建**: 2026-03-18
|
||
**更新**: 2026-03-25(添加 RRULE 支持 + 事件管理 + 安全规则)
|
||
**配置**:
|
||
- 技能: `~/.openclaw/workspace/skills/calendar/`
|
||
- 日历数据: `~/.openclaw/workspace/calendars/` (home/work/tasks/journals)
|
||
- CalDAV: Migadu (`cdav.migadu.com`),通过 vdirsyncer 同步
|
||
- 查看日历: khal
|
||
- 待办管理: todoman(`todo` CLI)
|
||
- 运行方式: `uv run`(依赖 `icalendar` 库)
|
||
|
||
**功能**:
|
||
- 发送日历邀请,支持周期性事件(`--rrule`)
|
||
- 接受/拒绝/暂定回复邀请(回复给 organizer)
|
||
- 事件管理(`event list` / `event delete`)
|
||
- VTODO 待办管理(add/list/edit/complete/delete/check)
|
||
- 发送/回复/待办操作后自动 `vdirsyncer sync` 同步到 CalDAV
|
||
- 心跳定期同步日历
|
||
|
||
**⚠️ 重要安全规则**(2026-03-25 事故教训):
|
||
- 周期性邀请**必须先 `--dry-run`** 验证 ICS 内容
|
||
- `--rrule` 的 `BYDAY` 必须和 `--start` 日期的星期匹配(工具会自动校验)
|
||
- **绝不用 `rm` 删日历 .ics 文件**,只用 `event delete --match`
|
||
- 连续发多封邮件时,每封间隔 10 秒以上(Migadu SMTP 限频)
|
||
|
||
---
|
||
|
||
## 📁 项目文件索引
|
||
|
||
| 项目 | 位置 |
|
||
|------|------|
|
||
| 邮件处理器 | `~/.openclaw/workspace/scripts/email_processor/` |
|
||
| 日历/待办 | `~/.openclaw/workspace/skills/calendar/` |
|
||
| 日历数据 | `~/.openclaw/workspace/calendars/` (home=事件, tasks=待办) |
|
||
|
||
---
|
||
|
||
_最后更新: 2026-03-25_
|