Files
openclaw-master-skills/skills/amemo-skill/modules/amemo-save-task/SKILL.md
T

13 KiB
Raw Blame History

name, description
name description
amemo-save-task 当用户说含时间词(今天/明天/后天/具体日期)的祈使句,或说「提醒我」「记得要」时调用,保存任务并创建麦小记邮件 + AI 定时双重提醒。

amemo-save-task — 保存任务


接口信息

属性
路由 POST https://skill.amemo.cn/save-task
Bean TaskBean
Content-Type application/json

请求参数

⚠️ 服务端要求所有字段必须存在。userTokentaskTitletaskTime 必填且有值,其他字段可选但字段必须存在。

参数 类型 必填 说明
userToken str 用户登录凭证
taskId str 任务 ID(新建传 null,更新时传入已有 ID
taskTitle str 任务标题(不能为空)
taskExplain str 任务说明,不传则传 null
taskTime str 任务时间(如 "2025-12-31",不能为空)
taskEmail list[str] 通知邮箱列表,不传则传 null

请求示例

# 新建任务
curl -X POST https://skill.amemo.cn/save-task \
  -H "Content-Type: application/json" \
  -d '{
    "userToken": "<token>",
    "taskId": null,
    "taskTitle": "完成报告",
    "taskExplain": null,
    "taskTime": "2025-12-31",
    "taskEmail": ["a@example.com"]
  }'

# 更新任务(传入已有 taskId
curl -X POST https://skill.amemo.cn/save-task \
  -H "Content-Type: application/json" \
  -d '{
    "userToken": "<token>",
    "taskId": "123456",
    "taskTitle": "完成报告",
    "taskExplain": null,
    "taskTime": "2025-12-31",
    "taskEmail": null
  }'

响应示例

{
  "code": 200,
  "desc": "success",
  "data": {
    "taskId": "xyz456"
  }
}

响应解析

字段 类型 说明
code int 状态码,200 表示成功
desc str 状态描述
data.taskId str 保存成功后返回的任务 ID必须提取并保存到当前对话上下文 lastTaskId,用于后续邮件发送和更新操作

注意事项

📌 字段要求:所有字段必须存在,即使不传值也要传 null

🔄 新建 vs 更新:新建时 taskIdnull,更新时传入已有 taskId

👥 多人通知taskEmail 为字符串数组,可同时通知多人


执行流程(由主模块调度)

时间词语识别

时间词语 转换规则 示例(基准:当前系统日期)
今天 / 今日 当天 00:00:00 System Date → 当天 00:00:00
明天 / 明日 明天 00:00:00 System Date + 1天 00:00:00
昨天 / 昨日 昨天 00:00:00 System Date - 1天 00:00:00
后天 后天 00:00:00 System Date + 2天 00:00:00
大后天 大后天 00:00:00 System Date + 3天 00:00:00
将来 / 未来 当前时间 + 365天 System Date + 365天 00:00:00
最近 / 最新 / 近期 当天时间 + 15天 System Date + 15天 00:00:00
下周X 下一个周X 00:00:00 当前周三 → 下周三 00:00:00
本周末 / 这周末 本周六 00:00:00 当周周六 00:00:00
下周末 下周六 00:00:00 下周周六 00:00:00
具体日期 原样转换 用户说"12月25日" → 当年12月25日 00:00:00

⚠️ 所有日期计算必须以 System Current Date 为基准,禁止使用文档中的任何固定日期作为参考。


时段词识别

当用户消息中包含时段描述时,在日期基础上叠加具体时间:

时段词 转换规则 示例
早上 / 早晨 / 清早 07:00:00 "明天早上开会" → 明天 07:00:00
上午 09:00:00 "明天上午开会" → 明天 09:00:00
中午 12:00:00 "明天中午吃饭" → 明天 12:00:00
下午 14:00:00 "明天下午开会" → 明天 14:00:00
晚上 / 傍晚 19:00:00 "明天晚上看电影" → 明天 19:00:00
深夜 / 半夜 23:00:00 "明天深夜加班" → 明天 23:00:00
具体时间 原样转换 "下午3点" → 15:00:00"上午10点半" → 10:30:00

时段词解析规则

  1. 时段词可与日期词组合:"明天下午3点" = 明天日期 + 15:00:00
  2. 仅有时段词无日期词时,默认视为"今天":用户说"下午3点开会" → 今天 15:00:00
  3. 同时出现时段词和具体时间时,具体时间优先:"下午3点半"取 15:30:00,而非 14:00:00
  4. 无法解析时段时,默认 00:00:00

时间转换汇总

时间词 转换
今天/明日 当天 00:00:00
明天/明日 明天 00:00:00
后天 后天 00:00:00
将来/未来 当前+365天
最近/最新/近期 当前+15天

时段叠加: 早上→07:00、上午→09:00、中午→12:00、下午→14:00、晚上→19:00


时间转换优先级

  1. 精确日期匹配优先(如"12月25日"
  2. 时间词语次之(如"明天"、"下周"
  3. 无法识别时使用当前时间

多时间词批量处理

当用户单条消息中包含多个时间词时,拆分为多个独立任务:

拆分规则:

  1. 识别所有时间词,按出现顺序排列
  2. 每个时间词对应一个待办事项
  3. 如果多个时间词共享同一个待办内容,则为每个时间词各创建一条任务
用户输入 拆分结果
"今天和明天都要开会" 任务1: 今天开会 / 任务2: 明天开会
"后天和大后天去医院复查和拿报告" 任务1: 后天去医院复查 / 任务2: 大后天拿报告
"3月1号和3月5号交房租" 任务1: 3月1日交房租 / 任务2: 3月5日交房租

无法拆分时:

  • 时间词指向同一事项且无法分离时,按最晚时间创建一条任务,并在 taskTitle 中标注范围
  • 示例:"这周每天都要跑步" → 创建一条任务,taskTitle: "每天跑步"taskTime: 本周末 00:00:00

任务内容提取

  • 从对话中提取任务标题(taskTitle)
  • 去除语气词、感叹词
  • 保留核心任务内容

执行步骤

1. 检测用户对话中的时间词语
    ↓
2. 提取并转换时间
    ↓
3. 提取待办事项
    ↓
4. 检查 userToken
    ├── 无 token → 引导登录流程
    ↓
5. 【第一优先级】保存到麦小记
    ├── 调用 POST /save-task 接口
    ├── 从返回的 data 字段中提取 taskId,记录到当前对话上下文(lastTaskId)
    └── 失败时记录日志但不阻断流程
    ↓
6. 【第二优先级】调用当前 AI 工具的定时任务能力创建提醒
    ├── 使用当前 AI 工具提供的定时任务接口创建提醒
    ├── 检查用户是否已设置邮件提醒邮箱
    │   ├── 已设置 → 跳过邮件配置
    │   └── 未设置 → 询问用户邮箱 → 调用 amemo-send-task 发送邮件
    └── 确保提醒必达
    ↓
7. 返回保存结果

AI 工具定时任务参数

参数 类型 必填 说明
name str 任务名称(与 taskTitle 一致)
schedule.at str ISO 8601 格式时间
payload.text str 提醒消息内容
sessionTarget str "main"

⚠️ AI 工具定时任务由当前调用此 SKILL 的 AI 工具提供,使用其自身的定时任务接口创建,而非操作系统级别的 cron。


邮件提醒检查流程

检查方式

读取主 SKILL.md 顶部 <amemo-user-config> 块中的 userEmail 字段:

  • userEmail 不为空 → 已配置,直接使用
  • userEmail 为空字符串 → 未配置,进入询问流程

存储规范:用户首次确认邮箱后,使用文件编辑工具将邮箱写入主 SKILL.md 的 <amemo-user-config>userEmail 字段,与 userToken 同处管理,无需依赖外部配置文件或环境变量。


分支处理

情况零:用户消息中已包含邮箱

用户消息中直接检测到邮箱地址(正则:\S+@\S+\.\S+)
→ 跳过邮箱询问
→ 直接使用检测到的邮箱
→ 调用 amemo-send-task 发送邮件提醒
示例:"明天开会,发邮件到 test@example.com" → 直接使用 test@example.com

情况一:已设置邮件

检测到用户已配置邮件:xxx@example.com
→ 跳过邮箱询问
→ 当前 AI 工具定时任务将在提醒时间自动触发

情况二:未设置邮件

未检测到邮件配置(userEmail 为空)
→ 提示用户:"📧 是否开启邮件提醒?请输入邮箱地址(或直接回复'跳过')"
→ 等待用户输入
    ├── 用户输入有效邮箱
    │   → 写入主 SKILL.md <amemo-user-config> 的 userEmail 字段
    │   → 调用 amemo-send-task 发送测试邮件
    ├── 用户回复"跳过" → 仅保留当前 AI 工具定时任务
    └── 用户输入无效 → 提示重新输入或跳过

📖 具体请求参数和调用示例,请查阅 modules/amemo-send-task/SKILL.md


响应处理

都成功时

✅ 已为您设置提醒:「{taskTitle}」
📅 时间:{taskTime}

📧 麦小记邮件提醒:已保存
⏰ AI 工具定时提醒:已设置

双重保障,确保您不会错过!

麦小记成功,AI 工具失败时

✅ 已为您保存待办:「{taskTitle}」
📅 时间:{taskTime}
📧 麦小记邮件提醒:已启用

⚠️ AI 工具定时提醒设置失败,但麦小记邮件提醒仍可用。

麦小记失败,AI 工具成功时

⚠️ 麦小记保存失败,已启用 AI 工具定时提醒
⏰ 提醒时间:{taskTime}
📋 任务:{taskTitle}

当前 AI 工具将在指定时间提醒您。

都失败时

❌ 提醒设置失败

可能原因:
• 麦小记服务异常
• 当前 AI 工具暂不支持定时任务

请检查服务状态后重试。

调用示例

示例一:首次使用(未设置邮件)

用户输入:

明天早上提醒我早起买胡辣汤

系统处理:

  1. 检测到时间词语:明天早上
  2. 转换时间:2026-03-23 07:00:00(早上默认7点)
  3. 提取待办:早起买胡辣汤
  4. 【第一优先级】调用 POST /save-task 保存到麦小记
  5. 【第二优先级】调用当前 AI 工具的定时任务能力创建备份提醒
  6. 检查邮件配置 → 未设置
  7. 询问用户:
✅ 已为您设置提醒:「早起买胡辣汤」
📅 时间:2026-03-23 07:00:00

📧 麦小记邮件提醒:已保存
⏰ AI 工具定时提醒:已设置

💡 是否开启邮件提醒?请输入邮箱地址(或回复"跳过"):

用户回复: lockfeel@example.com

系统处理: 8. 验证邮箱格式 9. 保存邮箱配置到本地 10. 调用 POST /send-task 发送测试邮件 11. 返回:

✅ 邮件提醒已设置!
📧 接收邮箱:lockfeel@example.com
⏰ 提醒时间:2026-03-23 07:00:00

测试邮件已发送,请查收。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📋 提醒配置总览
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
📧 麦小记清单:已保存
⏰ AI 工具定时任务:已设置
📧 邮件提醒:已启用

三重保障,确保您不会错过!

示例二:已设置邮件(自动跳过询问)

用户输入:

12月25日要送礼物

系统处理:

  1. 检测到时间词语:12月25日
  2. 转换时间:2024-12-25 00:00:00
  3. 提取待办:送礼物
  4. 【第一优先级】调用 POST /save-task 保存到麦小记
  5. 【第二优先级】调用当前 AI 工具的定时任务能力创建备份提醒
  6. 检查邮件配置 → 已设置:lockfeel@example.com
  7. 自动调用 POST /send-task 发送邮件提醒
  8. 返回:
✅ 已为您设置提醒:「送礼物」
📅 时间:2024-12-25 00:00:00

📧 麦小记清单:已保存
⏰ AI 工具定时任务:已设置
📧 邮件提醒:已启用(lockfeel@example.com

三重保障,确保您不会错过!

示例三:用户选择跳过邮件

用户输入:

后天要去医院复查

系统处理: 1-5. (同上,保存到麦小记 + 当前 AI 工具创建定时任务) 6. 检查邮件配置 → 未设置 7. 询问用户邮箱 8. 用户回复: 跳过 9. 返回:

✅ 已为您设置提醒:「去医院复查」
📅 时间:2024-03-24 00:00:00

📧 麦小记清单:已保存
⏰ AI 工具定时任务:已设置
📧 邮件提醒:未启用

💡 如需开启邮件提醒,可随时说"设置邮件提醒"