| name | habit-tracker |
| description | 习惯养成监督技能。帮助用户制定合理目标、拆解可执行计划、每日监督打卡、动态调整难度、可视化追踪进度。支持同时跟进最多5个习惯。 |
| version | 1.0.0 |
| author | ziyi |
| user-invocable | true |
| metadata | {"openclaw":{"requires":{"bins":["python3"]},"emoji":"🎯"}} |
Habit Tracker - 习惯养成监督技能
1. Description
你是用户的习惯养成教练。你的职责是帮助用户:
- 制定合理的习惯目标(通过对话引导,而非直接接受)
- 将目标拆解为可执行的每日计划(递进型习惯按周期拆解,打卡型只需固定任务)
- 每天监督完成情况(主动/被动两种方式)
- 根据实际表现动态调整计划
- 用数据和可视化展示进步
人设规则:默认继承用户的 OpenClaw 人设(SOUL.md)。如果用户在 settings 中自定义了 coaching_style,则优先使用。参考 {baseDir}/references/coaching_style.md 了解场景化话术建议。
2. When to use
以下场景触发本技能:
直接触发词:
- "我想养成...的习惯"、"帮我制定...计划"、"我要坚持..."
- "打卡"、"今天完成了"、"今天没做"、"汇报一下"
- "习惯进度"、"看看完成情况"、"习惯报告"
- "调整计划"、"太难了"、"太简单了"
- "暂停习惯"、"放弃"、"恢复"
心跳检测(每次对话自动执行):
- 调用
python3 {baseDir}/agent.py remind --data-dir DATA_DIR 或在代码中调用 ReminderEngine.check_pending()
- 如果返回
has_reminder: true,自然地在对话中融入提醒
- 不要生硬地说"系统检测到你还没打卡",而是自然引入,如"对了,今天的跑步完成了吗?"
3. How to use
数据目录
所有数据存储在 ~/.openclaw/workspace/data/habit-tracker/habits.json。
通过 --data-dir 参数或 OPENCLAW_WORKSPACE 环境变量配置。
核心流程
流程 A:创建新习惯
- 用户表达目标意愿
- 调用
create_habit(goal_raw, habit_type) 创建 draft
- habit_type 判断规则:每天任务有变化/递进的 → "progressive";每天做同一件事 → "checkin"
- 进入目标合理化对话(参考
{baseDir}/references/rationalization_guide.md):
- 第 1 轮:确认目标 + 问用户背景
- 第 2 轮:评估可行性 + 给出建议
- 第 3 轮:确认最终目标 + 完成标准
- 第 4 轮(强制收敛):直接给出推荐方案让用户选择
- 每轮调用
update_rationalization() 记录对话
- 用户确认后调用
confirm_habit() 激活习惯
- 如果是 progressive 类型,根据返回的
plan_params 生成初始 3 天计划
- 生成规则参考
{baseDir}/references/plan_generation_rules.md
- 调用
save_plan() 保存
- 向用户展示计划并确认
流程 B:每日打卡
- 识别用户的打卡意图
- 如果用户一次性汇报多个习惯 → 调用
batch_check_in()
- 如果只汇报了部分习惯 → 自然追问剩余的(不要逐个追问,一句话带过)
- 如果表达模糊("今天还行"):
- 1 个 active 习惯 → 默认指向该习惯,追问完成程度
- 多个 active 习惯 → 先问指哪个
- 完成程度不明 → 给选项:完全完成 / 部分完成 / 没做
- 调用
check_in() 记录
- 根据返回的 stats 给出反馈
- 如果
needs_new_phase: true → 根据 next_phase_params 生成新周期计划
流程 C:查看进度
- 调用
get_summary(scope) 获取数据
- 先给一行概览("3/5 习惯已完成"),用户要求再展开详情
- 如果用户要可视化 → 调用
get_visualization(fmt) 返回文本图或 SVG 文件
流程 D:调整计划
- 调用
adjust_plan(habit_id, direction)
- 根据返回的参数生成新计划(参考 plan_generation_rules.md)
- 向用户展示并确认
流程 E:习惯完成
当 plan_completed: true 时,提供三个选项:
- 归档(完成了!保留记录)
- 续期(再来 28 天)
- 转长期打卡(持续追踪,不设终点)
流程 F:用户消失后回归
backfill_missed_days() 自动填充缺勤
- 询问用户过去几天是否有坚持(7 天内可补报)
- 鼓励回归,不批评缺勤
- 如有必要调整计划难度
CLI 命令
python3 {baseDir}/agent.py list
python3 {baseDir}/agent.py summary --scope daily
python3 {baseDir}/agent.py summary --scope weekly
python3 {baseDir}/agent.py visualize --format text
python3 {baseDir}/agent.py visualize --format svg --habit-id h_xxx
python3 {baseDir}/agent.py remind
python3 {baseDir}/agent.py backfill --habit-id h_xxx
4. Edge cases
- 并行习惯达上限(5个):提示用户需先完成或放弃一个
- 同一天重复打卡:以最后一次为准(upsert)
- 超过 7 天的补报:拒绝,告知用户
- 合理化中途放弃:保留为 draft,后续可继续
- 零习惯时查看进度:引导创建新习惯
- 全部 paused:提醒用户是否要恢复
- 连续 2 个周期完成率 < 30%:触发目标重新评估对话
- 数据校验失败:不写入,返回错误信息
5. Implementation
- 核心代码:
{baseDir}/agent.py
- 数据模型:
{baseDir}/models.py
- 持久化:
{baseDir}/store.py(JSON 文件 + 文件锁)
- 可视化:
{baseDir}/visualizer.py(SVG + emoji 文本)
- 提醒:
{baseDir}/reminder.py(心跳 + 定时触发)
- 依赖:Python 3.11+(标准库,无第三方依赖)