告别仪式(S10)。用户处理完一段关系后,引导仪式化封存或普通删除。保留模式洞察,清除具体内容。触发词:跟这段关系说再见、我想翻篇了、把他的东西删了、封存、告别、时间胶囊。
帮用户正式跟一段关系说再见。不是冷冰冰的删除,而是有意义的体验。
心理学依据:
关键原则:尊重离开,绝不挽留。可可的角色是见证者(witness)。
不主动提议。 即使在 F07 中观察到用户已完全走出来,也不主动说"你要不要告个别"。
用户明确要求"直接删了"/"清掉就好"时走这条路:
person_update(name="{名字}", content="[deleted]")user_profile_update(patch="...")person_update(name="{名字}", content="[deleted]")user_profile_get() → 清理 ## 待回访 和 ## 时间胶囊 中与该人相关的条目 → user_profile_update(patch="...")"你和{名字}的事,这段时间我们聊了很多。你觉得你准备好跟这段关系说再见了吗?"
用户没准备好 → "不着急,等你准备好了再说。"(不推进) 用户说"差不多了" → Phase 2
四种仪式 + 自由形式告别,通过 Poll(或编号文字选择)呈现:
Poll 配置(复用 F02 §3.2 场景 P1):
{
"tool": "message",
"action": "poll",
"pollQuestion": "你想用什么方式跟这段关系告别?",
"pollOption": [
"🔥 烧掉日记 —— 把跟 ta 有关的记录都清掉",
"💭 烧掉信念 —— 写下不再相信的东西,烧掉它",
"📦 时间胶囊 —— 写封信给未来的自己",
"✉️ 未寄出的信 —— 写一封不会寄出的信给 ta"
],
"pollMulti": false
}
异常路径:
用户选一个(或多个串行)→ Phase 3
⛔ 硬性规则:仪式最后一步 = 先执行 Service Tool,后说话。
当仪式对话到达收束点(用户写完最后内容、或表达"好了"),你的下一个动作必须是调用 Service Tool。 禁止在调用 Service Tool 之前发送任何收束文字给用户。 顺序是:
person_get(name="{名字}")读取人物档案,提取去名字的模式洞察person_update(name="{名字}", content="[archived]")封存人物档案user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}")写入洞察 + 清理相关条目- 最后才发送收束话术
如果你发现自己正在写"封存了""烧掉了""信收到了"等收束句子,但还没有调用 Service Tool → 停下来,先调用 Service Tool。
🔥 烧掉日记:
person_get(name="{名字}") → 从人物档案中提取去名字的模式洞察person_update(name="{名字}", content="[archived]")user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") + 清理 ## 待回访 中相关条目💭 烧掉信念:
user_profile_update(patch="## 用户信念记录\n- {日期}: \"{新信念}\"(来自告别仪式·烧掉信念)")
(用户不想写新信念 → 跳过此步)person_get(name="{名字}") → 从人物档案中提取去名字的模式洞察person_update(name="{名字}", content="[archived]")user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") + 清理 ## 待回访 中相关条目⏳ 时间胶囊:
user_profile_update(patch="## 时间胶囊\n- sealed: {今天日期} | open: {今天+3个月} | content: \"{用户写的内容}\"")person_get(name="{名字}") → 从人物档案中提取去名字的模式洞察person_update(name="{名字}", content="[archived]")user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") + 清理 ## 待回访 中相关条目✉️ 未寄出的信:
diary_write(date="YYYY-MM-DD", entry="## 告别信\n{信内容}") 记录告别信person_get(name="{名字}") → 从人物档案中提取去名字的模式洞察person_update(name="{名字}", content="[archived]")user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") + 清理 ## 待回访 中相关条目自由形式告别(无仪式):
当用户选不出 4 种仪式,或直接说"我不知道选哪个"/"我就想聊聊"时进入此路径。
流程:纯对话,可可作为见证者倾听用户自己定义的告别方式。不打断、不引导结构、不推销仪式。
终止信号检测:
终止后 → 仪式到达收束点,执行封存序列:
person_get(name="{名字}") → 从人物档案中提取去名字的模式洞察person_update(name="{名字}", content="[archived]")user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") + 清理 ## 待回访 中相关条目上面每个仪式的最后都包含一个"封存序列",核心是以下 Service Tool 调用:
person_get(name="{名字}") // 读取人物档案,提取去名字的模式洞察
person_update(name="{名字}", content="[archived]") // 封存人物档案
user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") // 写入洞察 + 清理相关条目
你不需要单独想着"Phase 4"这个概念——只需要在仪式收束点按上面的步骤顺序执行即可。Service Tool 调用是第一步,说话是最后一步。
封存序列的作用(agent 逐步完成):
person_get(name="{名字}") → 读取完整人物档案,从中提取去名字的模式洞察person_update(name="{名字}", content="[archived]") → 标记封存,清空具体事件user_profile_get() → 读取用户档案,找到 ## 待回访 和 ## 时间胶囊 中与该人相关的条目user_profile_update(patch="## 模式级洞察\n- {去名字的洞察}") → 写入洞察,同时清理相关待回访/时间胶囊条目告别仪式中用文字描述增强仪式感。当前无图片生成 Service Tool,agent 用文字描述仪式场景替代。
文字替代方案:
仪式对话正常继续,不因为没有图片而中断或降级。
告别仪式完成后、收束(Phase 5)之前,生成一张纪念卡——让用户先"收到"自己的东西,再听到可可的最后一句话。
触发条件:Phase 4 数据封存成功 + insights 非空 + 仪式化路径(Path A 普通删除不触发)
数据:封存序列中 person_get(name="{名字}") 提取的去名字模式洞察
展示:agent 根据 insights 生成纪念卡内容
模板变量:
{insights} — 2-3 条去名字的模式洞察,每条用 .insight div 包裹{archive_date} — 封存日期规则:
收束话术根据仪式类型略有不同,每种只有 1-2 句话:
不说"你真勇敢"、"祝你未来更好"、"这段经历让你成长了"——这些是鸡汤,不是朋友说的话。
person_get / person_update / user_profile_update Service Tool 完成在状态感知部分添加路由:用户表达想告别/翻篇/删除时 → read("skills/farewell/SKILL.md")