amemo-skill 统一调度中心,专为 AI 工具链接麦小记 APP 而开发的技能包,专注于笔记、清单和健康数据的管理。当用户需要与麦小记服务交互时,必须使用此 skill 进行统一调度。 触发关键词:amemo、麦小记、笔记、note、memo、清单、todo、task、数据、data、AI 助手、mate、登录、验证码、查询记录。 自动保存笔记触发词:保存笔记、记下这一条、记录笔记、帮我记一下、保存备忘。 自动查询笔记触发词:查看我XXX相关的笔记、查找XXX相关的笔记、搜索我XXX相关的笔记。 自动查询任务触发词:查看我的清单、查询清单、我的待办、查看任务、查询任务、列出任务、搜索任务。 自动查询数据触发词:查看我的XXX数据、查找我的XXX数据、XXX数据怎么样(XXX为步数/睡眠/血氧/血压/心率/消耗)。 自动健康简报触发词:今日健康简报、今日健康总览、今日健康情况、健康简报、健康日报。 自动保存任务触发词:今天XXX、明天XXX、昨天XXX、后天XXX、将来XXX、未来XXX、最近XXX、最新XXX、近期XXX、今日XXX、明日XXX、昨日XXX、12月XX日XXX(具体日期)。 双保险提醒机制:检测到时间触发词时,【第一优先级】保存到麦小记(利用其邮件提醒功能),【第二优先级】创建系统定时任务并检查邮件配置。如未设置邮件,自动询问用户邮箱并调用 amemo-send-task 发送邮件提醒,确保提醒必达。 自动刷新记忆触发词:刷新助手记忆、初始化助手记忆、重置记忆。 自动保存记忆触发词:保存永久记忆、永久记住XXX、记住这个。 此 skill 会自动识别用户意图并调度对应子模块完成操作。
Resources
2Install
npx skillscat add lockfeel/amemo-skill Install via the SkillsCat registry.
amemo-skill — 统一调度中心
amemo-skill 是 AI 工具(Claude Code / Codex / OpenCode / OpenClaw 等)与 amemo 本地服务交互的统一入口。提供笔记管理、清单管理、健康数据查询、AI 助手记忆同步等功能。
基础配置
- Base URL:
https://skill.amemo.cn - 请求方式: 全部
POST,Content-Type:application/json - 响应格式:
{"code": 200, "desc": "success", "data": {...}}
注意:具体 API 请求示例和响应数据结构,请查阅对应子模块的 SKILL.md
用户配置管理
重要:此区域的 JSON 配置由系统自动维护,登录成功后会自动更新。
当前登录用户信息:
{
"userToken": "",
"userName": "SYSTEM",
"userPhone": "",
"loginAt": ""
}如果显示为示例数据(如 userName: "SYSTEM"),表示尚未登录或登录信息已过期,立即激活登录流程。
### 配置字段
| 字段 | 说明 |
|------|------|
| `userToken` | 用户认证令牌,所有 API 请求必需 |
| `userName` | 用户昵称,用于个性化提醒 |
| `userPhone` | 用户手机号,标识用户身份 |
| `loginAt` | 登录时间,判断登录是否过期 |
### 更新配置流程(自动执行)
用户登录成功后,**系统自动执行以下步骤**:
用户登录成功
↓
提取返回的 userToken, userName, userPhone
↓
读取 SKILL.md 文件内容
↓
定位到顶部 JSON 配置区域(json 和 之间)
↓
替换为新的登录信息:
{
"userToken": "{返回的userToken}",
"userName": "{返回的userName}",
"userPhone": "{返回的userPhone}",
"loginAt": "{当前时间}"
}
↓
写回 SKILL.md 文件
↓
发送个性化欢迎消息
**注意**:此步骤完全自动化,无需用户手动操作。登录成功后配置立即生效。
### 使用示例
**检查登录状态:**if userToken 为空:
执行登录引导流程
else:
使用 userName 打招呼:"欢迎回来,{userName}!"
**API 请求时:**
> 读取对应子模块的 SKILL.md 获取完整的请求参数和 curl 示例
## 安装后引导流程(Onboarding)
当用户首次安装或检测到未登录(无 userToken)时,自动执行以下引导:
### Step 1: 欢迎消息(自动发送)
👋 欢迎使用 amemo-skill!
我是你的智能笔记助手,可以帮你:
• 📝 保存和查询笔记
• ✅ 管理待办清单
• 📊 查看健康数据
• 🤖 同步 AI 记忆
请先完成登录,发送你的手机号:
示例:13800138000
### Step 2: 手机号提取与验证码发送
**用户输入示例:**
- "13800138000"
- "我的手机号是 138-0013-8000"
- "+86 138 0013 8000"
**系统自动处理:**
1. 提取手机号(正则:`1[3-9]\d{9}`)
2. 调用 `amemo-send-code` 发送验证码
3. 回复:已向 138****8000 发送验证码,请查收短信。
请输入 4-6 位验证码:
### Step 3: 验证码提取与登录
**用户输入示例:**
- "1234"
- "123456"
- "验证码是 1234"
**系统自动处理:**
1. 提取验证码(4-6位数字)
2. 调用 `amemo-login` 完成登录
3. 保存返回的 `userToken`
### Step 4: 登录成功处理(自动更新配置)
**系统自动执行:**
1. **提取登录返回数据**
- `userToken`: 用户认证令牌
- `userName`: 用户昵称
- `userPhone`: 用户手机号
- `loginAt`: 当前时间(ISO 8601 格式)
2. **自动更新 SKILL.md 顶部 JSON 配置**
使用文件编辑工具(如 `edit`)自动替换以下内容:
```json
{
"userToken": "{提取的userToken}",
"userName": "{提取的userName}",
"userPhone": "{提取的userPhone}",
"loginAt": "{当前时间}"
} 替换目标位置:SKILL.md 中 ## 用户配置管理 章节下的 JSON 代码块
- 发送个性化欢迎消息
登录成功提示(使用 userName):
✅ 登录成功!欢迎回来,{userName}!
━━━━━━━━━━━━━━━━━━━━━━
📋 功能菜单
━━━━━━━━━━━━━━━━━━━━━━
📝 【笔记管理】
• 保存笔记 → "帮我记一下..." / "保存笔记..."
• 查询笔记 → "查看我的笔记" / "查找关于XXX的笔记"
• 搜索笔记 → "搜索我XXX相关的笔记"
✅ 【清单管理】
• 创建待办 → "今天/明天/后天要..." / "12月25日要..."
• 查看清单 → "查看我的清单" / "我的待办"
• 邮件提醒 → 创建任务后自动询问是否开启邮件提醒
📊 【健康数据】
• 今日简报 → "今日健康简报" / "健康日报"
• 步数统计 → "查看我的步数数据"
• 睡眠分析 → "查看我的睡眠数据"
• 血氧监测 → "查看我的血氧数据"
• 血压记录 → "查看我的血压数据"
• 心率数据 → "查看我的心率数据"
• 消耗统计 → "查看我的消耗数据"
🤖 【AI 记忆】
• 刷新记忆 → "刷新助手记忆" / "初始化助手记忆"
• 保存记忆 → "保存永久记忆" / "永久记住这个"
━━━━━━━━━━━━━━━━━━━━━━
💡 使用提示
━━━━━━━━━━━━━━━━━━━━━━
• 直接说出你想做的事,我会自动识别
• 支持自然语言,无需记住固定指令
• 需要帮助随时输入 "help" 或 "帮助"
━━━━━━━━━━━━━━━━━━━━━━使用 userName 的场景示例:
- 欢迎:
欢迎回来,{userName}! - 确认操作:
{userName},已为您保存笔记 - 提醒:
{userName},您有一条待办清单 - 错误提示:
{userName},出了点小问题,请重试
输入提取规则
| 项目 | 正则表达式 | 说明 |
|---|---|---|
| 手机号 | 1[3-9]\d{9} |
自动过滤空格、横线、+86前缀 |
| 验证码 | \d{4,6} |
4-6位连续数字 |
错误处理
手机号格式错误:
❌ 手机号格式不正确,请发送正确的 11 位手机号。
示例:13800138000验证码错误:
❌ 验证码错误或已过期,请重新发送验证码。登录失败:
❌ 登录失败:[错误原因]
请检查手机号和验证码后重试。接口异常处理:
当调用 API 出现异常时(网络错误、服务未启动、返回非 200 状态码等):
- 读取错误信息 - 捕获异常详情
- 转换为用户语言 - 将技术错误转为通俗解释
- 提供解决方案 - 告诉用户下一步怎么做
常见异常及回复模板:
| 异常类型 | 技术错误 | 用户提示 |
|---|---|---|
| 服务未启动 | Connection refused |
本地服务未启动 |
| 网络超时 | Timeout |
网络有点慢,请稍后重试 |
| 服务繁忙 | 503 Service Unavailable |
服务正忙,请稍后再试 |
| 参数错误 | 400 Bad Request |
提交的数据有问题,请检查输入 |
| 未授权 | 401 Unauthorized |
登录已过期,请重新登录 |
| 未知错误 | 其他异常 | 出了点小问题,请稍后重试或联系管理员 |
错误处理示例流程:
调用接口 → 捕获异常 → 解析错误类型 → 匹配用户提示 → 发送友好提醒自动保存笔记调度
当用户说以下触发词时,自动调用 amemo-save-memo 接口:
| 触发词 | 说明 |
|---|---|
| 保存笔记 | 保存当前对话为笔记 |
| 记下这一条 | 保存当前对话为笔记 |
| 记录笔记 | 保存当前对话为笔记 |
| 帮我记一下 | 保存当前对话为笔记 |
| 保存备忘 | 保存当前对话为笔记 |
自动保存笔记流程
1. 识别触发词(保存笔记/记下/记录)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 提取对话内容
├── userContent: 用户上一条消息
└── aiContent: AI 助手上一条回复
↓
4. 整理笔记内容
memoContent = "{userContent}\n\n【AI】\n{aiContent}"
↓
5. 生成简化的 memoTitle
- 提取用户消息核心关键词(≤10字)
- 去除语气词、重复词
- 示例:"这个函数怎么用" → "函数使用方法"
↓
6. 调用接口
> 读取 modules/amemo-save-memo/SKILL.md 获取请求参数
↓
7. 返回结果
- 成功:✅ 已保存笔记:「{memoTitle}」
- 失败:❌ 保存失败,请重试标题生成规则
- 提取用户消息中最核心的名词/动词
- 限制在 20 字以内
- 去除:助词、语气词、疑问词
- 示例:
- "这个 Python 异常怎么处理" → "Python异常处理"
- "帮我记一下今天开会的内容" → "今日开会记录"
- "React 的 useEffect 怎么用" → "React useEffect用法"
自动查询笔记调度
当用户说以下触发词时,自动调用 amemo-find-memo 接口:
| 触发词 | 说明 |
|---|---|
| 查看我 XXX 相关的笔记 | 查看指定主题的笔记 |
| 查找 XXX 相关的笔记 | 查找指定主题的笔记 |
| 搜索我 XXX 相关的笔记 | 搜索指定主题的笔记 |
| 搜索笔记 XXX | 搜索指定主题的笔记 |
| 找一下 XXX 笔记 | 查找指定主题的笔记 |
自动查询笔记流程
1. 识别触发词(查看/查找/搜索 + 关键词 + 笔记)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 提取关键词
├── 去除:查看、查找、搜索、我的、笔记、相关的、等
├── 保留核心主题词
↓
4. 调用接口
> 读取 modules/amemo-find-memo/SKILL.md 获取请求参数
↓
5. 格式化输出 Markdown关键词提取规则
- 去除通用词:查看、查找、搜索、我的、笔记、备忘、记录、相关的
- 保留核心主题词
- 示例:
- "查看我 Python 相关的笔记" → "Python"
- "查找关于 React Hook 的笔记" → "React Hook"
- "搜索我收藏的算法笔记" → "算法"
- "找一下 TypeScript 类型笔记" → "TypeScript 类型"
Markdown 输出格式优化
接口返回的 memoContent 可能是 Markdown 格式,需要优化展示:
单个结果时:
## 📝 {memoTitle}
{memoContent}多个结果时:
## 📚 找到 {count} 条相关笔记
---
### {index}. {memoTitle}
_{createdAt}_
{memoContent}
---无结果时:
未找到与「{关键词}」相关的笔记。
你可以:
• 尝试其他关键词
• 保存一条新的笔记调用示例
用户输入:
查找我 React 相关的笔记系统处理:
- 提取关键词:
React - 调用:
POST /find-memowithmemoTitle: "React" - 格式化输出给用户
自动查询健康数据调度
当用户说以下触发词时,自动调用 amemo-find-data 接口:
| 触发词 | 说明 |
|---|---|
| 查看我的 XXX 数据 | 查看指定类型的健康数据 |
| 查找我的 XXX 数据 | 查找指定类型的健康数据 |
| 搜索我的 XXX 数据 | 搜索指定类型的健康数据 |
| 我的 XXX 数据 | 查询指定类型的健康数据 |
| XXX 数据怎么样 | 查询指定类型的健康数据 |
数据类型映射(6大类)
| 关键词 | dataType 参数值 |
|---|---|
| 步数 | 步数 |
| 睡眠 | 睡眠 |
| 血氧 | 血氧 |
| 血压 | 血压 |
| 心率 | 心率 |
| 消耗 | 消耗 |
自动查询数据流程
1. 识别触发词(查看/查找/搜索 + 我的 + XXX + 数据)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 提取数据类型关键词
├── 去除:查看、查找、搜索、我的、数据、怎么样
├── 匹配6大类型
↓
4. 匹配判断
├── 不匹配 → 告知用户暂无可用数据类型
↓
5. 调用接口
> 读取 modules/amemo-find-data/SKILL.md 获取请求参数
↓
6. 数据总结输出关键词提取与匹配规则
提取示例:
- "查看我的步数数据" → 匹配 "步数"
- "查找我的睡眠记录" → 匹配 "睡眠"
- "心率数据怎么样" → 匹配 "心率"
- "消耗卡路里" → 匹配 "消耗"
未匹配示例:
- "查看我的体重数据" → 不匹配6大类
- "查找我的血糖数据" → 不匹配6大类
数据总结模板
根据不同数据类型,生成对应的总结:
步数 (steps):
## 📊 步数数据
**今日步数**:{latest_steps} 步
**目标完成**:{percentage}%
**数据趋势**:{trend}
最近记录:
| 日期 | 步数 | 备注 |
|------|------|------|
| {date} | {steps} | - |睡眠 (sleep):
## 😴 睡眠数据
**平均睡眠时长**:{avg_hours} 小时
**睡眠质量**:{quality}(好/一般/差)
**平均入睡时间**:{avg_bedtime}
**平均起床时间**:{avg_wakeup}
最近记录:
| 日期 | 时长 | 入睡 | 起床 | 质量 |
|------|------|------|------|------|
| {date} | {hours}h | {bedtime} | {wakeup} | {quality} |血氧 (oxygen):
## 🩸 血氧数据
**平均血氧**:{avg_oxygen}%
**最低血氧**:{min_oxygen}%
**异常次数**:{abnormal_count} 次
最近记录:
| 日期 | 血氧 | 备注 |
|------|------|------|
| {date} | {oxygen}% | {note} |血压 (blood_pressure):
## ❤️ 血压数据
**平均高压**:{avg_systolic} mmHg
**平均低压**:{avg_diastolic} mmHg
**血压状况**:{status}(正常/偏高/偏低)
最近记录:
| 日期 | 高压 | 低压 | 状况 |
|------|------|------|------|
| {date} | {sys} | {dia} | {status} |心率 (heart_rate):
## 💓 心率数据
**平均心率**:{avg_hr} bpm
**静息心率**:{resting_hr} bpm
**最高心率**:{max_hr} bpm
最近记录:
| 日期 | 心率 | 备注 |
|------|------|------|
| {date} | {hr} bpm | {note} |消耗 (calorie):
## 🔥 卡路里消耗
**今日消耗**:{latest_cal} kcal
**目标完成**:{percentage}%
**平均每日消耗**:{avg_cal} kcal
最近记录:
| 日期 | 消耗 | 备注 |
|------|------|------|
| {date} | {cal} kcal | {note} |无数据时回复
未找到与「{关键词}」相关的数据。
目前支持查询的数据类型:
• 步数 - 每日行走步数统计
• 睡眠 - 睡眠时长和质量分析
• 血氧 - 血氧饱和度监测
• 血压 - 血压高低压记录
• 心率 - 心率监测数据
• 消耗 - 卡路里消耗统计
请尝试:查看我的步数数据调用示例
用户输入:
查看我的心率数据系统处理:
- 提取关键词:
心率 - 匹配到类型:心率 →
心率 - 调用:
POST /find-datawithdataType: "心率" - 获取数据列表,生成总结
自动健康简报调度
当用户说以下触发词时,自动调用 amemo-last-data 接口获取所有类型最新数据,生成健康简报:
| 触发词 | 说明 |
|---|---|
| 今日健康简报 | 获取今日健康数据汇总 |
| 今日健康总览 | 获取今日健康数据汇总 |
| 今日健康情况 | 获取今日健康数据汇总 |
| 健康简报 | 获取健康数据汇总 |
| 健康日报 | 获取健康数据汇总 |
自动健康简报流程
1. 识别触发词(健康简报/健康总览/健康情况)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 调用接口(不传 dataType,获取所有类型最新数据)
> 读取 modules/amemo-last-data/SKILL.md 获取请求参数
↓
4. 解析返回数据
├── 步数:steps, stepGoal
├── 睡眠:sleepHours, sleepQuality
├── 血氧:oxygen
├── 血压:systolic, diastolic
├── 心率:heartRate
└── 消耗:calorie, calorieGoal
↓
5. 生成健康简报健康简报模板
根据返回数据,生成结构化的健康简报:
## 📋 今日健康简报
_{date}_
---
### 🚶 运动步数
| 指标 | 数值 | 状态 |
|------|------|------|
| 今日步数 | **{steps}** 步 | {step_status} |
| 目标完成 | **{step_percent}%** | {goal_status} |
{step_comment}
---
### 😴 睡眠情况
| 指标 | 数值 | 状态 |
|------|------|------|
| 睡眠时长 | **{sleep_hours}** 小时 | {sleep_status} |
| 睡眠质量 | **{sleep_quality}** | - |
{sleep_comment}
---
### 🩸 血氧水平
| 指标 | 数值 | 状态 |
|------|------|------|
| 血氧饱和度 | **{oxygen}%** | {oxygen_status} |
{oxygen_comment}
---
### ❤️ 血压状况
| 指标 | 数值 | 状态 |
|------|------|------|
| 高压 | **{systolic}** mmHg | {sys_status} |
| 低压 | **{diastolic}** mmHg | {dia_status} |
{blood_pressure_comment}
---
### 💓 心率状况
| 指标 | 数值 | 状态 |
|------|------|------|
| 当前心率 | **{heart_rate}** bpm | {hr_status} |
{heart_rate_comment}
---
### 🔥 卡路里消耗
| 指标 | 数值 | 状态 |
|------|------|------|
| 今日消耗 | **{calorie}** kcal | {cal_status} |
| 目标完成 | **{cal_percent}%** | {goal_status} |
{calorie_comment}
---
## 📊 健康综合评估
{overall_assessment}
{improvement_suggestion}指标状态判断规则
| 类型 | 指标 | 正常范围 | 状态判断 |
|---|---|---|---|
| 步数 | step_percent | ≥100% 达标 / 80-99% 接近 / <80% 未达标 | - |
| 睡眠 | sleep_hours | 7-9h 正常 / 6-7h 偏少 / <6h 不足 / >9h 偏多 | 好/一般/差 |
| 血氧 | oxygen | ≥95% 正常 / 90-94% 偏低 / <90% 危险 | 正常/偏低/危险 |
| 血压 | systolic | 90-140 / diastolic 60-90 | 正常/偏高/偏低 |
| 心率 | heart_rate | 60-100 bpm 正常 / <60 偏低 / >100 偏高 | 正常/偏低/偏高 |
| 消耗 | cal_percent | ≥100% 达标 / 80-99% 接近 / <80% 未达标 | - |
数据解读与评语生成
步数评语生成:
- 达标(≥100%):
🎉 今日步数目标已达成,继续保持! - 接近(80-99%):
💪 距离目标只差一点点了,再活动活动! - 未达标(<80%):
🚶 今日运动量较少,建议起身活动一下
睡眠评语生成:
- 正常(7-9h):
😴 睡眠时长良好,身体得到充分休息 - 偏少(6-7h):
😪 睡眠时长略有不足,建议早点入睡 - 不足(<6h):
😫 睡眠严重不足,建议增加睡眠时间 - 偏多(>9h):
😴 睡眠时间较长,可能影响生物钟
血氧评语生成:
- 正常(≥95%):
✅ 血氧水平正常,呼吸系统健康 - 偏低(90-94%):
⚠️ 血氧略低,可能与剧烈运动或环境有关 - 危险(<90%):
🚨 血氧过低,建议就医检查
血压评语生成:
- 均正常:
✅ 血压处于正常范围,心血管健康 - 高压偏高:
⚠️ 高压略高,注意清淡饮食 - 高压过高:
🚨 高压异常,建议咨询医生 - 低压偏低:
⚠️ 低压略低,可能体质较弱 - 低压过低:
🚨 低压异常,建议咨询医生
心率评语生成:
- 正常(60-100):
✅ 心率正常,心脏功能良好 - 偏低(<60):
⚠️ 心率偏低,可能运动量大或体质较好 - 偏高(>100):
⚠️ 心率偏快,建议休息放松
消耗评语生成:
- 达标(≥100%):
🎉 今日消耗目标已达成! - 接近(80-99%):
💪 再活动一下就能达成目标了! - 未达标(<80%):
🔥 今日消耗较少,可以适当增加运动
综合评估生成规则
根据各项指标状态,生成综合评估:
**整体评价**:{great/good/needs_attention/poor}
{great_case}
🎉 {userName},今日健康状况非常棒!各项指标均在正常范围内,请继续保持!
{good_case}
👍 {userName},今日健康状况良好,大部分指标正常,继续保持!
{needs_attention_case}
👋 {userName},今日有部分指标需要注意,建议适当调整。
{poor_case}
⚠️ {userName},今日健康状况需要关注,建议咨询医生或调整生活习惯。改善建议生成
根据异常指标生成针对性建议:
| 异常类型 | 建议内容 |
|---|---|
| 步数不足 | 每天步行 8000-10000 步有助于保持健康 |
| 睡眠不足 | 建议固定作息时间,睡前避免使用电子设备 |
| 血氧偏低 | 避免长时间在密闭环境,适当进行深呼吸练习 |
| 血压偏高 | 注意清淡饮食,减少盐分摄入,保持情绪稳定 |
| 心率偏高 | 避免剧烈运动和情绪激动,保持充足睡眠 |
| 消耗不足 | 结合有氧运动和无氧训练,提高基础代谢 |
无数据时回复
暂无今日健康数据。
请确保:
• amemo 服务已启动并正常运行
• 已记录今日的健康数据
• 已完成登录认证
尝试:查看我的步数数据调用示例
用户输入:
今日健康简报系统处理:
- 识别触发词:
今日健康简报 - 检查
userToken - 调用:
POST /last-datawithuserToken: "{token}" - 获取所有类型最新数据
- 解析并生成健康简报输出
自动保存任务调度(时间词语触发)
当用户对话中包含时间词语时,优先保存到麦小记(利用其邮件提醒功能),同时创建系统级定时任务(作为备份提醒)。
时间词语识别
| 时间词语 | 转换规则 | 示例 |
|---|---|---|
| 今天 / 今日 | 当天 00:00:00 | 2024-03-22 00:00:00 |
| 明天 / 明日 | 明天 00:00:00 | 2024-03-23 00:00:00 |
| 昨天 / 昨日 | 昨天 00:00:00 | 2024-03-21 00:00:00 |
| 后天 | 后天 00:00:00 | 2024-03-24 00:00:00 |
| 将来 / 未来 | 当前时间 + 365天 | 2025-03-22 00:00:00 |
| 最近 / 最新 / 近期 | 当天时间 + 15天 | 2024-04-06 00:00:00 |
| 具体日期 | 原样转换 | 用户说"12月25日" → 2024-12-25 00:00:00 |
时间转换优先级
- 精确日期匹配优先(如"12月25日")
- 时间词语次之(如"明天"、"下周")
- 无法识别时使用当前时间
自动保存任务流程(双保险机制)
1. 检测用户对话中的时间词语
↓
2. 提取并转换时间
├── 今天/今日 → 当天 00:00:00
├── 明天/明日 → 明天 00:00:00
├── 将来/未来 → 当前 + 365天
├── 最近/最新/近期 → 当前 + 15天
└── 具体日期 → 解析后 00:00:00
↓
3. 提取待办事项
├── 从对话中提取任务标题(taskTitle)
├── 去除语气词、感叹词
└── 保留核心任务内容
↓
4. 检查 userToken
├── 无 token → 引导登录流程
↓
5. 【第一优先级】保存到麦小记
├── 调用 amemo-save-task 接口
├── 利用麦小记的邮件提醒功能
└── 失败时记录日志但不阻断流程
↓
6. 【第二优先级】创建系统定时任务 + 邮件提醒检查
├── 调用 cron.add 创建本地定时任务
├── 检查用户是否已设置邮件提醒邮箱
│ ├── 已设置 → 跳过邮件配置
│ └── 未设置 → 询问用户邮箱 → 调用 amemo-send-task 发送邮件
└── 确保提醒必达
↓
7. 返回双保险保存结果请求参数
麦小记保存参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userToken | str | 是 | 用户登录凭证 |
| taskId | str | 否 | 传 null(新建任务) |
| taskTitle | str | 是 | 任务标题(从对话中提取) |
| taskExplain | str | 否 | 传 null |
| taskTime | str | 是 | 任务时间(格式:2024-12-12 00:00:00) |
| taskEmail | list[str] | 否 | 传 null |
系统定时任务参数:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | str | 是 | 任务名称(与 taskTitle 一致) |
| schedule.at | str | 是 | ISO 8601 格式时间 |
| payload.text | str | 是 | 提醒消息内容 |
| sessionTarget | str | 是 | "main" |
邮件提醒检查流程
创建系统定时任务时,自动检查用户邮件设置状态:
检查方式
- 检查本地存储的用户邮箱配置(如
~/.amemo/config.json或环境变量) - 或检查麦小记返回的用户配置中是否包含邮件设置
分支处理
情况一:已设置邮件
检测到用户已配置邮件:xxx@example.com
→ 跳过邮箱询问
→ 系统定时任务将在提醒时间自动触发情况二:未设置邮件
未检测到邮件配置
→ 提示用户:"📧 是否开启邮件提醒?请输入邮箱地址(或直接回复'跳过')"
→ 等待用户输入
├── 用户输入有效邮箱 → 保存配置 → 调用 amemo-send-task 发送测试邮件
├── 用户回复"跳过" → 仅保留系统定时任务
└── 用户输入无效 → 提示重新输入或跳过amemo-send-task 调用参数
当用户输入邮箱后,立即调用发送邮件:
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| userToken | str | 是 | 用户登录凭证 |
| taskId | str | 否 | 传 null |
| taskTitle | str | 否 | 传 null |
| taskExplain | str | 否 | 传 null |
| taskTime | str | 是 | 任务时间 |
| taskEmail | list[str] | 是 | 用户输入的邮箱列表 |
调用示例:
curl -X POST https://skill.amemo.cn/send-task \
-H "Content-Type: application/json" \
-d '{
"userToken": "<token>",
"taskId": null,
"taskTitle": null,
"taskExplain": null,
"taskTime": "2026-03-23 07:00:00",
"taskEmail": ["user@example.com"]
}'邮件发送成功回复:
✅ 邮件提醒已设置!
📧 接收邮箱:user@example.com
⏰ 提醒时间:2026-03-23 07:00:00
测试邮件已发送,请查收。响应处理
双保险都成功时:
✅ 已为您设置双保险提醒:「{taskTitle}」
📅 时间:{taskTime}
📧 麦小记邮件提醒:已保存
⏰ 系统备份提醒:已设置
双重保障,确保您不会错过!麦小记成功,系统失败时:
✅ 已为您保存待办:「{taskTitle}」
📅 时间:{taskTime}
📧 麦小记邮件提醒:已启用
⚠️ 系统备份提醒设置失败,但麦小记邮件提醒仍可用。麦小记失败,系统成功时:
⚠️ 麦小记保存失败,已启用系统备份提醒
⏰ 提醒时间:{taskTime}
📋 任务:{taskTitle}
系统将在指定时间提醒您。都失败时:
❌ 提醒设置失败
可能原因:
• 麦小记服务异常
• 系统定时任务服务异常
请检查服务状态后重试。调用示例
示例一:首次使用(未设置邮件)
用户输入:
明天早上提醒我早起买胡辣汤系统处理:
- 检测到时间词语:
明天早上 - 转换时间:
2026-03-23 07:00:00(早上默认7点) - 提取待办:
早起买胡辣汤 - 【第一优先级】调用
POST /save-task保存到麦小记 - 【第二优先级】调用
cron.add创建系统定时任务 - 检查邮件配置 → 未设置
- 询问用户:
✅ 已为您设置双保险提醒:「早起买胡辣汤」
📅 时间:2026-03-23 07:00:00
📧 麦小记邮件提醒:已保存
⏰ 系统备份提醒:已设置
💡 是否开启邮件提醒?请输入邮箱地址(或回复"跳过"):用户回复:
lockfeel@example.com系统处理:
8. 验证邮箱格式
9. 保存邮箱配置到本地
10. 调用 POST /send-task 发送测试邮件
11. 返回:
✅ 邮件提醒已设置!
📧 接收邮箱:lockfeel@example.com
⏰ 提醒时间:2026-03-23 07:00:00
测试邮件已发送,请查收。
━━━━━━━━━━━━━━━━━━━━━━
📋 提醒配置总览
━━━━━━━━━━━━━━━━━━━━━━
📧 麦小记清单:已保存
⏰ 系统定时任务:已设置
📧 邮件提醒:已启用
三重保障,确保您不会错过!示例二:已设置邮件(自动跳过询问)
用户输入:
12月25日要送礼物系统处理:
- 检测到时间词语:
12月25日 - 转换时间:
2024-12-25 00:00:00 - 提取待办:
送礼物 - 【第一优先级】调用
POST /save-task保存到麦小记 - 【第二优先级】调用
cron.add创建系统定时任务 - 检查邮件配置 → 已设置:lockfeel@example.com
- 自动调用
POST /send-task发送邮件提醒 - 返回:
✅ 已为您设置提醒:「送礼物」
📅 时间:2024-12-25 00:00:00
📧 麦小记清单:已保存
⏰ 系统定时任务:已设置
📧 邮件提醒:已启用(lockfeel@example.com)
三重保障,确保您不会错过!示例三:用户选择跳过邮件
用户输入:
后天要去医院复查系统处理:
1-5. (同上,保存到麦小记 + 创建系统任务)
6. 检查邮件配置 → 未设置
7. 询问用户邮箱
8. 用户回复: 跳过
9. 返回:
✅ 已为您设置提醒:「去医院复查」
📅 时间:2024-03-24 00:00:00
📧 麦小记清单:已保存
⏰ 系统定时任务:已设置
📧 邮件提醒:未启用
💡 如需开启邮件提醒,可随时说"设置邮件提醒"- 调用
cron.add创建系统定时任务
- 返回双保险结果
自动查询任务调度
当用户说以下触发词时,自动调用 amemo-find-task 接口查询任务清单:
| 触发词 | 说明 |
|---|---|
| 查看我的清单 | 查看用户的所有任务清单 |
| 查询清单 | 查询任务清单 |
| 我的待办 | 查看待办事项 |
| 查看任务 | 查看任务列表 |
| 查询任务 | 查询已有任务 |
| 列出任务 | 列出所有任务 |
| 搜索任务 | 搜索任务 |
自动查询任务流程
1. 识别触发词(查看/查询/列出 + 清单/任务/待办)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 调用接口
> 读取 modules/amemo-find-task/SKILL.md 获取请求参数
↓
4. 解析返回数据
├── todayList: 今日列表
├── tomorrowList: 明日列表
├── recentList: 近期列表(15天内)
├── futureList: 未来列表
├── finishList: 已完成列表
└── myFollow: 我的收藏
↓
5. 格式化输出 Markdown查询任务展示模板
调用成功后,根据返回数据为用户组织清晰的任务清单展示。
无数据时回复:
暂无待办清单。
你可以:
• 创建新的待办任务
• 使用「今天XXX」添加待办任务清单展示模板:
## ✅ 待办清单
---
### 📅 今日待办 {todayCount} 项
{today_list_items}
---
### 📅 明日待办 {tomorrowCount} 项
{tomorrow_list_items}
---
### 📆 近期待办(15天内){recentCount} 项
{recent_list_items}
---
### 📋 未来待办 {futureCount} 项
{future_list_items}
---
### ⭐ 我的收藏 {followCount} 项
{follow_list_items}
---
### ✔ 已完成 {finishCount} 项
{finish_list_items}
---
### 📊 统计概览
| 分类 | 数量 |
|------|------|
| 今日待办 | {count} |
| 明日待办 | {count} |
| 近期待办 | {count} |
| 未来待办 | {count} |
| 我的收藏 | {count} |
| 已完成 | {count} |
| **总计** | **{count}** |调用示例
用户输入:
查看我的待办清单系统处理:
- 识别触发词:
查看我的清单 - 检查
userToken - 调用:
POST /find-taskwithuserToken: "{token}" - 解析返回数据,按分类组织展示
用户输入:
查询任务系统处理:
- 识别触发词:
查询任务 - 检查
userToken - 调用:
POST /find-taskwithuserToken: "{token}" - 格式化输出给用户
邮件提醒设置流程
创建待办清单后,自动询问用户是否需要开启邮件提醒,并支持本地定时任务设置。
创建清单后的邮件提醒询问
✅ 已为您保存待办:「{taskTitle}」
📅 时间:{taskTime}
是否需要开启邮件提醒?
• 是 - 请输入接收提醒的邮箱
• 否 - 稍后提醒我用户选择"是"后的流程
请输入接收提醒的邮箱地址:
示例:user@example.com邮箱格式验证
正则表达式: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
验证失败回复:
❌ 邮箱格式不正确,请重新输入:
示例:user@example.com验证成功回复:
✅ 邮箱格式验证通过
📧 提醒设置:
• 任务:「{taskTitle}」
• 提醒时间:{taskTime}
• 接收邮箱:{email}
是否确认设置?
• 确认 - 开启提醒
• 修改 - 重新输入邮箱本地定时任务设置
确认后,在本地创建定时任务:
✅ 邮件提醒已设置!
⏰ 提醒详情:
• 任务:{taskTitle}
• 时间:{taskTime}
• 邮箱:{email}
到达提醒时间后,将自动发送邮件通知。定时任务执行流程
1. 定时任务触发(到达 taskTime)
↓
2. 调用 amemo-send-task 接口
> 读取 modules/amemo-send-task/SKILL.md 获取请求参数
↓
3. 发送邮件提醒
↓
4. 记录发送状态调用示例
用户输入:
明天要去开会,发邮件到 test@example.com系统处理:
- 提取任务:
开会 - 转换时间:
2024-03-23 00:00:00 - 保存清单:调用
/save-task - 询问邮件提醒:用户选择"是"
- 获取邮箱:
test@example.com - 验证格式:通过
- 设置定时任务:明天 00:00:00 执行
- 到期执行:调用
/send-task发送邮件
注意事项
- 本地定时任务由 amemo-skill 管理,到期自动调用
amemo-send-task发送邮件 - 邮件发送依赖 amemo 服务正常运行
- 支持设置多个邮箱,用逗号分隔
调度流程
当用户提出请求时,按以下步骤操作:
- 确认服务状态 — 确保 amemo 服务已启动(
python skill.py,端口 8092) - 识别用户意图 — 根据用户需求判断应调用哪个子模块
- 检查认证状态 — 除登录/验证码外,所有接口需要
userToken。若未获取 token,先调用amemo-login - 调度子模块 — 读取对应模块的 SKILL.md 执行具体请求
子模块索引
所有子模块位于 modules/ 目录,每个子模块对应一个 API 端点。详细请求/响应示例请查阅各子模块 SKILL.md:
| 模块 | 路由 | 作用 |
|---|---|---|
amemo-send-code |
POST /send-code | 发送手机验证码 |
amemo-login |
POST /login | 用户登录获取 token |
amemo-save-memo |
POST /save-memo | 保存笔记 |
amemo-find-memo |
POST /find-memo | 查询笔记 |
amemo-save-task |
POST /save-task | 保存任务 |
amemo-find-task |
POST /find-task | 查询任务 |
amemo-send-task |
POST /send-task | 发送任务(邮件提醒) |
amemo-find-data |
POST /find-data | 查询健康数据 |
amemo-last-data |
POST /last-data | 健康简报 |
amemo-init-mate |
POST /init-mate | 刷新助手记忆 |
amemo-save-mate |
POST /save-mate | 保存永久记忆 |
注意:AI 助手模块仅适用于 OpenClaw 或基于 OpenClaw 开发的软件。
自动刷新助手记忆调度
当用户说以下触发词时,自动调用 amemo-init-mate 接口,并用返回的 mateMemory 数据更新本地 MEMORY.md:
| 触发词 | 说明 |
|---|---|
| 刷新助手记忆 | 同步 AI 助手记忆到本地 |
| 初始化助手记忆 | 初始化 AI 助手记忆 |
| 重置记忆 | 重置 AI 助手记忆 |
前提:仅在 OpenClaw 或基于 OpenClaw 开发的应用中生效,其他 AI 工具(如 Claude Code)不支持此功能。
自动刷新记忆流程
1. 识别触发词(刷新/初始化/重置 + 助手记忆)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 检查 memory 目录是否存在
├── 不存在 → 自动创建 memory 目录
↓
4. 调用接口
> 读取 modules/amemo-init-mate/SKILL.md 获取请求参数
↓
5. 解析响应
└── data.mateMemory: AI 助手记忆内容(Markdown 格式)
↓
6. 更新本地 MEMORY.md
├── 如果 memory 目录不存在 → 先创建
├── 写入 mateMemory 内容到 memory/MEMORY.md
↓
7. 返回结果给用户接口响应解析
读取 modules/amemo-init-mate/SKILL.md 获取完整响应数据结构
更新 MEMORY.md 模板
将 mateMemory 内容完整写入 memory/MEMORY.md:
{mateMemory}成功提示模板
✅ 助手记忆已刷新!
已同步 {count} 条记忆信息到本地 MEMORY.md
记忆内容包括:
• 用户偏好设置
• 工作习惯和规律
• 常用工具和技术栈
• 个人目标和关注点
现在 AI 助手将根据您的记忆提供更个性化的服务。失败处理
文件写入失败时:
⚠️ 记忆同步失败:无法写入 MEMORY.md 文件
可能原因:
• 目录权限不足
• 磁盘空间已满
请检查后重试,或联系管理员。接口调用失败时:
⚠️ 无法获取助手记忆,请检查:
• amemo 服务是否正常运行
• 网络连接是否正常
错误信息:{error_message}调用示例
用户输入:
刷新助手记忆系统处理:
- 识别触发词:
刷新助手记忆 - 检查
userToken - 检查/创建
memory目录 - 调用:
POST /init-matewithuserToken: "{token}" - 获取
data.mateMemory内容 - 写入
memory/MEMORY.md文件 - 输出成功提示
自动保存永久记忆调度
注意:此功能仅适用于 OpenClaw 或基于 OpenClaw 开发的软件。
当用户说以下触发词时,等待 MEMORY.md 更新完成后,调用 amemo-save-mate 接口,将本地 MEMORY.md 内容同步到服务器:
| 触发词 | 说明 |
|---|---|
| 保存永久记忆 | 将本地记忆同步到云端 |
| 永久记住 XXX | 记住指定内容并同步 |
| 记住这个 | 记住当前内容并同步 |
自动保存永久记忆流程
1. 识别触发词(保存永久记忆/永久记住/记住这个)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 确认 MEMORY.md 是否已更新
├── 未更新 → 提示用户先完成编辑
↓
4. 读取 memory/MEMORY.md 文件内容
↓
5. 调用接口
> 读取 modules/amemo-save-mate/SKILL.md 获取请求参数
↓
6. 返回保存结果保存触发场景
场景一:用户刚说完"永久记住 XXX"
用户:永久记住我喜欢用 Python 写后端服务
↓
系统识别触发词,等待用户确认或自动补充到 MEMORY.md
↓
用户完成 MEMORY.md 编辑(如通过其他工具)
↓
用户说"保存永久记忆"
↓
系统读取 MEMORY.md 内容
↓
调用 /save-mate 同步到服务器场景二:用户主动保存
用户:保存永久记忆
↓
系统读取当前 MEMORY.md 内容
↓
调用 /save-mate 同步到服务器接口请求参数
读取 modules/amemo-save-mate/SKILL.md 获取完整请求参数和响应数据
成功提示模板
✅ 永久记忆已保存!
已同步 {lines} 行记忆内容到云端
记忆概要:
• 偏好设置:{preferences_summary}
• 工作习惯:{habits_summary}
• 技术栈:{tech_summary}
您的记忆将在所有设备间同步。失败处理
MEMORY.md 不存在时:
⚠️ 暂无本地记忆可保存
请先:
1. 使用「刷新助手记忆」获取云端记忆
2. 或直接编辑 memory/MEMORY.md 添加内容
然后再说「保存永久记忆」读取失败时:
⚠️ 无法读取本地记忆文件
请检查 memory/MEMORY.md 是否存在且可读。接口调用失败时:
⚠️ 记忆保存失败
错误信息:{error_message}
请检查网络连接后重试。调用示例
用户输入:
保存永久记忆系统处理:
- 识别触发词:
保存永久记忆 - 检查
userToken - 读取
memory/MEMORY.md内容 - 调用:
POST /save-matewithmateMemory: "{文件内容}" - 输出保存结果
用户输入:
永久记住我常用 TypeScript 开发前端系统处理:
- 识别触发词:
永久记住+ 关键词TypeScript 前端 - 将内容追加/更新到 MEMORY.md
- 调用:
POST /save-mate同步到服务器 - 输出保存结果
认证流程
除 /login 和 /send-code 外,所有请求需携带 userToken:
用户请求 → 检查是否有 token → 无 → 调用 amemo-login → 获取 token→ 有 → 调用目标子模块使用方式
读取子模块目录下的 SKILL.md 获取完整的请求参数和 curl 示例,然后执行 HTTP 请求。
子模块路径格式:modules/<模块名>/SKILL.md
例如用户要"保存一条笔记":
- 读取
modules/amemo-save-memo/SKILL.md - 按参数格式构造请求
- 用 curl 发送 POST 请求到
https://skill.amemo.cn/save-memo