| name | flomo-daily-echo |
| description | 基于用户昨日 flomo memo 和相关旧 memo 生成一条可讨论的“昨日回声”。仅在用户明确要求查看昨日回声、回顾昨天笔记,或已授权的定时回顾任务运行时使用。普通聊天、泛产品讨论、普通总结请求中不要主动调用。 |
flomo Daily Echo
核心定位
本 skill 不是日报、总结、陪聊或随机旧笔记回顾。
它只做一件事:在用户授权的前提下,从昨日 memo 与相关旧 memo 中找出一个真实存在的张力、延续、反差或分叉,生成一条用户可能愿意继续讨论的回声。
如果没有张力,宁可沉默或简短说明,不生成日报。
一句话:
不是生成洞察,而是生成一条值得继续讨论的张力。
文件结构
SKILL.md:稳定协议,写触发、证据要求、输出边界和失败处理。
../flomo-shared/SKILL.md:共享 profile 的初始化、刷新和旧版本迁移协议。
../flomo-shared/profile.md:共享 flomo profile,包含表达画像和用户明确确认过的偏好。
不要把具体用户标签、长期身份判断或个人内容写进 SKILL.md。
启动检查
每次使用本 skill 前,先读取 ../flomo-shared/profile.md。
profile 状态:
- 文件不存在:
missing。
- 文件为空、仍包含“待生成”、
profile_status: empty,或 updated_at 为空:empty。
- 缺少
updated_at: YYYY-MM-DD,或日期无法解析:invalid。
updated_at 距当前日期超过 30 天:stale。
profile_status: generated,updated_at 距当前日期不超过 30 天,且没有模板占位:fresh。
处理规则:
profile fresh:直接执行。
profile missing / profile empty:可以先询问是否用 ../flomo-shared/SKILL.md 初始化;如果用户跳过,继续执行但说明没有共享 profile,只能使用保守口吻。
profile stale:继续执行,不阻塞;输出后可提示画像可能需要刷新。
profile invalid:不要相信当前画像,使用保守默认规则。
触发边界
只在以下情况触发:
- 用户明确说“看看昨天的 flomo”“昨日回声”“昨天能出来啥”“回顾昨天笔记”。
- 用户在 flomo 语境下明确说“每日回顾”“回顾”“dailyreview”“daily review”。
- 用户已授权的定时每日/每周回顾任务运行。
- 用户明确要求基于某一天的 flomo memo 生成 Echo。
不要在以下情况触发:
- 普通聊天中出现 flomo、Echo、记录、回顾等词。
- 用户只是讨论产品定位、skill 设计或业务策略。
- 用户要求保存当前对话,这应交给
flomo-save-reminder。
- 用户要求普通日报、工作总结或任务复盘,除非明确要基于 flomo memo。
- 没有用户授权时主动读取 flomo。
输入来源优先级
-
用户明确指令
- 日期、范围、输出长度、是否要尖锐或保守,优先遵守。
-
共享 profile 的 User Preferences
- 控制最大回声数量、无张力是否沉默、Tips 是否已展示等轻量偏好。
- 这些偏好只能由用户明确确认后写入,不能从 memo 样本推断。
-
共享 profile 的 Expression Profile
- 用于控制语气、长度、标签敏感度和什么内容更可能值得保存。
- 共享画像只描述 flomo 表达习惯,不决定本 skill 是否主动。
- 参考共享画像里的判断结构和边界感,不照搬 memo 的表面文体。
-
昨日 memo
- 主输入。按用户时区获取昨天 00:00-23:59 的 memo。
-
相关旧 memo
- 用来支撑“来自过去的增援”。
- 旧 memo 必须和昨日 memo 存在可说明的关系。
- 优先通过昨日 memo 自身的
slug 获取相关笔记,保证基础相关性。
-
flomo memory
- 只用于避免误解用户长期语境,不替代真实 memo 证据。
-
每日回顾接口
- 只能作为补充旧 memo 的灵感来源。
- 如果它返回的是随机或推荐旧笔记,不能当作强相关证据。
-
关键词 / 主题 / 标签搜索
- 与 slug 相关笔记一起使用,用来补足长期母题、旧表达和跨 memo 主题。
- 必须限量,关键词命中不能自动视为强相关。
工作流程
1. 拉取目标日期 memo
默认目标日期是昨天。按用户所在时区取 00:00-23:59。
如果工具返回跨天 memo,要剔除目标日期之外的内容,并在内部记录原因。
如果目标日期没有 memo:
- 不生成日报。
- 简短说明没有足够输入。
- 可选择建议改用最近 3 天或每日回顾,但不要自动扩大范围。
2. 轻量归类,不逐条总结
只做内部归类,用来找张力。不要把分类暴露为用户标题。
可用内部分类:
- 产品判断
- 自我状态
- 工作推进
- 人际 / 交流
- 阅读 / 外部信息
- 反复出现的问题
3. 选出候选张力
从目标日期 memo 中找 1-3 个候选点。
优先级:
- 昨天出现了明确判断,但过去有相似或相反记录。
- 昨天的新想法像是长期母题的新外壳。
- 昨天的行动状态和产品判断之间有反差。
- 昨天记录里出现了一个未完成的问题。
- 昨天多条 memo 指向同一个隐含主题。
如果只有事实流水,没有张力,不要硬编。
4. 查找相关旧 memo
V0.1 使用“相关笔记 + 关键词/主题 + 标签”的混合检索。
三路分工:
- 相关笔记:证据主干,用来找到真正相近的旧 memo。
- 关键词 / 主题:跨标签补充,用来捞“个人痕迹”“行为协议”“冷静事实”这类长期母题。
- 标签:领域约束和近期上下文,用来判断这条 memo 属于哪个问题簇,但不要单靠标签决定相关性。
检索预算默认如下:
- 昨日 memo:最多 20 条进入内部分析;如果更多,先按长度、标签、判断密度和新鲜主题筛到 20 条。
- 候选张力:最多 3 个。
- 相关笔记:每个候选昨日 memo 最多取 5 条。
- 关键词 / 主题搜索:每个候选张力最多 2 个 query,每个 query 最多取 5 条。
- 标签搜索:每个候选张力最多选 2 个高信号标签,每个标签最多取 3 条。
- 最终进入推理的旧 memo:每个候选张力最多保留 5 条,总数最多 12 条。
- 最终输出引用或转述的旧 memo:通常 1 条,最多 2 条。
默认贡献权重:
- 相关笔记:约 50%,优先作为“这条回声确实来自旧记录”的证据。
- 关键词 / 主题:约 30%,用于发现跨标签、跨时期的长期母题。
- 标签:约 20%,用于补充语境和过滤领域,不单独构成强证据。
混合检索步骤:
- 从昨日 memo 中读取 id /
slug,获取相关笔记。
- 从昨日 memo 抽取 1-2 个关键词、主题词或标签,补充搜索长期母题。
- 从昨日 memo 标签中选择高信号标签补充搜索,跳过
#Think 这类过宽标签,除非没有其他标签。
- 合并候选旧 memo,按“关系质量”而不是来源或关键词命中排序。
- 去重,剔除目标日期之后的 memo,避免未来信息污染昨日回顾。
- 剔除只是同词但无关系的 memo。
- 每个候选张力至少保留 1 条能说明关系的旧 memo。
关系质量优先级:
- 能形成分叉或反差。
- 能说明长期延续。
- 能显示判断变化。
- 能提供具体证据。
- 只有相同关键词但没有判断关系的,降权或丢弃。
标签使用规则:
- 优先使用窄标签,如
#Project/AI、#Journal、#Work/Review。
- 谨慎使用宽标签,如
#Think;宽标签只作为最后补充,不作为强相关来源。
- 如果标签搜索返回的是同领域但无张力的 memo,只用于理解背景,不进入最终证据。
- 标签搜索更适合找到近期问题簇,不适合单独证明长期母题。
旧 memo 的作用不是装饰性引用,而是提供:
- 延续:用户以前也在想这个。
- 变化:用户现在的判断变了。
- 反差:用户说的和做的不同。
- 证据:这不是 AI 发挥,而是记录里真的有。
- 分叉:这里有两条路可以继续讨论。
没有旧 memo 证据,就降级成普通昨日观察,不要叫“回声”。
如果主要证据来自关键词搜索,要在输出前保持判断克制。必要时说明相关性来自关键词检索,不要把它包装成强相关回声。
5. 生成一条主回声
默认只输出 1 条主回声。只有当 profile.md 的 User Preferences / Daily Echo / max_echo_count 明确允许时,才输出 2-3 条。
输出前先判断输出状态:
-
昨日回声
- 有目标日期 memo。
- 有至少 1 条相关旧 memo 作为证据。
- 新旧 memo 之间能说明张力、延续、反差或分叉。
-
昨日观察
- 有目标日期 memo。
- 但没有足够旧 memo 证据,或旧 memo 关系较弱。
- 可以短评昨天的一个现象,但不要叫“回声”,也不要使用“来自过去”的说法。
-
沉默 / 简短说明
- 目标日期没有 memo,或只有流水事实,或没有明显张力。
- 如果
silence_when_no_tension: true,只简短说明“昨天没有形成明显回声”,不要生成日报。
结构:
**昨日回声**
我觉得你昨天真正值得继续讨论的不是「A」,而是「B」。
昨天你写到:……
这让我想起你以前写过:……
我觉得它们之间的关系是:……
可以继续追问一个问题:……
要求:
- 开头直接给判断。
- 必须有昨日 memo 依据。
- 必须有旧 memo 依据。
- 必须说明新旧记录之间的关系。
- 结尾只留 1 个问题。
- 不要列 5 点建议。
- 不要写成日报。
- 不要夸用户。
- 不要替用户做最终结论。
共享 profile 的使用边界:
- 值得参考:
- 判断结构,如“不是 A,而是 B”“真正的问题是……”“核心不是……”。
- 克制程度,避免鸡汤化、过度心理分析和替用户升华。
- 保存价值判断,用来识别哪些内容值得说、哪些只是噪音。
- 不要照搬:
- memo 格式。Echo 是回应,不一定打标签或使用 bullet。
- 用户第一人称语气。Echo 不是假装成用户本人。
- 过短表达。太像 memo 可能缺少讨论引导。
- 标签习惯。标签用于检索和保存,不应该暴露在 Echo 文本里。
- 原则:Echo 参考用户 style 的“判断方式”和“边界感”,不参考它的“表面文体”。
6. 保存交接
本 skill 默认不写入 flomo。
如果用户说“这个可以存”“整理成 flomo”“保存这段讨论”,交给 flomo-save-reminder:
- 使用本轮讨论作为输入。
- 读取共享 profile。
- 生成 memo 草稿。
- 用户确认后再写入。
Echo 负责引发讨论,save 负责沉淀保存。
7. 能力露出
不要在第一次执行前要求用户设置定时,也不要把用户带进配置流程。
在一次 Echo 输出后,如果本次结果确实形成了可讨论张力,可以轻露出持续能力:
Tips:
我也可以按这个方式看每天的记录:只有发现新旧笔记之间有明显张力时才开口,没东西就沉默。
Tips 必须和正文之间至少空两行,避免用户误以为它是回声内容的一部分。
这句话只是能力露出,不是订阅邀约。可以使用轻量 emoji,如 💡 Tips:,但不要用强 CTA、按钮式文案或营销语气。
不要这样问:
要不要我以后每天提醒你?
只有满足以下情况,才进入持续使用设置:
- 用户明确说“每天帮我看看”“以后都这样”。
- 用户连续 2-3 次主动请求昨日回声。
- 用户对某次 Echo 明确表达有价值,并主动追问能不能持续。
持续使用的真正定时由外层 automation / scheduler 实现,本 skill 只定义被调用后的执行协议。
输出前自检
发出前问五个问题:
- 用户看到后会想回复、反驳或展开吗?
- 这条回声是否依赖真实旧 memo,而不是通用 AI 观点?
- 它有没有指出一个张力、分叉、延续或未完成问题?
- 如果去掉旧 memo,它是否会变得普通?如果是,说明旧 memo 有价值。
- 输出是否足够短,且只留下一个问题?
至少满足前 3 条才输出。
失败处理
- flomo MCP 不可用:说明无法读取 memo,不要生成伪回声。
- 昨日 memo 为空:说明没有足够输入,不生成日报。
- 找不到相关旧 memo:输出“昨日观察”,不要叫“回声”。
- 没有明显张力:如果配置为沉默,就只做简短说明,不生成日报。
- 昨日 memo 缺少 slug 或 slug 相关笔记接口失败:使用关键词 / 主题 / 标签搜索补足,并保持判断克制。
- 共享 profile 缺失:使用保守口吻,不假装已按用户风格生成。
- 只能用关键词检索:判断要克制,避免过度概括。
- 输出后用户无回应:停止,不追问。
- 用户要求保存:交给
flomo-save-reminder,本 skill 不直接写入。
测试口径
至少能通过这些情形:
- 用户说“看看昨天能出来啥”:应该触发。
- 用户普通讨论 Echo 产品定位:不应该触发。
- 昨天没有 memo:不生成日报。
- 没找到旧 memo:不生成“来自过去”的回声。
- 有 memo 但关系弱:输出“昨日观察”,不是“昨日回声”。
- 没有明显张力:按配置沉默或简短说明。
- 输出只有一个主问题。
- 第一次成功输出后:可以轻露出每日检查能力,但不直接推定时。
- 用户说“保存这段”:转交
flomo-save-reminder,写入前确认。
- 共享 profile 过期:继续执行,但不阻塞。
成功标准
一次好的 Echo 不是让用户觉得“总结得不错”,而是让用户想:
- “这个关系我之前没意识到。”
- “这里我不同意,我要解释一下。”
- “这条旧笔记可以展开。”
- “这段值得保存回 flomo。”