executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
amemo-save-memo当用户说「帮我记一下」「保存笔记」「记下这一条」或用陈述性语气描述某事(含"的时候/的情况/的经历")时调用,将对话内容保存为云端笔记,支持新建与更新。
Independent GitHub snapshot · Automated classification · Original documentation governs
| 属性 | 值 |
|---|---|
| 路由 | POST https://skill.amemo.cn/save-memo |
| Bean | MemoBean |
| Content-Type | application/json |
⚠️ 服务端要求所有字段必须存在。
userToken、memoTitle、memoContent必填且有值,memoId可选但字段必须存在。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
userToken | str | ✅ | 用户登录凭证 |
memoId | str | — | 备忘录 ID(新建传 null,更新时传入已有 ID) |
memoTitle | str | ✅ | 备忘录标题(不能为空) |
memoContent | str | ✅ | 备忘录内容(不能为空) |
# 新建备忘录
curl -X POST https://skill.amemo.cn/save-memo \
-H "Content-Type: application/json" \
-d '{
"userToken": "<token>",
"memoId": null,
"memoTitle": "开会记录",
"memoContent": "讨论了Q2计划"
}'
# 更新备忘录(传入已有 memoId)
curl -X POST https://skill.amemo.cn/save-memo \
-H "Content-Type: application/json" \
-d '{
"userToken": "<token>",
"memoId": "123456",
"memoTitle": "开会记录",
"memoContent": "更新了内容"
}'
{
"code": 200,
"desc": "success",
"data": {
"memoId": "abc123"
}
}
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 状态码,200 表示成功 |
desc | str | 状态描述 |
data.memoId | str | 保存成功后返回的备忘录 ID,必须提取并保存到当前对话上下文 lastMemoId,用于后续更新操作 |
📌 字段要求:所有字段必须存在,即使不传值也要传
null📝 新建 vs 更新:新建时
memoId传null,更新时传入已有 memoId🔐 认证要求:必须携带有效的 userToken
触发词去除规则: 从用户消息中移除"帮我记一下/保存笔记/记下这一条/记录笔记/保存备忘"等触发词,保留核心内容。
| 用户输入 | userContent |
|---|---|
"帮我记一下这家火锅店味道很不错" | "这家火锅店味道很不错" |
"保存笔记:今天开会讨论了Q2计划" | "今天开会讨论了Q2计划" |
说明:
userContent:用户上一条消息去除触发词后的核心内容aiContent:AI 助手上一条回复(完整保留)- 如果去除触发词后内容为空,则使用完整的用户消息作为 userContent
判断逻辑:
1. 当前对话上下文中是否存在 lastMemoId?
├── 不存在 → 【新建模式】,跳到步骤 5
└── 存在 → 进入意图指向判断
2. 意图指向判断(当 lastMemoId 存在时):
• 用户当前消息是否对刚才保存的内容提出改动要求
• 当前消息内容是否与 lastMemoTitle 主题相关
└── 判断结果:
├── 指向刚才的笔记 → 【更新模式】,携带 lastMemoId
└── 是全新内容 → 【新建模式】,清除 lastMemoId
| 信号词 | 示例 |
|---|---|
| 补充 | "补充一下刚才的笔记" |
| 加上 | "再加上XXX" |
| 修改 | "修改为XXX" |
| 更新 | "更新一下笔记" |
| 还有 | "还有一点要补充" |
| 另外 | "另外还需要记录" |
| 补充说明 | "补充说明一下" |
| 遗漏 | "刚才漏了一条" |
| 忘了 | "忘了说XXX" |
| 换成 | "把XXX换成YYY" |
| 改成 | "改成XXX" |
| 信号词 | 示例 |
|---|---|
| 新笔记 | "保存一条新笔记" |
| 另一个 | "再记一个XXX" |
| 主题明显不同 | 上一个是"旅行攻略",现在说"做饭" |
当无法明确判断时:
lastMemoTitle 主题明显不同 → 新建lastMemoTitle 主题相关,且包含更新信号 → 更新🤔 您是想:
• 更新刚才的笔记「{lastMemoTitle}」
• 还是保存为一条新笔记?
| 模式 | memoContent 格式 |
|---|---|
| 新建模式 | "{userContent}\n\n【AI】\n{aiContent}" |
| 更新模式 | "{修改后的完整内容}" |
更新模式:将用户改动后的完整对话内容作为新内容,直接替换原始笔记内容
lastMemoTitle| 用户输入 | 生成标题 |
|---|---|
"感冒了应该吃什么药" | "感冒用药建议" |
"帮我记一下今天开会的内容" | "今日开会记录" |
"红烧肉怎么做才好吃" | "红烧肉做法" |
1. 识别触发词(保存笔记/记下/记录)
↓
2. 检查 userToken 是否存在
├── 无 token → 引导登录流程
↓
3. 提取对话内容(userContent + aiContent)
↓
4. 判断新建还是更新
├── 新建模式:memoId = null
└── 更新模式:memoId = lastMemoId
↓
5. 整理笔记内容
↓
6. 生成 memoTitle
↓
7. 调用 POST /save-memo 接口
↓
8. 保存返回的 memoId 到当前对话上下文(lastMemoId)
↓
9. 返回结果
✅ 已保存笔记:「{memoTitle}」
✅ 已更新笔记:「{memoTitle}」(内容已替换)
❌ 保存失败,请重试
| 字段 | 说明 |
|---|---|
lastMemoId | 最近一次保存的笔记 ID |
lastMemoTitle | 最近一次保存的笔记标题 |
lastTaskId | 最近一次保存的任务 ID |
amemo-save-memo 成功后,提取 memoId 并更新 lastMemoIdlastMemoId 和 lastTaskId