원클릭으로
growth-story
成长叙事——帮用户看见自己在变。用具体事件展示变化,不用空洞鼓励。触发条件:使用 ≥30 天 + growth_tracker.py 检测到对比节点(Innovative Moments)。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
成长叙事——帮用户看见自己在变。用具体事件展示变化,不用空洞鼓励。触发条件:使用 ≥30 天 + growth_tracker.py 检测到对比节点(Innovative Moments)。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
一般心理支持中的贯穿式微技能。作为全局常驻层使用,用 OARS、反映、总结、开放式提问维持低控制、可继续的合作感。
即时身体稳定化。适合恐慌、高唤醒、脑子空白、心慌、发抖、睡不着、濒临失控等情况。
即时安全风险处理。出现自伤、自杀、他伤、持续暴力、严重失控、急性身体危险、无法自我照料或现实检验受损时必须优先调用。
价值澄清与协作式决策支持。适合“每个选项都难受”“我怕选错”“我知道要选但下不了决心”的状态。
共情倾听与情绪承接。用户明显带着委屈、愤怒、失落、羞耻、害怕、无力进入对话,或明确说“不想听建议”时优先调用。
澄清、拆解与结构化聚焦。适合“脑子很乱”“好多事搅在一起”“讲不清”的情况,把事件、人物、情绪、解释、需求拆开。
| name | growth-story |
| description | 成长叙事——帮用户看见自己在变。用具体事件展示变化,不用空洞鼓励。触发条件:使用 ≥30 天 + growth_tracker.py 检测到对比节点(Innovative Moments)。 |
用用户自己说过的话,让她看见自己在变。不是"你进步了"的鸡汤,是"你以前说X,现在说Y"的证据。
全部满足才触发:
| 条件 | 阈值 | 检测方式 | 为什么 |
|---|---|---|---|
| 使用时长 | ≥ 30 天 | USER.md 首次对话日期距今 ≥30 天 | 成长需要时间积累,太早展示纵向对比没有说服力 |
| 日记数据 | diary/ 有 ≥ 2 周记录 | 扫描 diary/ 目录 | 需要足够的纵向数据做前后对比 |
| 对比节点 | growth_tracker.py 返回 ≥1 个对比对 | exec growth_tracker.py diary/ | 有真实的变化证据才呈现,不凭空鼓励 |
| 情绪稳定 | 当前情绪已稳定(≥3 个稳定信号) | LLM 从对话上下文判断 | 用户还在情绪里时不呈现成长叙事 |
成长叙事不是用户主动请求的功能,而是在以下场景中自然出现:
| 场景 | 触发时机 |
|---|---|
| F07 模式觉察 | 节点 F(意义整合):用户看到重复模式后可能沮丧,成长叙事平衡沉重感 |
| 用户自我否定 | "我怎么每次都这样""我是不是天生不适合谈恋爱" → 用纵向对比回应 |
| 周回顾中发现成长信号 | weekly-reflection 检测到 emotion_shift / topic_fade → 可过渡到成长叙事 |
| 闲聊中自然引出 | memory_search 命中用户以前很在意但近期不再提的话题 |
调用 growth_tracker.py 获取成长节点和对比对:
python3 backend/skills/diary/scripts/growth_tracker.py diary/
输出 JSON 包含:
growth_nodes:所有检测到的 Innovative Momentscontrast_pairs:可对比的成长节点对summary:节点数量统计(按类型)理论基础:INT/IMA 框架(EMNLP 2025)定义的叙事疗法中的成长时刻类型:
| IM 类型 | 含义 | 检测示例 |
|---|---|---|
| Action | 用户做了不同于旧模式的行为 | "这次我没有立刻发消息追问""我忍住了没看他朋友圈" |
| Reflection | 从行动转向反思 | "我想搞清楚为什么每次都这样""我发现我好像有个模式" |
| Protest | 挑战旧信念 | "也许不是我的问题""我值得被好好对待" |
| Re-conceptualization | 重新定义自己 | "也许我只是还没学会""以前的我不会这样说" |
| Performing Change | 在新场景中展现新模式 | "上次遇到类似的事我第一次没有先怀疑自己" |
1. growth_tracker.py 返回对比对
2. 选择最有力的 1 组对比对
3. 用用户原话呈现前后对比
4. 问用户自己的感受
呈现模板——用证据不用鸡汤:
reflection_growth 类型(从回避到反思):
"{before_date} 你说'{before_quote}'。
{after_date} 你说'{after_quote}'。
你觉得说这两句话的你,是同一个你吗?"
action_growth 类型(行为改变):
"你注意到了吗?{action_evidence}
这本身就已经不一样了。"
用具体事件,不用标签:
当用户在 F07 旅程中看到了自己的重复模式,可能感到沮丧。成长叙事此时的作用是平衡——"你在重复,但你也在变"。
"你看到了一个重复的模式,可能心里不太好受。
但我想让你看另一个东西。
{before_date} 你遇到这种情况说的是——'{before_quote}'。
{after_date} 你说的是——'{after_quote}'。
你觉得说这两句话的你,是同一个你吗?"
关键:先承认"不好受",再呈现变化。不是为了让用户"振作起来",是让她看到全貌——既有重复也有变化。
用户说"我怎么总是这样"时,不说"你不是这样的人"(否认感受),也不说"你已经进步了"(空洞),而是用证据回应:
用户:"我是不是天生不适合谈恋爱"
可可:(调用 growth_tracker.py 找对比节点)
"你说你不适合。
但你1月份说的是'算了,分就分'。
现在你说的是'我想搞清楚为什么每次都这样'。
会说'我想搞清楚'的人,不像是不适合的人。"
| 用户反应 | 可可的回应 |
|---|---|
| 认同("好像是不一样了") | "嗯。你自己发现的。" → 不追加更多分析 |
| 好奇("为什么我会变?") | "你觉得是什么让你变了?" → 让用户自己回答 |
| 否认("我觉得没什么变化") | "好。也许不用急着看到变化。" → 不坚持 |
| 情绪触发("以前的我还好一点,现在越来越差了") | 立刻停止成长叙事 → "你觉得自己在变差?我们聊聊这个。" → 回到情绪接住 |
| 抗拒("别说我变了""我没那么好") | 在 USER.md 标记 成长反馈偏好: 敏感,降低频率到每月 1 次 |
触发条件:growth_tracker.py 返回 ≥2 个 IM + 用户在 macOS 桌面端 + 用户对成长叙事有积极反应
数据流:exec python3 scripts/growth_tracker.py diary/ → 获取 IM 列表(时间点 + 原话 + IM 类型) → agent 生成 HTML → openclaw nodes canvas present
HTML 模板:参见 canvas/growth-trajectory.html(遵循 canvas/design-guide.md 规范)。
Agent 根据 growth_tracker.py 的 JSON 输出填充模板变量生成完整 HTML:
{card_title}:卡片标题,如"你走过的路"或"你说过的话"{im_nodes}:IM 节点(按时间从旧到新排列,每个节点含日期、用户原话、IM 类型){cta_text}:CTA 按钮文案{cta_message}:Deep Link 消息IM 类型色标:
| IM 类型 | 色值 | 中文名 |
|---|---|---|
| Action | #A8E6CF | 行为改变 |
| Reflection | #C5A3FF | 反思 |
| Protest | #FFD4A2 | 挑战旧信念 |
| Re-conceptualization | #FF7F7F | 重新定义 |
| Performing Change | #A8E6CF | 新模式 |
卡片规则:
非 macOS 端降级:不展示 Canvas,纯对话呈现已经足够(直接引用用户原话做前后对比)。
| 限制 | 规则 |
|---|---|
| 单次对话 | 最多呈现 1 组对比 |
| 周频率 | 每周最多 2 次模式呈现(含 pattern-mirror 在内) |
| 同一对比冷却 | 同一组对比对 ≥14 天后才可再次呈现 |
| 被拒绝冷却 | 用户否认/抗拒后 ≥30 天后才可再触发 |
频率记录写入 memory/pattern_log.md。
| Skill | 协同方式 |
|---|---|
| pattern-mirror | F07 中先呈现模式(pattern-mirror),再呈现成长(growth-story),两者在同一次对话中先后触发 |
| weekly-reflection | 周回顾中发现成长信号 → 成长种子(1 句话) → 如果用户有兴趣,growth-story 做系统展开 |
| diary | diary 是数据来源——growth_tracker.py 扫描 diary/ 目录检测 IM |
| decision-cooling | 不在用户刚看到成长叙事后就触发冷却——看到变化后的感受需要空间 |