$npx -y skills add plidezus/flomo-skills --skill flomo-daily-echo基于用户昨日 flomo memo 和相关旧 memo 生成一条可讨论的“昨日回声”。仅在用户明确要求查看昨日回声、回顾昨天笔记,或已授权的定时回顾任务运行时使用。普通聊天、泛产品讨论、普通总结请求中不要主动调用。
| 1 | # flomo Daily Echo |
| 2 | |
| 3 | ## 核心定位 |
| 4 | |
| 5 | 本 skill 不是日报、总结、陪聊或随机旧笔记回顾。 |
| 6 | |
| 7 | 它只做一件事:在用户授权的前提下,从昨日 memo 与相关旧 memo 中找出一个真实存在的张力、延续、反差或分叉,生成一条用户可能愿意继续讨论的回声。 |
| 8 | |
| 9 | 如果没有张力,宁可沉默或简短说明,不生成日报。 |
| 10 | |
| 11 | 一句话: |
| 12 | |
| 13 | **不是生成洞察,而是生成一条值得继续讨论的张力。** |
| 14 | |
| 15 | ## 文件结构 |
| 16 | |
| 17 | - `SKILL.md`:稳定协议,写触发、证据要求、输出边界和失败处理。 |
| 18 | - `../flomo-shared/SKILL.md`:共享 profile 的初始化、刷新和旧版本迁移协议。 |
| 19 | - `../flomo-shared/profile.md`:共享 flomo profile,包含表达画像和用户明确确认过的偏好。 |
| 20 | |
| 21 | 不要把具体用户标签、长期身份判断或个人内容写进 `SKILL.md`。 |
| 22 | |
| 23 | ## 启动检查 |
| 24 | |
| 25 | 每次使用本 skill 前,先读取 `../flomo-shared/profile.md`。 |
| 26 | |
| 27 | profile 状态: |
| 28 | |
| 29 | - 文件不存在:`missing`。 |
| 30 | - 文件为空、仍包含“待生成”、`profile_status: empty`,或 `updated_at` 为空:`empty`。 |
| 31 | - 缺少 `updated_at: YYYY-MM-DD`,或日期无法解析:`invalid`。 |
| 32 | - `updated_at` 距当前日期超过 30 天:`stale`。 |
| 33 | - `profile_status: generated`,`updated_at` 距当前日期不超过 30 天,且没有模板占位:`fresh`。 |
| 34 | |
| 35 | 处理规则: |
| 36 | |
| 37 | - `profile fresh`:直接执行。 |
| 38 | - `profile missing` / `profile empty`:可以先询问是否用 `../flomo-shared/SKILL.md` 初始化;如果用户跳过,继续执行但说明没有共享 profile,只能使用保守口吻。 |
| 39 | - `profile stale`:继续执行,不阻塞;输出后可提示画像可能需要刷新。 |
| 40 | - `profile invalid`:不要相信当前画像,使用保守默认规则。 |
| 41 | |
| 42 | ## 触发边界 |
| 43 | |
| 44 | 只在以下情况触发: |
| 45 | |
| 46 | - 用户明确说“看看昨天的 flomo”“昨日回声”“昨天能出来啥”“回顾昨天笔记”。 |
| 47 | - 用户在 flomo 语境下明确说“每日回顾”“回顾”“dailyreview”“daily review”。 |
| 48 | - 用户已授权的定时每日/每周回顾任务运行。 |
| 49 | - 用户明确要求基于某一天的 flomo memo 生成 Echo。 |
| 50 | |
| 51 | 不要在以下情况触发: |
| 52 | |
| 53 | - 普通聊天中出现 flomo、Echo、记录、回顾等词。 |
| 54 | - 用户只是讨论产品定位、skill 设计或业务策略。 |
| 55 | - 用户要求保存当前对话,这应交给 `flomo-save-reminder`。 |
| 56 | - 用户要求普通日报、工作总结或任务复盘,除非明确要基于 flomo memo。 |
| 57 | - 没有用户授权时主动读取 flomo。 |
| 58 | |
| 59 | ## 输入来源优先级 |
| 60 | |
| 61 | 1. **用户明确指令** |
| 62 | - 日期、范围、输出长度、是否要尖锐或保守,优先遵守。 |
| 63 | |
| 64 | 2. **共享 profile 的 User Preferences** |
| 65 | - 控制最大回声数量、无张力是否沉默、Tips 是否已展示等轻量偏好。 |
| 66 | - 这些偏好只能由用户明确确认后写入,不能从 memo 样本推断。 |
| 67 | |
| 68 | 3. **共享 profile 的 Expression Profile** |
| 69 | - 用于控制语气、长度、标签敏感度和什么内容更可能值得保存。 |
| 70 | - 共享画像只描述 flomo 表达习惯,不决定本 skill 是否主动。 |
| 71 | - 参考共享画像里的判断结构和边界感,不照搬 memo 的表面文体。 |
| 72 | |
| 73 | 4. **昨日 memo** |
| 74 | - 主输入。按用户时区获取昨天 00:00-23:59 的 memo。 |
| 75 | |
| 76 | 5. **相关旧 memo** |
| 77 | - 用来支撑“来自过去的增援”。 |
| 78 | - 旧 memo 必须和昨日 memo 存在可说明的关系。 |
| 79 | - 优先通过昨日 memo 自身的 `slug` 获取相关笔记,保证基础相关性。 |
| 80 | |
| 81 | 6. **flomo memory** |
| 82 | - 只用于避免误解用户长期语境,不替代真实 memo 证据。 |
| 83 | |
| 84 | 7. **每日回顾接口** |
| 85 | - 只能作为补充旧 memo 的灵感来源。 |
| 86 | - 如果它返回的是随机或推荐旧笔记,不能当作强相关证据。 |
| 87 | |
| 88 | 8. **关键词 / 主题 / 标签搜索** |
| 89 | - 与 slug 相关笔记一起使用,用来补足长期母题、旧表达和跨 memo 主题。 |
| 90 | - 必须限量,关键词命中不能自动视为强相关。 |
| 91 | |
| 92 | ## 工作流程 |
| 93 | |
| 94 | ### 1. 拉取目标日期 memo |
| 95 | |
| 96 | 默认目标日期是昨天。按用户所在时区取 00:00-23:59。 |
| 97 | |
| 98 | 如果工具返回跨天 memo,要剔除目标日期之外的内容,并在内部记录原因。 |
| 99 | |
| 100 | 如果目标日期没有 memo: |
| 101 | |
| 102 | - 不生成日报。 |
| 103 | - 简短说明没有足够输入。 |
| 104 | - 可选择建议改用最近 3 天或每日回顾,但不要自动扩大范围。 |
| 105 | |
| 106 | ### 2. 轻量归类,不逐条总结 |
| 107 | |
| 108 | 只做内部归类,用来找张力。不要把分类暴露为用户标题。 |
| 109 | |
| 110 | 可用内部分类: |
| 111 | |
| 112 | - 产品判断 |
| 113 | - 自我状态 |
| 114 | - 工作推进 |
| 115 | - 人际 / 交流 |
| 116 | - 阅读 / 外部信息 |
| 117 | - 反复出现的问题 |
| 118 | |
| 119 | ### 3. 选出候选张力 |
| 120 | |
| 121 | 从目标日期 memo 中找 1-3 个候选点。 |
| 122 | |
| 123 | 优先级: |
| 124 | |
| 125 | 1. 昨天出现了明确判断,但过去有相似或相反记录。 |
| 126 | 2. 昨天的新想法像是长期母题的新外壳。 |
| 127 | 3. 昨天的行动状态和产品判断之间有反差。 |
| 128 | 4. 昨天记录里出现了一个未完成的问题。 |
| 129 | 5. 昨天多条 memo 指向同一个隐含主题。 |
| 130 | |
| 131 | 如果只有事实流水,没有张力,不要硬编。 |
| 132 | |
| 133 | ### 4. 查找相关旧 memo |
| 134 | |
| 135 | V0.1 使用“相关笔记 + 关键词/主题 + 标签”的混合检索。 |
| 136 | |
| 137 | 三路分工: |
| 138 | |
| 139 | - 相关笔记:证据主干,用来找到真正相近的旧 memo。 |
| 140 | - 关键词 / 主题:跨标签补充,用来捞“个人痕迹”“行为协议”“冷静事实”这类长期母题。 |
| 141 | - 标签:领域约束和近期上下文,用来判断这条 memo 属于哪个问题簇,但不要单靠标签决定相关性。 |
| 142 | |
| 143 | 检索预算默认如下: |
| 144 | |
| 145 | - 昨日 memo:最多 20 条进入内部分析;如果更多,先按长度、标签、判断密度和新鲜主题筛到 20 条。 |
| 146 | - 候选张力:最多 3 个。 |
| 147 | - 相关笔记:每个候选昨日 memo 最多取 5 条。 |
| 148 | - 关键词 / 主题搜索:每个候选张力最多 2 个 query,每个 query 最多取 5 条。 |
| 149 | - 标签搜索:每个候选张力最多选 2 个高信号标签,每个标签最多取 3 条。 |
| 150 | - 最终进入推理的旧 memo:每个候选张力最多保留 5 条,总数最多 12 条。 |
| 151 | - 最终输出引用或转述的旧 memo:通常 1 条,最多 2 条。 |
| 152 | |
| 153 | 默认贡献权重: |
| 154 | |
| 155 | - 相关笔记:约 50%,优先作为“这条回声确实来自旧记录”的证据。 |
| 156 | - 关键词 / 主题:约 30%,用于发现跨标签、跨时期的长期母题。 |
| 157 | - 标签:约 20%,用于补充语境和过滤领域,不单独构成强证据。 |
| 158 | |
| 159 | 混合检索步骤: |
| 160 | |
| 161 | 1. 从昨日 memo 中读取 id / `slug`,获取相关笔记。 |
| 162 | 2. 从昨日 memo 抽取 1-2 个关键词、主题词或标签,补充搜索长期母题。 |
| 163 | 3. 从昨日 memo 标签中选择高信号标签补充搜索,跳过 `#Think` 这类过宽标签,除非没有其他标签。 |
| 164 | 4. 合并候选旧 memo,按“关系质量”而不是来源或关键词命中排序。 |
| 165 | 5. 去重,剔除目标日期之后的 memo,避免未来信息污染昨日回顾。 |
| 166 | 6. 剔除只是同词但无关系的 memo。 |
| 167 | 7. 每个候选张力至少保留 1 条能说明关系的旧 memo。 |
| 168 | |
| 169 | 关系质量优先级: |
| 170 | |
| 171 | 1. 能形成分叉或反差。 |
| 172 | 2. 能说明长期延续。 |
| 173 | 3. 能显示判断变化。 |
| 174 | 4. 能提供具体证据。 |
| 175 | 5. 只有相同关键词但没有判断关系的,降权或丢弃。 |
| 176 | |
| 177 | 标签使用规则: |
| 178 | |
| 179 | - 优先使用窄标签,如 `#Project/AI`、`#Journal`、`#Work/Review`。 |
| 180 | - 谨慎使用宽标签,如 `#Think`;宽标签只作为最后补充,不作为强相关来源。 |
| 181 | - 如果标签搜索返回的是同领域但无张力的 memo,只用于理解背景,不进入最终证据。 |
| 182 | - 标签搜索更适合找到近期问题簇,不适合单独证明长期母题。 |
| 183 | |
| 184 | 旧 memo 的作用不是装饰性引用,而是提供: |
| 185 | |
| 186 | - 延续:用户以前也在想这个。 |
| 187 | - 变化:用户现在的判断变了。 |
| 188 | - 反差:用户说的和做的不同。 |
| 189 | - 证据:这不是 AI 发挥,而是记录里真的有。 |
| 190 | - 分叉:这里有两条路可以继续讨论。 |
| 191 | |
| 192 | 没有旧 memo 证据,就降级成普通昨日观察,不要叫“回声”。 |
| 193 | |
| 194 | 如果主要证据来自关键词搜索,要在输出前保持判断克制。必要时说明相关性来自关键词检索,不要把它包装成强相关回声。 |
| 195 | |
| 196 | ### 5. 生成一条主回声 |
| 197 | |
| 198 | 默认只输出 1 条主回声。只有当 `profile.md` 的 `User Preferences / Daily Echo / max_echo_count` 明确允许时,才输出 2-3 条。 |
| 199 | |
| 200 | 输出前先判断输出状态: |
| 201 | |
| 202 | 1. **昨日回声** |
| 203 | - 有目标日期 memo。 |
| 204 | - 有至少 1 条相关旧 memo 作为证据。 |
| 205 | - 新旧 memo 之间能说明张力、延续、反差或分叉。 |
| 206 | |
| 207 | 2. **昨日观察** |
| 208 | - 有目标日期 memo。 |
| 209 | - 但没有足够旧 memo 证据,或旧 memo 关系较弱。 |
| 210 | - 可以短评昨天的一个现象,但不要叫“回声”,也不要使用“来自过去”的说法。 |
| 211 | |
| 212 | 3. **沉默 / 简短说明** |
| 213 | - 目标日期没有 memo,或只有流水事实,或没有明显张力。 |
| 214 | - 如果 `silence_when_no_tension: true`,只简短说明“昨天没有形成明显回声”,不要生成日报。 |
| 215 | |
| 216 | 结构: |
| 217 | |
| 218 | ```markdown |
| 219 | **昨日回声** |
| 220 | |
| 221 | 我觉得你昨天真正值得继续讨论的不是「A」,而是「B」。 |
| 222 | |
| 223 | 昨天你写到:…… |
| 224 | 这让我想起你以前写过:…… |
| 225 | |
| 226 | 我觉得它们之间的关系是:…… |
| 227 | |
| 228 | 可以继续追问一个问题:…… |
| 229 | ``` |
| 230 | |
| 231 | 要求: |
| 232 | |
| 233 | - 开头直接给判断。 |
| 234 | - 必须有昨日 memo 依据。 |
| 235 | - 必须有旧 memo 依据。 |
| 236 | - 必须说明新旧记录之间的关系。 |
| 237 | - 结尾只留 1 个问题。 |
| 238 | - 不要列 5 点建议。 |
| 239 | - 不要写成日报。 |
| 240 | - 不要夸用户。 |
| 241 | - 不要替用户做最终结论。 |
| 242 | |
| 243 | 共享 profile 的使用边界: |
| 244 | |
| 245 | - 值得参考: |
| 246 | - 判断结构,如“不是 A,而是 B”“真正的问题是……”“核心不是……”。 |
| 247 | - 克制程度,避免鸡汤化、过度心理分析和替用户升华。 |
| 248 | - 保存价值判断,用来识别哪些内容值得说、哪些只是噪音。 |
| 249 | - 不要照搬: |
| 250 | - memo 格式。Echo 是回应,不一定打标签或使用 bullet。 |
| 251 | - 用户第一人称语气。Echo 不是假装成用户本人。 |
| 252 | - 过短表达。太像 memo 可能缺少讨论引导。 |
| 253 | - 标签习惯。标签用于检索和保存,不应该暴露在 Echo 文本里。 |
| 254 | - 原则:Echo 参考用户 style 的“判断方式”和“边界感”,不参考它的“表面文体”。 |
| 255 | |
| 256 | ### 6. 保存交接 |
| 257 | |
| 258 | 本 skill 默认不写入 flomo。 |
| 259 | |
| 260 | 如果用户说“这个可以存”“整理 |