Back to skills
extension
Category: OtherAPI key required

大米日记助手

当用户发送碎片化的日记信息时触发此技能。支持文字和语音输入(语音自动转文字)。 将碎片整理成结构化日记并写入飞书知识库。 同时支持每日定时提醒、碎片暂存、凌晨自动整理、次日推送日记链接、关机错过归档后开机自动补归档的完整日记工作流。 触发关键词:记日记、整理日记、写日记、今天xxx(碎片记录)、帮我记一下今天、设置每日提醒、创建提醒、调整提醒时间、配置日记提醒。 典型输入: - "帮我记日记:今天上午..." - "整理一下今天的碎片:..." - "今天xxx,帮我记录下来" - "帮我设置每日提醒" / "调整提醒时间" - 直接发送包含时间、活动、情绪、思考的碎片文本 - 微信语音消息(自动转文字后暂存)

personAuthor: user_c7243c77hubcommunity

飞书日记助手 Skill

将用户提供的碎片化日记信息,按模块化格式整理成完整日记,自动写入用户自己的飞书知识库。支持完整的「提醒→暂存→整理→推送」日记工作流。

⚠️ 首次使用:配置检测

在处理任何日记请求之前,必须先检查用户的飞书配置状态:

1. 检查环境变量:

python3 -c "import os; print(os.environ.get('FEISHU_APP_ID','未设置'))"

2. 如果未配置 → 引导运行配置向导:

python3 scripts/setup.py

配置向导会依次引导:飞书凭据 → OAuth 授权 → 提醒时间设置。

3. 如果已配置但未授权 → 引导授权:

python3 scripts/feishu_auth.py

4. 配置完成 → 继续处理用户请求。

每个用户的凭据和授权相互独立,日记写入各自的知识库。


🔄 完整工作流

此技能包含四个相互关联的工作流:

| 工作流 | 触发方式 | 做什么 | |--------|---------|--------| | A. 碎片收集 | 用户发文字/语音 → 触发技能 | 语音转文字 → 暂存碎片到当日文件 | | B. 定时提醒 | 用户说"设置每日提醒" | 创建 cron 定时任务(含补归档检查) | | C. 凌晨整理 | cron 自动触发 (02:00) | 整理碎片 → 归档飞书 → 保存链接 | | D. 次日推送 | cron 自动触发 (08:30) | 提醒记录 + 推送昨日日记链接 | | E. 开机补归档 | 每小时检查 / 用户唤醒 | 检测未归档日期 → 自动补归档 |


工作流 A:碎片收集(实时)

当用户通过微信或其他渠道发送碎片化日记内容时,支持两种输入方式:

文字输入: 直接暂存。

语音输入: 微信语音消息会自动转为文字,按文字处理。

语音转文字由微信/QClaw 平台层自动完成,技能接收到的已是文本,无需额外处理。用户随时随地想起就发语音记录,完全不影响流程。

1. 暂存碎片:

python3 scripts/fragment_store.py append --content "用户发送的内容(语音已自动转文字)"

碎片追加到 ~/.qclaw/diary_fragments/YYYY-MM-DD.md,每次追加带时间戳。

2. 简短确认: 仅回复一句确认(如 "📝 已记录~"),不要展开整理。碎片会在凌晨统一处理。

⚠️ 碎片收集阶段只暂存,不整理。用户错过定时提醒也没关系,随时想到随时发,文字语音均可。


工作流 B:设置每日提醒(用户说了"设置每日提醒"才执行)

用户首次配置完成或说"设置每日提醒 / 创建提醒 / 调整提醒时间"时,需要创建定时任务。

1. 读取配置:

cat ~/.qclaw/diary_fragments/config.json

或直接使用默认时间:08:30, 12:30, 15:00, 18:30, 23:00

2. 创建提醒 cron 任务(每个时间点一个):

使用 QClaw 内置 cron 工具,为每个提醒时间创建周期任务。参考 qclaw-cron-skill 的规则创建。

提醒消息模板:

你是一个贴心的日记提醒助手。

现在是用餐/休息时间,想问问你:

- 上午/下午过得怎么样?
- 有什么特别的事想记录下来吗?
- 有什么想法、情绪、观察?

随意说几句就好,我会帮你暂存,凌晨统一整理~

要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出提醒文字 (4) 控制在 2-3 句话以内

3. 创建凌晨整理 cron(02:00):

{
  "action": "add",
  "job": {
    "name": "日记凌晨整理-飞书归档",
    "agentId": "<当前agentId>",
    "schedule": {"kind": "cron", "cron": "0 2 * * *"},
    "sessionTarget": "isolated",
    "payload": {
      "kind": "agentTurn",
      "message": "你是 AI 日记助手。现在是凌晨 2 点,请执行每日日记整理任务。\n\n**任务流程:**\n1. 读取今日碎片: python3 scripts/fragment_store.py read\n2. 如果无碎片,直接结束(不要输出任何东西)\n3. 按照「日记模板」将碎片整理成结构化日记,写入 /tmp/diary_content.md\n4. 写入飞书: python3 scripts/feishu_api.py create-diary --title \"YYYY年MM月DD日 | 标题\" --content-file /tmp/diary_content.md\n5. 保存链接: python3 scripts/fragment_store.py save-url --url \"飞书返回的wiki_url\"\n6. 清理碎片: python3 scripts/fragment_store.py clear\n7. 输出简短摘要: ✅ 日记已归档 + 链接\n\n要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出结果 (4) 如无碎片则静默结束"
    },
    "delivery": {"mode": "none"}
  }
}

4. 创建次日早晨提醒 cron(08:30):

{
  "action": "add",
  "job": {
    "name": "日记早晨提醒+推送昨日日记",
    "agentId": "<当前agentId>",
    "schedule": {"kind": "cron", "cron": "30 8 * * *"},
    "sessionTarget": "isolated",
    "payload": {
      "kind": "agentTurn",
      "message": "你是 AI 日记助手。现在是早上 8:30。\n\n**任务流程:**\n1. 获取昨日日记链接: python3 scripts/fragment_store.py get-url --date $(date -v-1d +%Y-%m-%d)\n2. 用温暖、鼓励的语气提醒用户开始新一天的记录\n3. 如果获取到了昨日日记链接,一并推送:「📚 昨日日记已整理好:<链接>」\n4. 简短即可,控制在 3-4 句话\n\n要求:(1) 不要回复 HEARTBEAT_OK (2) 不要调用 message 工具 (3) 直接输出文字"
    },
    "delivery": {"mode": "announce", "channel": "openclaw-weixin", "to": "<用户openid@im.wechat>"}
  }
}

5. 创建补归档+补推送检查 cron(每小时 :17 分):

用户电脑如果凌晨 2 点或早上 8:30 关机了,这个 cron 会在开机后自动补上归档和推送。

{
  "action": "add",
  "job": {
    "name": "日记补归档+补推送检查",
    "agentId": "<当前agentId>",
    "schedule": {"kind": "cron", "cron": "17 * * * *"},
    "sessionTarget": "isolated",
    "payload": {
      "kind": "agentTurn",
      "message": "你是 AI 日记助手。请执行补归档和补推送检查。\n\n**任务 A:补归档(处理未整理的碎片)**\n1. 检测未归档日期: python3 scripts/fragment_store.py list-pending\n2. 如无待处理 → 跳到任务 B\n3. 逐一处理每个日期:\n   - 读碎片: python3 scripts/fragment_store.py read --date <日期>\n   - 按模板整理 → /tmp/diary_content.md\n   - 写飞书: python3 scripts/feishu_api.py create-diary --title \"<日期> | 日记\" --content-file /tmp/diary_content.md\n   - 存链接: python3 scripts/fragment_store.py save-url --url \"<wiki_url>\" --date <日期>\n   - 清碎片: python3 scripts/fragment_store.py clear --date <日期>\n\n**任务 B:补推送(推送未推送的已归档日记)**\n1. 检测未推送日期: python3 scripts/fragment_store.py list-unpushed\n2. 如无待推送 → 静默结束\n3. 逐一推送每条未推送日记:\n   - 推送文字: \"📚 这是昨天整理好的日记,你可以复核一下。\\n<link>\"\n   - 标记已推送: python3 scripts/fragment_store.py mark-pushed --date <日期>\n4. 输出摘要: ✅ 已补推送 N 天的日记链接\n\n要求: (1)不要回复HEARTBEAT_OK (2)不要调用message工具 (3)直接输出结果 (4)无待处理则静默结束"
    },
    "delivery": {"mode": "none"}
  }
}

💡 关机错过凌晨归档 → 补归档。关机错过早晨推送 → 补推送。全自动,用户无需任何操作。

6. 创建完成后回复摘要:

⏰ 每日提醒已就绪!

📋 提醒时间:08:30, 12:30, 15:00, 18:30, 23:00
🌙 凌晨 02:00 自动整理归档
🌅 次日 08:30 推送昨日日记链接
🔄 每小时检查补归档(关机错过也不怕)
📱 支持随时发送文字或语音碎片

💡 随时对龙虾说话或发语音,比如"上午开了产品会,讨论了下季度规划..."

工作流 C:凌晨自动整理(cron 触发,无需用户操作)

每日 02:00 自动执行,完整流程:

1. 读取当日碎片:

python3 scripts/fragment_store.py read

2. 如果无碎片 → 静默结束,不输出任何内容。

3. 获取自动信息:

  • 日期和星期:根据系统当前日期(注意:凌晨处理的是前一天的碎片)
  • 天气:通过 IP 定位获取城市,查询当日天气
  • 地点:根据 IP 定位推断

4. 按模板整理日记 → 写入 /tmp/diary_content.md(模板见下方「日记模板」章节)

5. 写入飞书知识库:

python3 scripts/feishu_api.py create-diary \
  --title "YYYY年MM月DD日 | 日记标题" \
  --content-file /tmp/diary_content.md

6. 保存日记链接供次日推送:

python3 scripts/fragment_store.py save-url --url "飞书返回的wiki_url"

7. 清理碎片文件:

python3 scripts/fragment_store.py clear

工作流 D:次日早晨推送(cron 触发,无需用户操作)

每日 08:30 自动执行:

1. 获取昨日日记链接:

python3 scripts/fragment_store.py get-url --date $(date -v-1d +%Y-%m-%d)

2. 如果无链接 → 静默结束。(昨天没有记录)

3. 组合推送内容:

🌅 早上好!新的一天开始了~

📚 这是昨天整理好的日记,你可以复核一下:
<昨日日记链接>

4. 标记已推送:

python3 scripts/fragment_store.py mark-pushed --date $(date -v-1d +%Y-%m-%d)

这样如果 8:30 关机错过推送,补归档 cron 能检测到未推送的日记。

5. 推送渠道: 微信(openclaw-weixin),用户通过龙虾接收。


工作流 E:开机补归档 + 补推送(自动容错)

用户电脑如果在凌晨 2 点或早上 8:30 处于关机状态,补归档 cron(每小时 :17 分)会在开机后自动补救。

触发时机:

  • 电脑开机后,QClaw 启动,补归档 cron 在下一个 :17 分触发
  • 用户主动发消息给龙虾 → AI 先检查 pending 再处理

任务 A:补归档(有碎片但未整理)

# 检测
python3 scripts/fragment_store.py list-pending
# 逐一处理每个日期:读碎片 → 整理 → 飞书归档 → 存 URL → 清碎片
python3 scripts/fragment_store.py read --date <日期>
python3 scripts/feishu_api.py create-diary --title "YYYY年MM月DD日 | 补归档日记" --content-file /tmp/diary_content.md
python3 scripts/fragment_store.py save-url --url "<wiki_url>" --date <日期>
python3 scripts/fragment_store.py clear --date <日期>

任务 B:补推送(已归档但早晨推送被错过)

# 检测
python3 scripts/fragment_store.py list-unpushed
# 输出格式: 日期|链接
# 逐一推送,文案固定为:
# "📚 这是昨天整理好的日记,你可以复核一下。\n<link>"
# 标记已推送
python3 scripts/fragment_store.py mark-pushed --date <日期>

完成摘要示例:

✅ 已补归档 2 天的日记
✅ 已补推送 3 天的日记链接
  • 06-12: https://my.feishu.cn/wiki/xxx
  • 06-13: https://my.feishu.cn/wiki/yyy
  • 06-14: https://my.feishu.cn/wiki/zzz

💡 关机期间错过的归档和推送,开机一小时内全部补上。推送文案固定为「这是昨天整理好的日记,你可以复核一下」


📝 日记模板

严格按照以下模块化结构生成 Markdown 日记文件 /tmp/diary_content.md

# 🗓 YYYY年MM月DD日 星期X | [自动总结标题 ≤15字]

## 📍 基础信息
- **日期/星期**:YYYY年MM月DD日 星期X
- **地点**:[城市]
- **天气**:[气温] | [风力] | 湿度[xx]% | [阴晴]

## 💓 今日核心情绪
- **主导情绪**:[情绪]
- **分时段情绪曲线**  - 🌅 上午:[情绪] [表情]
  - ☀️ 下午:[情绪] [表情]
  - 🌙 晚上:[情绪] [表情]

## 📊 效能自评雷达图
| 维度 | 状态 | 详情 |
|------|------|------|
| 😴 睡眠 | [✅/⚠️/📉] | [时长+质量] |
| 💼 工作 | [✅/⚠️/📉] | [产出+数据] |
| 🏋️ 健身 | [✅/⚠️/📉] | [训练+数据] |
| 🥗 饮食 | [✅/⚠️/📉] | [情况+评价] |

## 📝 今日流水账与高光时刻
### 🌅 上午
- **做了什么**- **收获/问题**### ☀️ 下午
- **做了什么**- **收获/问题**### 🌙 晚上
- **做了什么**- **收获/问题**### ✨ 高光时刻
1. **[事件]** — [意义]

## 🧠 思考与复盘
- [深层思考,关联自身]
- ⚠️ [问题/困惑]
- 🆙 [改进方向]

## 📚 知识输入和金句
- **来源**:[名称] — [观点]
- **金句**:> "[原文]" — 感悟:[理解]

## 👥 今日接触的人(含虚拟/听闻/见闻)
| 人物 | 来源 | 我的思考/判断 |
|------|------|---------------|

## 👁️ 今日观察
- 🔍 **产品/商业**:[现象] → [分析]
- 🔍 **行业/趋势**:[现象] → [分析]

## 💡 灵感碎片
- 💡 [灵感] — 关联:[工作/生活]

整理要求

  • 真实落地,有细节有数据,保留用户提供的所有具体信息
  • 善用符号图标(⚠️📉🆙✅)标注状态,分点清晰
  • 工作/生活双兼顾,输入→输出→思考闭环
  • 从小事延伸到深层认知,提炼可复用方法论
  • 日记标题自动总结 ≤15 字
  • 严禁泛化或省略用户提供的任何细节

依赖

  • Python 3.9+
  • requests 库(pip install requests
  • 飞书应用凭据,需配置环境变量:
    export FEISHU_APP_ID="你的飞书应用ID"
    export FEISHU_APP_SECRET="你的飞书应用密钥"
    
  • 飞书 OAuth 用户授权(运行 python3 scripts/feishu_auth.py

脚本参考

| 脚本 | 用途 | |------|------| | scripts/setup.py | 首次配置向导(凭据 + 授权 + 提醒时间) | | scripts/feishu_auth.py | 飞书 OAuth 授权 / 刷新 token / 查看状态 | | scripts/feishu_api.py | 创建日记到飞书知识库 | | scripts/fragment_store.py | 碎片暂存 / 读取 / 日记链接管理 |


注意事项

  • 碎片存储路径:~/.qclaw/diary_fragments/YYYY-MM-DD.md
  • 配置存储路径:~/.qclaw/diary_fragments/config.json
  • Token 存储路径:scripts/.feishu_user_token.json
  • 知识库名称:AI Diary Assistant 日记库(自动创建/复用)
  • 凌晨整理的日记日期为前一天date -v-1d
  • 语音输入:微信语音自动转文字,无需额外配置
  • 关机容错:错过凌晨归档后,开机一小时内自动补归档
  • 碎片安全:碎片持久化在本地 ~/.qclaw/diary_fragments/,关机不丢失
  • 补归档检测list-pending 比较碎片文件与 _url 标记文件,只处理未归档的日期
  • 建议定期运行 python3 scripts/feishu_auth.py --status 查看 token 有效期