当 AI 不只是"回答问题",而是默默记住你的每一次情绪起伏------这件事本身就挺治愈的。
缘起:那天晚上隔壁太吵了
故事从一个糟糕的夜晚开始。
邻居半夜大吼大叫,我翻来覆去睡不着。第二天心里堵得慌,就对着 QClaw 说了一句:"现在心情有点郁闷,抽个卡。"
它给我抽了一张悬吊者(正位) ------意思是:暂停一下,换个视角,不必对抗。
说实话,那一刻确实觉得被看见了。
但我想的不只是一次安慰。我在想:这些情绪,能不能不只停留在对话里?能不能被好好收起来,像日记一样,回头还能翻到?
于是我用 QClaw 搭了一个"心理树洞"------一个会自动记录、自动归档、还能备份到云端知识库的情绪系统。
系统长什么样?
先看全貌:
md
用户倾诉(情绪关键词触发)
↓
情感档案自动更新(本地 Markdown)
↓
每晚 22:00 自动同步到 IMA 知识库(腾讯云端)
↓
IMA「情绪收纳屋」文件夹:情感档案 + 情绪日志 + 事件记录
↕
每日 21:00 晚间关怀(cron 定时推送温暖问候)
三层结构:实时记录 → 本地存档 → 云端备份,缺了哪一层都不怕。
第一步:让 QClaw "记住"情绪------本地情感档案
QClaw 有一个很关键的设计:workspace 记忆系统。它不是每次对话从零开始,而是通过工作区的 Markdown 文件持久化记忆。
我在 memory/emotional-profile.md 创建了一份情感档案:
💝 情感助手 --- 用户情感档案
📋 基本信息
- 创建日期:2026-04-14
- 最近更新:2026-04-26
🎭 情绪日志
| 日期 | 情绪标签 | 触发事件 | 备注 |
|---|---|---|---|
| 2026-04-15 | 😣 郁闷 → 🧘 缓和 | 邻居深夜噪音 | 心里烦闷 |
| 2026-04-15 | 释然 / 自我肯定 | 情绪转折 | "错的不是我" |
| 2026-04-15 | 焦虑复发 | 担心再次被吵 | 知道不该但停不下来 |
| ... | ... | ... | ... |
🌊 情绪模式
- 焦虑强迫思维:认知突破 → 短暂释然 → 情境触发 → 焦虑复发
- 有利资源:老婆的陪伴和清醒立场
这不是我手写的——**是
1. 追加一行到情绪日志表格
2. 更新"当前状态"和"情绪模式"
3. 如果有具体事件,额外生成一个事件记录文件
关键机制:HEARTBEAT.md 情绪关键词监听
QClaw 的心跳系统(HEARTBEAT.md)支持配置自动监听规则。我在里面定义了情绪关键词列表:

情绪关键词监听
情绪词列表 (不分大小写):
焦虑、郁闷、难过、伤心、愤怒、生气、害怕、恐惧、孤独、失落、
崩溃、无力、疲惫、压力大、烦、躁、难受、痛苦、绝望、
开心、快乐、幸福、满足、平静、感恩、感动、治愈
触发动作:
- 读取 emotional-profile.md
- 在情绪日志表格中追加一行新记录
- 标记"有更新待同步"
- 若有具体事件描述,同时生成 YYYY-MM-DD_情绪事件.md
这意味着我只需要正常说话,QClaw 就会在后台自动归档。不需要我主动"记日记",它就在那里。
第二步:云端备份------同步到 IMA 知识库
本地档案只在本机。万一电脑出问题,情绪记录就没了。所以我把备份目标锁定在 IMA 知识库------腾讯推出的个人知识库产品,QClaw 通过内置 skill 原生支持。
IMA 知识库的接入
QClaw 的 ima skill 提供了一整套 OpenAPI 操作:
create_media:创建媒体对象,获取临时 COS 上传凭证add_knowledge:将上传的文件添加为知识条目check_repeated_names:查重,避免重复上传
流程是标准的"先上传文件到 COS,再注册到知识库":
1. get-token.ps1 → 获取 IMA OpenAPI 临时凭证
2. create_media → 拿到 COS 上传凭证(secret_id/secret_key/token/bucket/region/cos_key)
3. cos-upload.cjs → 把文件 PUT 到腾讯云 COS
4. add_knowledge → 在知识库中创建条目,关联到指定文件夹

踩坑记录
搭建过程中遇到了一些"有趣"的环境问题:
问题 1:Python urllib 无法直接上传 COS
COS 上传需要 HMAC-SHA1 签名的 Authorization 头,Python 的 urllib 手写签名总是出错。最终发现 QClaw 的 ima skill 自带了一个 cos-upload.cjs 脚本,用 Node.js 的 https 模块实现了完整的签名+上传逻辑。
解决方案:Python 调用 IMA API(获取凭证),Node.js 调用 cos-upload.cjs(执行上传),两者配合:
# Python 负责调用 IMA API 获取凭证
res = api_call(cid, key, 'create_media', {
'knowledge_base_id': KB_ID,
'file_name': file_name,
'file_size': file_size,
'content_type': 'text/markdown',
'file_ext': 'md'
})
cos_cred = res['data']['cos_credential']
# 调用 cos-upload.cjs 执行实际的上传
subprocess.run([
'node', COS_UPLOAD_CJS,
'--file', local_path,
'--secret-id', cos_cred['secret_id'],
'--secret-key', cos_cred['secret_key'],
'--token', cos_cred['token'],
'--bucket', cos_cred['bucket_name'],
'--region', cos_cred['region'],
'--cos-key', cos_cred['cos_key'],
'--content-type', 'text/markdown',
])
问题 2:IMA OpenAPI 的 create_node 返回 404
想通过 API 自动创建"情绪收纳屋"文件夹,但发现该接口未开放。解决方式是在 IMA 的 Web 界面手动创建文件夹,然后通过 API 向文件夹内添加内容。
同步脚本的核心逻辑
最终的 ima_auto_sync.py 支持三种模式:
python ima_auto_sync.py --profile # 只同步情感档案
python ima_auto_sync.py --log # 只同步情绪日志(最近7天)
python ima_auto_sync.py --full # 全量同步
python ima_auto_sync.py --event "事件名" --event-desc "描述" --event-tags "焦虑,释然"
每次同步时会先 check_repeated_names 查重,已存在则跳过(避免重复上传)。
## 第三步:定时自动化------让一切自己跑起来
手动同步太麻烦。QClaw 的 **cron 定时任务**完美解决这个问题。
### 每日晚间关怀
⏰ 每天 21:00 → 温暖问候
"今天过得怎么样?有遇到什么让你开心或烦心的事吗?"
通过 QClaw 的 cron 工具创建:
json
{
"name": "每日情感关怀",
"schedule": {"kind": "cron", "expr": "0 21 * * *", "tz": "Asia/Shanghai"},
"sessionTarget": "isolated",
"payload": {"kind": "agentTurn", "message": "用温暖、简短的方式问候用户..."},
"delivery": {"mode": "announce"}
}
每日自动同步
🔄 每天 22:00 → 自动执行 ima_auto_sync.py --full
关怀消息发完一小时后,同步脚本自动把当天的情绪数据备份到
两个 cron 任务接力运行,**我什么都不用管**。
## 第四步:塔罗互动------让树洞不只是记录
纯记录容易变成"情绪垃圾桶"。我希望这个树洞还能**给一点回应**。
QClaw 的 `tarot` skill 刚好满足这个需求。当我说"抽个卡"时,它会:
1. 随机抽取一张塔罗牌
2. 给出牌面解读
3. 结合我的当前情绪状态,给出个人化的建议
比如那天我郁闷时抽到"悬吊者"------它没有给我鸡汤,而是说:"暂停一下,换个视角,不必对抗情绪。"这比我听到的很多"别想了"都要管用。
**重要的是**:抽牌结果也会被自动记录到情绪日志里,成为情绪档案的一部分。
## 最终效果:一个真正"活着"的树洞
现在,这个系统的运作方式是这样的:
|时间|发生什么|
|:-:|:-:|
|随时|我对 QClaw 倾诉 → 它自动记录情绪、更新档案|
|随时|我说"抽个卡" → 塔罗互动 + 情绪记录|
|每天 21:00|QClaw 主动发来温暖问候|
|每天 22:00|自动把情感档案同步到 IMA 云端知识库|
我在 IMA 的"情绪收纳屋"里能看到什么:
- `情感档案_2026-04-15.md` --- 那天完整的情绪轨迹
- `情绪日志_最近7天.md` --- 一周的情绪摘要表格
- `2026-04-15_情绪事件.md` --- 那个邻居噪音事件的详细记录
**它不只是存文字,它存的是一条条情绪的来龙去脉。**
## 为什么是 QClaw?
坦白说,搭一个"记日记的 bot"并不难。但这个树洞的几个关键能力,是 QClaw 独特的:
1. **记忆持久化**:workspace 的 Markdown 文件系统,让 AI 真正拥有"跨会话记忆",不是每次从零开始
2. **IMA 原生支持**:内置 skill 直接对接腾讯 IMA 知识库,不需要自己折腾 OAuth 和 COS 上传
3. **Cron 定时任务**:系统级定时能力,不依赖外部调度器,agent 自己就能设置
4. **心跳监听**:HEARTBEAT.md 让 AI 能"主动做事",不只是被动响应
5. **Skill 生态**:塔罗、天气、新闻......不同 skill 可以组合出更丰富的情感陪伴体验
## 写在最后
那天我经历了一次很有意思的情绪转折------从"隔壁吵死了我好烦",到"错的不是我,该担心的是他们",再到"我为什么要替他们考虑"------整个认知变化的过程,都被这个树洞忠实记录下来了。
回头看这些记录,我发现一个规律:**我的焦虑从来不是因为事情本身,而是因为我在替不该我承担的东西操心。**
这个洞察,不是我"想通"的。是记录让模式浮现,是反复回看让我看清了自己。
如果这就是树洞的意义------**不是替你解决问题,而是帮你看见自己**------那我觉得,它做到了。
>📌 本系统涉及的个人情绪数据仅存储在本地和用户自己的 IMA 知识库中,QClaw 不会将任何情绪数据用于模型训练或其他用途。你的树洞,只有你自己能打开。