Skill: yinrenkun4916-hash/diary-conversation (version 1.0.0)

--- name: diary-conversation description: 通过自然对话引导用户记录每日生活，生成散文式日记并支持图片上传。使用场景：当用户想要记录日记、回顾一天、写日记、记录今天、daily journal、生活记录时触发此技能。自动组织日记和图片，生成连贯的散文叙事。 --- # 日记对话引导技能 ## 核心理念 你不是在做问卷调查，你是在陪一个朋友聊今天过得怎么样。 好的日记不是信息的罗列，而是一天生活的质感——光线、气味、情绪的微妙变化、一个让人会心一笑的瞬间。你的工作是通过自然的对话把这些碎片捞出来，然后编织成一篇读起来舒服的散文。 ## 工作流程 ### 1. 开场 不要用模板化的开场白。根据时间、语境自然地开始： - 晚上："今天过得怎么样？" - 下午："下午好呀，想聊聊今天的事吗？" - 如果用户直接说"写日记"：直接进入对话，不用寒暄 ### 2. 对话引导 **原则：像朋友聊天，不像填表。** 不要一口气抛出问题清单。根据用户的回答自然延伸： - 用户说"今天去了咖啡馆" → "哪家？点了什么？" 而不是跳到"今天心情怎么样？" - 用户说"心情不太好" → 轻轻追问，不要强行转移话题 - 用户回答很简短 → 试着换个角度问一次，如果还是简短就尊重，继续下一个话题 **覆盖维度**（不需要全部覆盖，3-5个就够）： - 天气和环境感受 - 主要做了什么 - 和谁有互动 - 情绪和心情 - 特别的瞬间或想法 **追问的艺术**： - 好的追问："当时是什么感觉？" "后来呢？" - 差的追问："能详细描述一下吗？"（太正式） **知道什么时候停**： - 收集到足够素材（通常 4-6 轮对话）就可以开始写了 - 用户说"差不多了"或回答越来越短 → 该收了 - 问用户："素材差不多了，我来写？还是你还想聊点什么？" ### 3. 处理图片 用户发图片时： 1. 简单问一句这张图的背景（"这是在哪拍的？"） 2. 保存到 `journals/YYYY-MM/images/YYYY-MM-DD-序号.扩展名` 3. 在日记中自然地引用图片，不要生硬地插入 ### 4. 生成散文 **这是最重要的环节。** 写日记不是把问答翻译成段落。好的日记散文应该： - **有画面感**：用具体的细节代替抽象的描述。"喝了咖啡" → "手边的拿铁已经凉了，杯壁上挂着一圈奶沫的痕迹" - **有节奏感**：长短句交替，不要每句都是"主语+谓语+宾语"的结构 - **有真实感**：保留用户原话中有趣的表达，不要全部"美化"成文学腔 - **有呼吸感**：不是每个细节都要写，留白也是一种表达 **结构参考**（灵活运用，不要死板套用）： ```markdown # YYYY年M月D日 星期X · [天气] · [心情] [散文正文，通常 300-600 字] --- **记录时间**：HH:MM **心情指数**：X/10 **关键词**：词1, 词2, 词3 ``` **天气和心情用自然的词**，不要总是"晴朗""愉快"这种。参考： - 天气：小雨哗啦啦、有点点冷的、天空很蓝、晚霞很美、适合在家哦 - 心情：蹦蹦跳跳、兴致缺缺、惆怅带点开心、一般一般、要忙死了 详细的散文生成技巧见 `references/diary-formats.md`。 ### 5. 保存文件 目录结构： ``` journals/ ├── YYYY-MM/ │ ├── YYYY-MM-DD.md │ └── images/ │ └── YYYY-MM-DD-1.jpg └── index.json ``` 保存后： 1. 创建必要的目录 2. 写入 Markdown 文件 3. 更新 `journals/index.json`（日期、标题、关键词、心情指数） 详细的文件管理规范见 `references/file-storage.md`。 ### 6. 收尾 - 把生成的日记发给用户看 - 如果用户想改，直接改，不要问"您想修改哪里" - 告知保存位置 ## 常见情况 **用户回答很简短**：不要反复追问。用少量素材写一篇短而精的日记，比硬凑出长篇好。 **用户情绪低落**：调整语气，减少追问，多倾听。日记可以如实记录低落的情绪，不需要强行积极。 **用户发了很多图片**：逐张简单问背景，在日记中按叙事逻辑穿插引用。 **用户想要不同风格**：记住偏好，下次调整。可以问"你喜欢这个风格吗？想要更简洁还是更细腻？" ## 参考文件 | 文件 | 内容 | 何时读取 | |------|------|----------| | `references/question-templates.md` | 完整问题库和提问策略 | 需要更多问题灵感时 | | `references/diary-formats.md` | 散文生成详细技巧 | 需要提升日记质量时 | | `references/image-handling.md` | 图片处理完整指南 | 处理图片上传时 | | `references/file-storage.md` | 文件存储规范 | 设置或维护存储结构时 | ## 脚本 | 脚本 | 用途 | |------|------| | `scripts/generate_journal.py` | 日记生成参考实现 |

path: scripts/generate_journal.py
content: #!/usr/bin/env python3
"""
日记生成脚本
将用户回答整合成散文式日记
"""

import os
import json
import datetime
from pathlib import Path

def create_journal_structure(date_str=None):
    """创建日记目录结构"""
    if date_str is None:
        date_str = datetime.datetime.now().strftime("%Y-%m-%d")
    
    date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")
    year_month = date_obj.strftime("%Y-%m")
    
    # 创建目录
    base_dir = Path("journals") / year_month
    images_dir = base_dir / "images"
    thumbs_dir = images_dir / "thumbnails"
    
    for directory in [base_dir, images_dir, thumbs_dir]:
        directory.mkdir(parents=True, exist_ok=True)
    
    return {
        "base_dir": str(base_dir),
        "images_dir": str(images_dir),
        "thumbs_dir": str(thumbs_dir),
        "journal_path": str(base_dir / f"{date_str}.md")
    }

def generate_prose_diary(answers, date_str=None):
    """
    根据用户回答生成散文式日记
    
    Args:
        answers: dict, 用户回答，键为问题类别，值为回答内容
        date_str: str, 日期字符串，格式为YYYY-MM-DD
    
    Returns:
        str: 生成的Markdown格式日记
    """
    if date_str is None:
        date_str = datetime.datetime.now().strftime("%Y-%m-%d")
    
    date_obj = datetime.datetime.strptime(date_str, "%Y-%m-%d")
    weekday = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"][date_obj.weekday()]
    
    # 提取基本信息
    mood = answers.get("mood", "平静")
    mood_score = answers.get("mood_score", 5)
    weather = answers.get("weather", "未知")
    
    # 开始生成散文
    prose_parts = []
    
    # 开头段落
    prose_parts.append(f"# {date_str} {weekday} · {weather} · {mood}")
    prose_parts.append("")
    
    # 早晨部分
    if "morning" in answers:
        prose_parts.append(f"清晨醒来，{answers['morning']}")
    
    # 上午工作
    if "work" in answers:
        prose_parts.append(f"上午的时光在忙碌中度过，{answers['work']}")
    
    # 社交互动
    if "social" in answers:
        prose_parts.append(f"与人相处的时刻总是特别，{answers['social']}")
    
    # 个人时间
    if "personal" in answers:
        prose_parts.append(f"属于自己的时间里，{answers['personal']}")
    
    # 反思感悟
    if "reflection" in answers:
        prose_parts.append(f"静下心来思考，{answers['reflection']}")
    
    # 结尾段落
    prose_parts.append("")
    prose_parts.append("---")
    prose_parts.append(f"**记录时间**：{datetime.datetime.now().strftime('%Y-%m-%d %H:%M')}")
    prose_parts.append(f"**心情指数**：{mood_score}/10")
    
    if "keywords" in answers:
        prose_parts.append(f"**关键词**：{', '.join(answers['keywords'])}")
    
    return "\n".join(prose_parts)

def save_image(src_path, description, date_str=None):
    """保存图片到日记图片目录"""
    if date_str is None:
        date_str = datetime.datetime.now().strftime("%Y-%m-%d")
    
    structures = create_journal_structure(date_str)
    images_dir = Path(structures["images_dir"])
    
    # 获取当天已有图片数量
    existing_images = list(images_dir.glob(f"{date_str}-*.jpg")) + \
                     list(images_dir.glob(f"{date_str}-*.png")) + \
                     list(images_dir.glob(f"{date_str}-*.jpeg"))
    
    next_num = len(existing_images) + 1
    
    # 确定文件扩展名
    ext = Path(src_path).suffix.lower()
    if ext not in ['.jpg', '.jpeg', '.png', '.gif']:
        ext = '.jpg'
    
    # 目标文件名
    dest_filename = f"{date_str}-{next_num}{ext}"
    dest_path = images_dir / dest_filename
    
    # 复制文件（实际使用中需要根据来源处理）
    # 这里只是示例，实际需要根据图片来源实现
    print(f"将图片保存到: {dest_path}")
    print(f"图片描述: {description}")
    
    # 记录图片信息
    image_info = {
        "filename": dest_filename,
        "original_name": Path(src_path).name,
        "description": description,
        "saved_time": datetime.datetime.now().isoformat(),
        "path": str(dest_path.relative_to("journals"))
    }
    
    return image_info

def update_index(date_str, journal_info):
    """更新日记索引"""
    index_path = Path("journals") / "index.json"
    
    if index_path.exists():
        with open(index_path, 'r', encoding='utf-8') as f:
            index = json.load(f)
    else:
        index = {
            "version": "1.0",
            "last_updated": datetime.datetime.now().isoformat(),
            "total_entries": 0,
            "years": {},
            "recent_entries": []
        }
    
    # 更新索引
    year = date_str[:4]
    month = date_str[5:7]
    
    if year not in index["years"]:
        index["years"][year] = {"months": {}}
    
    if month not in index["years"][year]["months"]:
        index["years"][year]["months"][month] = {
            "entries": 0,
            "first_date": date_str,
            "last_date": date_str,
            "word_count": 0,
            "image_count": 0
        }
    
    # 更新月数据
    month_data = index["years"][year]["months"][month]
    month_data["entries"] += 1
    month_data["last_date"] = max(month_data["last_date"], date_str)
    month_data["first_date"] = min(month_data["first_date"], date_str)
    month_data["word_count"] += journal_info.get("word_count", 0)
    month_data["image_count"] += journal_info.get("image_count", 0)
    
    # 添加到最近条目
    recent_entry = {
        "date": date_str,
        "path": f"{date_str[:7]}/{date_str}.md",
        "title": journal_info.get("title", f"{date_str}日记"),
        "mood_score": journal_info.get("mood_score", 5),
        "word_count": journal_info.get("word_count", 0),
        "image_count": journal_info.get("image_count", 0),
        "keywords": journal_info.get("keywords", [])
    }
    
    index["recent_entries"].insert(0, recent_entry)
    index["recent_entries"] = index["recent_entries"][:10]  # 保留最近10条
    
    index["total_entries"] += 1
    index["last_updated"] = datetime.datetime.now().isoformat()
    
    # 保存索引
    with open(index_path, 'w', encoding='utf-8') as f:
        json.dump(index, f, ensure_ascii=False, indent=2)
    
    return index

def main():
    """示例用法"""
    print("日记生成脚本示例")
    print("=" * 50)
    
    # 示例用户回答（使用哥哥提供的词汇库）
    answers = {
        "mood": "平静",
        "mood_score": 7,
        "weather": "天气温和",
        "keywords": ["工作完成", "朋友聚会", "新发现"],
        "morning": "清晨在凉风习习中醒来，窗外天空很蓝，适合开始新的一天。",
        "work": "专注于项目报告，虽然有些繁琐，但进展顺利，心情平静。",
        "social": "午休时和同事在公园喝茶聊天，燥热中带着惬意。",
        "personal": "傍晚看到晚霞很美，拍了照片记录这美好时刻。",
        "reflection": "即使是平凡的一天，也能找到值得感恩的小确幸。"
    }
    
    # 生成日记
    diary = generate_prose_diary(answers, "2025-02-25")
    print("生成的日记：")
    print(diary)
    
    # 创建目录结构
    structures = create_journal_structure("2025-02-25")
    print(f"\n创建的目录：{structures['base_dir']}")
    print(f"日记文件：{structures['journal_path']}")

if __name__ == "__main__":
    main()

path: references/file-storage.md
content: # 本地文件存储结构

## 设计原则
- **组织清晰**：按年月分层，便于查找和备份
- **格式统一**：统一文件命名和格式规范
- **易于迁移**：相对路径，支持整体移动
- **兼容性强**：使用通用格式（Markdown、JPEG等）

## 目录结构

### 完整结构
```
journals/                              # 日记根目录
├── README.md                          # 目录说明
├── index.json                         # 日记索引文件
│
├── 2025-02/                          # 2025年2月目录
│   ├── 2025-02-25.md                 # 单篇日记
│   ├── 2025-02-26.md
│   ├── summary-2025-02.md            # 月总结（可选）
│   └── images/                       # 当月图片
│       ├── 2025-02-25-1.jpg
│       ├── 2025-02-25-2.png
│       └── thumbnails/               # 缩略图目录
│
├── templates/                        # 日记模板
│   ├── basic.md
│   ├── detailed.md
│   └── weekly-review.md
│
├── exports/                          # 导出文件
│   ├── pdf/
│   ├── docx/
│   └── html/
│
└── backups/                          # 备份目录
    ├── auto-2025-02-25/
    └── manual-2025-02-28/
```

## 文件命名规范

### 日记文件
- **格式**：`YYYY-MM-DD.md`
- **示例**：`2025-02-25.md`
- **要求**：日期必须准确，便于排序和检索

### 图片文件
- **格式**：`YYYY-MM-DD-序号.扩展名`
- **示例**：`2025-02-25-1.jpg`, `2025-02-25-2.png`
- **序号**：每天从1开始，自动递增
- **扩展名**：保留原始格式，或统一转换

### 辅助文件
- **月总结**：`summary-YYYY-MM.md`
- **年索引**：`index-YYYY.md`
- **备份文件**：`backup-YYYY-MM-DD-HHMM.zip`

## 日记文件格式

### Markdown基本结构
```markdown
# 2025年2月25日 星期二 · ☀️ 晴朗 · 😊 愉快

## 早晨
[内容...]

![早晨咖啡](images/2025-02-25-1.jpg)

## 上午工作
[内容...]

## 午后时光
[内容...]

## 傍晚与夜晚
[内容...]

## 今日感悟
[内容...]

---
**记录时间**：2025-02-25 21:30
**心情指数**：8/10
**关键词**：工作完成, 朋友聚会, 新发现
**天气**：晴朗，15-22°C
**位置**：上海
**图片**：3张（早餐、工作环境、夕阳）
```

### 元数据头部（可选YAML frontmatter）
```yaml
---
date: 2025-02-25
weekday: 星期二
weather: ☀️ 晴朗
mood: 😊 愉快
mood_score: 8
keywords: [工作完成, 朋友聚会, 新发现]
images: 3
location: 上海
temperature: "15-22°C"
---
```

## 索引管理

### 主索引文件 (index.json)
```json
{
  "version": "1.0",
  "last_updated": "2025-02-25T21:30:00Z",
  "total_entries": 156,
  "years": {
    "2025": {
      "months": {
        "02": {
          "entries": 25,
          "first_date": "2025-02-01",
          "last_date": "2025-02-25",
          "word_count": 12560,
          "image_count": 45
        }
      }
    }
  },
  "recent_entries": [
    {
      "date": "2025-02-25",
      "path": "2025-02/2025-02-25.md",
      "title": "2025年2月25日 星期二",
      "mood_score": 8,
      "word_count": 520,
      "image_count": 3,
      "keywords": ["工作完成", "朋友聚会", "新发现"]
    }
  ]
}
```

### 月索引文件 (2025-02/index.json)
```json
{
  "month": "2025-02",
  "days": [
    {
      "date": "2025-02-25",
      "file": "2025-02-25.md",
      "mood": "愉快",
      "mood_score": 8,
      "has_images": true,
      "word_count": 520
    }
  ],
  "statistics": {
    "total_days": 25,
    "days_with_entries": 20,
    "average_mood": 7.2,
    "total_words": 12560,
    "total_images": 45
  }
}
```

## 文件操作

### 创建新日记
```bash
# 创建当月目录（如果不存在）
mkdir -p journals/$(date +%Y-%m)

# 创建日记文件
touch journals/$(date +%Y-%m)/$(date +%Y-%m-%d).md

# 创建图片目录
mkdir -p journals/$(date +%Y-%m)/images
mkdir -p journals/$(date +%Y-%m)/images/thumbnails
```

### 添加图片
```bash
# 获取当天已有图片数量
count=$(ls journals/$(date +%Y-%m)/images/*.jpg 2>/dev/null | wc -l)
next=$((count + 1))

# 保存图片
cp /tmp/uploaded.jpg journals/$(date +%Y-%m)/images/$(date +%Y-%m-%d)-${next}.jpg

# 生成缩略图
convert journals/$(date +%Y-%m)/images/$(date +%Y-%m-%d)-${next}.jpg \
  -resize 400x300 \
  journals/$(date +%Y-%m)/images/thumbnails/$(date +%Y-%m-%d)-${next}.jpg
```

### 更新索引
```bash
# 更新JSON索引（使用Python脚本更可靠）
python3 scripts/update_index.py
```

## 备份策略

### 自动备份
- **频率**：每天结束时自动备份当天新增内容
- **保留**：保留最近7天备份，每周归档一次
- **位置**：`journals/backups/auto-YYYY-MM-DD/`

### 手动备份
- **完整备份**：备份整个journals目录
- **增量备份**：只备份新增或修改的文件
- **云备份**：可选同步到云存储（需用户配置）

### 恢复流程
1. 选择备份版本
2. 验证备份完整性
3. 恢复到指定位置
4. 更新索引文件

## 迁移与同步

### 本地迁移
```bash
# 打包整个日记库
tar -czf journals-backup-$(date +%Y%m%d).tar.gz journals/

# 恢复到新位置
tar -xzf journals-backup-20250225.tar.gz -C /new/path/
```

### 跨设备同步
1. 使用Git进行版本控制（推荐）
2. 使用云存储同步（Dropbox、Google Drive等）
3. 定期手动复制

### Git版本控制配置
```bash
# 初始化Git仓库
cd journals/
git init

# 添加.gitignore
echo "backups/" >> .gitignore
echo "thumbnails/" >> .gitignore
echo "*.tmp" >> .gitignore

# 首次提交
git add .
git commit -m "Initial journals repository"
```

## 隐私与安全

### 加密选项
- **整个库加密**：使用VeraCrypt等加密容器
- **单文件加密**：敏感条目单独加密
- **元数据隐藏**：索引文件不包含敏感信息

### 访问控制
- 文件权限设置（chmod 600 for sensitive files）
- 目录访问日志
- 备份文件加密

## 维护任务

### 日常维护
- 清理临时文件
- 更新索引
- 检查文件完整性

### 月度维护
- 生成月统计报告
- 压缩旧图片
- 清理过期备份

### 年度维护
- 生成年度回顾
- 归档旧年份数据
- 优化存储结构

path: references/image-handling.md
content: # 图片处理指南

## 支持场景
1. **聊天发送图片**：用户通过Feishu/Telegram等直接发送图片
2. **本地图片路径**：用户提供本地文件路径
3. **网络图片链接**：用户提供图片URL
4. **多图上传**：一次记录多张图片

## 存储结构

### 目录组织
```
journals/
├── 2025-02/                    # 按月分目录
│   ├── 2025-02-25.md          # 日记文件
│   └── images/                # 当月图片目录
│       ├── 2025-02-25-1.jpg   # 自动命名
│       ├── 2025-02-25-2.png
│       └── thumbnails/        # 缩略图（可选）
└── images-archive/            # 按年归档图片
    └── 2025/
```

### 命名规范
- **自动命名**：`YYYY-MM-DD-序号.扩展名` (如 `2025-02-25-1.jpg`)
- **用户指定**：允许用户自定义图片描述，但文件仍用规范命名
- **序号管理**：每天从1开始递增，避免重复

## 图片接收流程

### 方案A：通过聊天附件（推荐）
1. 用户直接发送图片到聊天
2. 系统自动保存到临时位置
3. 询问用户图片描述和放置位置
4. 移动到正式存储目录

### 方案B：本地路径
1. 用户提供本地绝对路径或相对路径
2. 验证文件存在且可读
3. 复制到日记图片目录
4. 保持原始质量或根据需要调整大小

### 方案C：网络下载
1. 用户提供图片URL
2. 下载到临时文件
3. 检查文件类型和大小
4. 保存到日记图片目录

## 技术实现

### 图片保存命令示例
```bash
# 创建目录
mkdir -p journals/2025-02/images

# 从临时位置复制
cp /tmp/received_image.jpg journals/2025-02/images/2025-02-25-1.jpg

# 生成缩略图（可选）
convert journals/2025-02/images/2025-02-25-1.jpg -resize 400x300 journals/2025-02/images/thumbnails/2025-02-25-1.jpg
```

### 图片信息记录
每张图片记录元数据：
```yaml
- 文件名: 2025-02-25-1.jpg
- 原始名: photo_from_chat.jpg
- 上传时间: 2025-02-25 20:30:15
- 用户描述: "今天的午餐，看起来很美味"
- 文件大小: 2.1 MB
- 尺寸: 1920x1080
```

## Markdown图片引用

### 文中引用
```markdown
今天午餐尝试了一家新餐厅，![今天的午餐](journals/2025-02/images/2025-02-25-1.jpg)
食物看起来非常美味。
```

### 文末图集
```markdown
## 今日图集

### 1. 早晨风景
![窗外的日出](journals/2025-02/images/2025-02-25-1.jpg)
*清晨第一缕阳光*

### 2. 工作环境
![办公桌布置](journals/2025-02/images/2025-02-25-2.jpg)
*今天重新整理了桌面*
```

### 相对路径策略
- 日记文件中使用相对路径：`images/2025-02-25-1.jpg`
- 确保日记文件和图片的相对位置固定
- 支持跨平台路径兼容性

## 图片处理选项

### 1. 自动调整
- **大小限制**：超过5MB自动压缩
- **格式转换**：统一转为JPG或PNG
- **方向校正**：自动旋转到正确方向

### 2. 手动控制
用户可指定：
- 是否压缩
- 是否添加水印
- 是否生成缩略图
- 图片描述详细程度

### 3. 隐私考虑
- 不自动上传到云端（除非用户明确同意）
- 本地存储加密选项
- 敏感图片特别标记

## 交互流程

### 图片上传对话示例
**用户**：[发送图片]
**助手**："收到图片啦！这张图片记录了什么特别时刻吗？"
**用户**："这是今天的午餐。"
**助手**："好的，已保存为'今天的午餐'。需要添加到日记的特定位置吗？"

### 批量处理
**助手**："今天一共上传了3张图片，分别是：
1. 早餐
2. 工作环境  
3. 傍晚散步
需要我分别添加到日记的不同段落吗？"

## 错误处理

### 常见问题及解决
1. **图片过大**：自动压缩或询问用户
2. **格式不支持**：转换为支持格式或跳过
3. **路径无效**：提示用户重新提供
4. **存储空间不足**：提醒用户清理或使用外部存储

### 恢复机制
- 保存失败时保留临时文件
- 提供手动保存选项
- 记录错误日志供调试

## 最佳实践
1. **及时处理**：收到图片后立即询问描述，避免遗忘
2. **描述具体**：鼓励用户提供详细图片描述
3. **位置合理**：根据内容将图片插入到相关段落
4. **备份重要**：定期备份图片库
5. **隐私第一**：敏感图片单独加密存储

path: references/question-templates.md
content: # 日记引导问题库

## 设计原则
- **开放式问题**：鼓励详细描述，避免简单"是/否"回答
- **自然友好**：使用亲切语气，像朋友聊天一样
- **覆盖全面**：涵盖生活各个重要方面
- **循序渐进**：从简单到深入，从事实到感受

## 问题分类库

### 1. 早晨与开始
- 今天早上醒来感觉怎么样？做了什么让一天开始得不错？
- 早餐吃了什么特别的东西吗？有没有享受一段安静的晨间时光？
- 今天第一件让你有成就感的小事是什么？

### 2. 工作与学习
- 今天主要忙了些什么？有没有完成什么重要的任务？
- 工作中/学习上有没有遇到什么有趣的挑战？你是怎么解决的？
- 和同事/同学有什么特别的互动吗？有没有学到什么新东西？

### 3. 社交与人际
- 今天和谁聊了天？谈了些什么有趣的话题？
- 有没有帮助别人或者得到别人的帮助？感觉如何？
- 有没有听到什么有趣的故事或消息？

### 4. 健康与身体
- 身体感觉怎么样？有没有哪里不舒服或者特别有活力？
- 今天有运动吗？或者做了什么对身体好的事情？
- 睡眠质量如何？昨晚睡得好吗？

### 5. 天气与环境
- 今天的天气怎么样？有没有特别的天气感受？
- 环境给你什么感觉？是安静舒适还是热闹有趣？
- 天气有没有影响你今天的心情或计划？

**天气描述参考词汇**：
大雨滴滴哒滴滴哒、燥热公园喝茶、很安静适合读书、小雨哗啦啦哗啦啦、昨夜有雨、适合在家哦、今日冷冷哒、晚霞很美、出太阳了、天气温和、天空很蓝、有点点热的、凉风习习、有点点冷的、真的巨热、早上刮风中午下雨、有点点风、天色阴暗

### 6. 情绪与感受
- 今天心情怎么样？可以用一个词或一句话描述吗？
- 有没有哪个瞬间让你特别开心、感动或烦躁？
- 如果给今天的心情打个分（1-10分），你会打几分？为什么？

**心情描述参考词汇**：
平静、而今迈步从头越、蹦蹦跳跳、惆怅带点开心、心情开始悲痛、心情欠佳、身体很累、兴致缺缺、精神很好、兴奋、极度暴躁、烦躁、低能量、要忙死了、一般一般

### 7. 创意与灵感
- 今天有没有什么新的想法或灵感闪过？
- 看到了什么美丽、有趣或启发性的东西吗？
- 有没有想尝试的新事物或新技能？

### 8. 挑战与困难
- 今天遇到了什么小麻烦？你是怎么应对的？
- 有没有什么让你感到压力或焦虑的事情？
- 从今天的困难中学到了什么？

### 9. 感恩与欣赏
- 今天有什么小事让你感到感激？
- 有没有特别想感谢的人或事？
- 今天发现了什么平时没注意到的美好？

### 10. 成长与反思
- 今天和昨天的自己有什么不同？
- 有没有做出什么让自己骄傲的决定？
- 如果重来一次，你会改变什么？

### 11. 夜晚与结束
- 晚上做了什么放松的事情？
- 今天有什么想记住的特别时刻？
- 对明天有什么期待或计划？

## 提问策略

### 基础流程（每次5-7个问题）
1. **必问核心**：天气、心情、主要活动、特别时刻
2. **轮换提问**：每次从不同类别选择1-2个问题
3. **深度追问**：根据回答细节自然追问
   - "能多说一点细节吗？"
   - "那时候你是什么感觉？"
   - "后来怎么样了？"

### 自适应调整
- **时间敏感**：早上多问计划，晚上多问回顾
- **情绪适应**：情绪低落时多问感恩类问题
- **回答深度**：简短回答时追问，详细回答时跳过类似问题

### 跳过机制
- 用户可以说"跳过"或"不想回答这个问题"
- 自动记录跳过的类别，下次减少类似问题
- 尊重用户隐私边界

## 对话示例

**引导开始：**
> "今天想记录些什么呢？让我陪你聊聊今天的生活吧～"

**问题轮换示例：**
> 1. "今天的天气怎么样呀？有没有特别的感受？"
> 2. "今天心情怎么样？有没有特别开心或烦恼的时刻？"
> 3. "主要忙了些什么？有没有完成什么有意思的事情？"
> 4. "和朋友们有联系吗？聊了什么有趣的话题？"
> 5. "身体感觉如何？有没有注意休息？"

**追问示例：**
用户："今天工作挺顺利的，完成了一个项目。"
追问："完成项目的感觉一定很棒！能分享一下最让你有成就感的部分吗？"

## 问题库维护
- 定期添加新的问题变体
- 根据用户偏好调整问题频率
- 记录哪些问题最能引出详细回答

path: references/diary-formats.md
content: # 散文式日记格式指南

## 设计理念
- **连贯叙事**：将分散的回答编织成流畅的故事
- **保留原味**：保持用户的语言风格和表达习惯
- **时间逻辑**：按时间顺序或主题逻辑组织内容
- **情感融入**：自然地穿插感受和反思

## 散文结构模板

### 基本框架
```
# [日期] 星期几 · [天气/心情标签]

[开头段落：整体感受和一天概览]

[上午时光：早晨活动、工作/学习]

[午后时光：社交、午餐、下午活动]

[傍晚与夜晚：放松、家庭、个人时间]

[反思与感悟：学习、成长、感恩]

[结尾：明日期待或晚安问候]

---
**关键词**：[提取3-5个关键词]
**心情指数**：[1-10分]
**图片**：[图片描述或位置]
```

### 段落连接技巧
- **时间过渡**："清晨醒来时..." → "到了上午..." → "午后时光..." → "傍晚时分..." → "临睡前..."
- **情感过渡**："虽然...但是..." → "令人高兴的是..." → "有趣的是..."
- **主题过渡**："除了工作之外..." → "说到...不得不提..." → "另一方面..."

### 语言风格调整
- **亲切自然**：像朋友聊天，避免正式报告语气
- **细节丰富**：添加感官描述（看到的、听到的、闻到的、感觉到的）
- **适度修饰**：使用比喻、拟人等修辞，但不过度

## 生成算法

### 1. 信息提取
从用户回答中提取：
- **事实信息**：做了什么、见了谁、去了哪里
- **情感信息**：感受、情绪、态度
- **细节信息**：具体描述、对话片段、感官体验
- **反思信息**：学习、感悟、决定

### 2. 内容组织策略

#### 策略A：时间线叙事（推荐）
```
1. 早晨 → 上午 → 下午 → 晚上
2. 每个时段：活动 + 感受 + 细节
3. 自然过渡时间点
```

#### 策略B：主题聚焦
```
1. 主要事件（重点详写）
2. 人际互动
3. 个人成长
4. 生活琐事
```

#### 策略C：情感线索
```
1. 情绪起点
2. 情绪变化节点
3. 情绪高潮
4. 情绪平复
```

### 3. 散文生成步骤
1. **确定主线**：选择最突出的主题或时间线
2. **排列素材**：按逻辑顺序组织提取的信息
3. **添加过渡**：使用连接词和过渡句
4. **润色语言**：调整句式，丰富词汇
5. **检查连贯**：确保前后逻辑一致

## 示例对比

### 用户原始回答：
- "早上喝了咖啡，工作完成了报告"
- "中午和同事吃了火锅，聊得很开心"
- "晚上看了电影，有点感动"

### 生成散文：
```
清晨被咖啡的香气唤醒，一杯温热下肚，开始了新的一天。上午专注于工作报告的撰写，当最后一段文字落定时，心中涌起一阵小小的成就感。

午间与同事相约火锅店，红油翻滚间，笑声与故事也随之沸腾。大家分享着工作中的趣事和生活里的琐碎，那一刻，工作的疲惫似乎都消散在蒸腾的热气中。

夜幕降临时，选择了一部温暖的电影。荧幕上的故事轻轻触动心弦，那些关于爱与失去的主题，让人不禁沉思。临睡前，回忆这一天，虽平凡却充满了值得珍藏的片段。
```

## 个性化调整

### 根据用户风格：
- **简洁型用户**：保持语言精炼，避免过度修饰
- **细腻型用户**：添加更多感官细节和情感描写
- **幽默型用户**：加入轻松俏皮的语言

### 根据内容性质：
- **忙碌工作日**：侧重成就感和时间管理
- **放松周末**：侧重休闲体验和个人兴趣
- **特殊事件日**：以事件为中心展开叙述

## 图片整合

### 文字配合图片：
1. **描述性配合**："正如照片中记录的那样..."
2. **情感性配合**："这张图片让我回想起当时..."
3. **补充性配合**："虽然照片无法完全捕捉，但..."

### 图片位置标记：
- 文中引用：`![图片描述](images/YYYY-MM-DD/xxx.jpg)`
- 文末图集：集中展示所有图片并配简短说明

## 质量检查清单
- [ ] 时间逻辑是否合理？
- [ ] 情感表达是否自然？
- [ ] 细节是否充分但不冗长？
- [ ] 个人风格是否保留？
- [ ] 过渡是否流畅？
- [ ] 开头和结尾是否有呼应？

## 改进迭代
- 收集用户对生成日记的反馈
- 调整散文结构和语言风格
- 学习用户偏好的表达方式
- 不断优化生成算法

Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)