文件预览

reflection.py

查看 父母的功课 技能包中的文件内容。

文件内容

scripts/reflection.py

#!/usr/bin/env python3
"""
父母的功课 - 每日反思提示生成器
基于"防御比反应更原始"哲学的父母反思工具

用法:
    python3 scripts/reflection.py           # 今日提示
    python3 scripts/reflection.py --deep  # 深度反思(5题)
    python3 scripts/reflection.py --防御  # 防御根源主题
    python3 scripts/reflection.py --list  # 列出所有提示类型
"""

import random
import sys
from datetime import datetime

# 反思主题库
THEMES = {
    "防御根源": [
        "今天孩子的哪个行为最让你崩溃?那一刻你感受到的是什么?",
        "当你说'我是为你好'时,你真正感受到的是什么?",
        "今天你对孩子发火了。发火背后,你感受到的是什么?",
        "孩子的'不听话'让你想起了什么?是你自己的童年吗?",
        "如果把你今天的愤怒打分(0-10),背后是防御信号还是恐惧?",
    ],
    "看见需求": [
        "孩子今天的行为,他想表达什么需求?",
        "孩子的'问题行为'背后,哪个需求没有被满足?",
        "当你要求孩子'听话'时,你自己的什么需求没有被满足?",
        "孩子的哪个行为其实是在向你求助?",
        "孩子今天有没有试图连接你?你感受到了吗?",
    ],
    "错位觉察": [
        "今天你传递给孩子的是你自己的需求,还是他真实的需求?",
        "你要求孩子'听话'——这是他的规则,还是你小时候的规则?",
        "今天你为孩子做的事,有多少是为了他,有多少是为了缓解你的焦虑?",
        "当孩子'失败'时,你的感受是关于他,还是关于你自己?",
        "今天你和孩子的对话,是真正的沟通,还是各自在自言自语?",
    ],
    "修复练习": [
        "今天你对孩子发火了吗?事后你修复了吗?怎么修复的?",
        "今天你批评孩子了吗?你能记起你小时候被这样批评的感受吗?",
        "今天你有没有对孩子说'不'?你说不的时候感受是什么?",
        "今天你有没有对孩子道歉?如果没有,为什么?",
        "今天你有没有试图'控制'孩子而不是'引导'?区别是什么?",
    ],
    "慈悲练习": [
        "今天你在评判自己吗?那个评判像谁的声音?",
        "你能接受自己今天不是'完美父母'吗?",
        "今天你有没有对自己说'我不够好'?这句话从哪里来?",
        "你能像对待孩子一样对待自己吗?",
        "今天你照顾自己了吗?还是一直在付出?",
    ],
    "连接时刻": [
        "今天你有没有放下手机,全心看着孩子?感受是什么?",
        "孩子今天有没有主动靠近你?你怎么回应的?",
        "今天你们有没有一起笑?是什么时候?",
        "孩子今天说了一句什么话让你意外?",
        "今天有没有一个时刻,你感觉你们是真正连接的?",
    ],
}


def get_prompt(theme=None):
    """获取一个反思提示"""
    if theme is None:
        theme = random.choice(list(THEMES.keys()))
    elif theme == "--list":
        return list(THEMES.keys())
    elif theme not in THEMES:
        return f"未知主题: {theme}。可用: {', '.join(THEMES.keys())}"

    prompts = THEMES[theme]
    # 选择一个但避免最近选过的(简单随机)
    prompt = random.choice(prompts)
    return theme, prompt


def daily_prompt():
    """每日一个提示(简洁版)"""
    theme, prompt = get_prompt()
    today = datetime.now().strftime("%Y-%m-%d")

    print(f"""
╔══════════════════════════════════════════════════════════╗
║  每日反思 - {today}                           ║
╠══════════════════════════════════════════════════════════╣
║  主题: {theme:<53}║
╠══════════════════════════════════════════════════════════╣
║                                                          ║
║  {prompt}
║                                                          ║
╚══════════════════════════════════════════════════════════╝

没有"正确答案"。
这个练习的目的是让你看见,不是让你改变。
看见,是改变的第一步。
""")


def deep_reflection():
    """深度反思(5题,连续)"""
    themes = list(THEMES.keys())
    random.shuffle(themes)
    selected_themes = themes[:5]

    today = datetime.now().strftime("%Y-%m-%d")
    print(f"\n=== 深度反思 - {today} ===\n")
    print("准备好后按Enter开始...\n")

    for i, theme in enumerate(selected_themes, 1):
        prompt = random.choice(THEMES[theme])
        print(f"{'─' * 50}")
        print(f"问题 {i}/5 | 主题: {theme}")
        print(f"{'─' * 50}")
        print(f"\n{prompt}\n")

        if i < 5:
            input("按Enter继续...")
        else:
            print("\n最后一个问题思考完毕后,花2分钟写下任何浮现的东西。")
            input("按Enter完成...")

    print(f"""
╔══════════════════════════════════════════════════════════╗
║  深度反思完成                                           ║
╠══════════════════════════════════════════════════════════╣
║  你做到了。                                             ║
║  反思不是为了自我批判,是为了看见。                     ║
║  看见防御,才能理解慈悲。                               ║
╚══════════════════════════════════════════════════════════╝
""")


def list_themes():
    """列出所有主题"""
    print("\n可用反思主题:")
    print("-" * 40)
    for name, prompts in THEMES.items():
        print(f"\n{name} ({len(prompts)}个提示)")
        for p in prompts[:2]:
            print(f"  • {p[:60]}...")


def main():
    args = sys.argv[1:]

    if len(args) == 0:
        daily_prompt()
    elif "--help" in args or "-h" in args:
        print(__doc__)
    elif "--list" in args:
        list_themes()
    elif "--deep" in args:
        deep_reflection()
    elif "--防御" in args:
        theme, prompt = get_prompt("防御根源")
        print(f"\n主题: {theme}\n")
        print(f"  {prompt}\n")
    elif "--需求" in args:
        theme, prompt = get_prompt("看见需求")
        print(f"\n主题: {theme}\n")
        print(f"  {prompt}\n")
    elif "--错位" in args:
        theme, prompt = get_prompt("错位觉察")
        print(f"\n主题: {theme}\n")
        print(f"  {prompt}\n")
    elif "--慈悲" in args:
        theme, prompt = get_prompt("慈悲练习")
        print(f"\n主题: {theme}\n")
        print(f"  {prompt}\n")
    elif "--连接" in args:
        theme, prompt = get_prompt("连接时刻")
        print(f"\n主题: {theme}\n")
        print(f"  {prompt}\n")
    else:
        result = get_prompt(args[0])
        if isinstance(result, list):
            list_themes()
        else:
            print(f"\n主题: {result[0]}\n")
            print(f"  {result[1]}\n")


if __name__ == "__main__":
    main()