AI习惯养成助手怎么搭:零基础自建打卡提醒与周报

很多人想养成习惯,但手动记录容易中断,用现成 App 又担心数据不在自己手里。
这篇教程面向零基础用户,教你用一台 Linux 服务器搭建一个可自托管的 AI习惯养成助手:每天收到打卡提醒,记录完成情况,每周自动生成一次总结。
整个过程不需要写复杂代码,按步骤执行即可。

先确认你的环境和要准备的东西

这套方案适合有一台能联网的 Linux 服务器(Ubuntu 22.04 或 Debian 12 均可),并且能用 sudo 执行命令的读者。
如果你只是想在本地电脑试用,也可以,但提醒功能需要服务器长期运行才可靠。

需要提前准备:

  • 一台服务器,建议 1 核 1G 内存以上
  • 一个能接收通知的渠道,本文用 Telegram Bot 举例,也可以换成邮件
  • 一个 AI 模型的 API Key(用于生成周报),没有的话周报部分可以先跳过

先登录服务器,更新软件包并确认 Docker 可用:

sudo apt update && sudo apt upgrade -y
sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
docker --version

如果 docker --version 能输出版本号,说明 Docker 安装成功。

部署打卡记录服务

这里用轻量的自托管打卡工具 Habitica 的替代方案——一个简单的 Flask 应用来记录习惯,数据存到 SQLite。
你不需要理解全部代码,按下面操作即可。

创建项目目录和文件:

mkdir -p ~/habit-assistant && cd ~/habit-assistant
nano app.py

把以下内容粘贴进去,保存退出(Ctrl+O 回车,Ctrl+X):

from flask import Flask, request, jsonify
import sqlite3, datetime

app = Flask(__name__)
DB = 'habits.db'

def init_db():
    conn = sqlite3.connect(DB)
    conn.execute('CREATE TABLE IF NOT EXISTS records (id INTEGER PRIMARY KEY, habit TEXT, date TEXT, done INTEGER)')
    conn.commit()
    conn.close()

@app.route('/check', methods=['POST'])
def check():
    data = request.json
    habit = data.get('habit', 'default')
    done = data.get('done', 1)
    today = datetime.date.today().isoformat()
    conn = sqlite3.connect(DB)
    conn.execute('INSERT INTO records (habit, date, done) VALUES (?, ?, ?)', (habit, today, done))
    conn.commit()
    conn.close()
    return jsonify({'status': 'ok'})

@app.route('/report', methods=['GET'])
def report():
    conn = sqlite3.connect(DB)
    cur = conn.execute("SELECT habit, COUNT(*) FROM records WHERE done=1 AND date >= date('now','-7 days') GROUP BY habit")
    rows = cur.fetchall()
    conn.close()
    return jsonify({'week': rows})

if __name__ == '__main__':
    init_db()
    app.run(host='0.0.0.0', port=5000)

写一个 Dockerfile 来打包:

FROM python:3.11-slim
WORKDIR /app
RUN pip install flask
COPY app.py .
CMD ["python", "app.py"]

构建并启动容器:

docker build -t habit-assistant .
docker run -d --name habit -p 5000:5000 -v ~/habit-assistant:/app habit-assistant

验证服务是否正常:

curl http://127.0.0.1:5000/report

返回 {"week":[]} 说明服务已运行,还没有记录。

配置每日提醒和打卡入口

提醒用 Linux 自带的 cron 定时任务实现。
先写一个提醒脚本 remind.sh:

#!/bin/bash
curl -s -X POST https://api.telegram.org/bot<你的BOT_TOKEN>/sendMessage \
  -d chat_id=<你的CHAT_ID> \
  -d text="该打卡了:今天完成习惯了吗?回复 /done 记录"

给脚本执行权限,并加到 crontab,每天早上 8 点提醒:

chmod +x remind.sh
crontab -e

在末尾添加一行:

0 8 * * * /home/你的用户名/habit-assistant/remind.sh

保存后,可以用 crontab -l 确认任务已写入。
想测试提醒是否生效,把时间改成下一分钟,观察 Telegram 是否收到消息。

打卡入口可以直接调用接口:

curl -X POST http://127.0.0.1:5000/check -H "Content-Type: application/json" -d '{"habit":"早起","done":1}'

返回 {"status":"ok"} 表示记录成功。

用 AI 生成每周习惯总结

每周日晚上,让脚本拉取 /report 数据,发给 AI 模型生成一段总结,再推送到 Telegram。
写一个 weekly.sh:

#!/bin/bash
DATA=$(curl -s http://127.0.0.1:5000/report)
SUMMARY=$(curl -s https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer <你的API_KEY>" \
  -H "Content-Type: application/json" \
  -d "{\"model\":\"gpt-4o-mini\",\"messages\":[{\"role\":\"user\",\"content\":\"根据以下打卡数据,用中文写一段100字以内的鼓励总结:$DATA\"}]}" \
  | grep -o '"content":"[^"]*"' | cut -d'"' -f4)
curl -s -X POST https://api.telegram.org/bot<你的BOT_TOKEN>/sendMessage \
  -d chat_id=<你的CHAT_ID> \
  -d text="本周习惯总结:$SUMMARY"

同样加入 crontab,每周日 21 点执行:

0 21 * * 0 /home/你的用户名/habit-assistant/weekly.sh

注意:AI 模型的接口地址和可用模型可能变化,请以你所用服务商的文档为准。
如果不想接 AI,也可以直接把 /report 的原始数据发到通知里,手动看统计。

容易踩的几个坑

  • 容器重启后数据丢失:启动时一定要加 -v 挂载目录,把 SQLite 文件留在宿主机上。
  • cron 不执行:脚本里用绝对路径,检查 crontab -l 是否有任务,查看 /var/log/syslog 里 cron 的日志。
  • Telegram 收不到消息:确认 Bot Token 和 Chat ID 正确,并且你已经主动给 Bot 发过一条消息,否则 Bot 无法主动推送。
  • 端口冲突:如果 5000 端口被占用,把 docker run 的 -p 5000:5000 改成 -p 5001:5000,同时修改脚本里的访问地址。
  • 防火墙拦截:如果从外部访问接口,需要在安全组或 ufw 中放行对应端口,但建议只在内网调用,减少暴露风险。

怎么确认整套流程跑通了

按顺序做三个检查:

  1. 手动执行 remind.sh,看通知是否到达。
  2. 调用一次 /check 接口,再请求 /report,确认返回数据里出现记录。
  3. 把 weekly.sh 的执行时间改到下一分钟,观察是否收到 AI 总结消息。

三个检查都通过后,把 crontab 时间改回正常计划。
之后每天只需在收到提醒时调用一次打卡接口,或做一个简单的快捷指令,就能持续记录。

这套 AI习惯养成助手 的核心是把记录、提醒和总结拆成独立的小步骤,任何一步出问题都容易定位。
如果你后续想换成邮件提醒或接入其他 AI 服务,只需要替换 remind.sh 和 weekly.sh 里的通知与请求部分,数据层不用改动。

分享到:
上一篇
AI待办事项管理怎么落地:从零搭建自动整理与提醒流程
下一篇
AI开题报告生成怎么用:从选题到定稿的完整操作流程
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意