daily-task-agent 是一个本地运行的每日计划管理 Web 应用。用户可以维护长期目标、中期目标、每日任务和固定打卡项,后端 Planner Service 会结合目标、任务、打卡记录与最近完成情况生成每日建议。
当前版本采用前后端分离:
- Frontend: Vue 3 + Vite + Vue Router + Pinia + Axios + Element Plus
- Backend: Django + Django REST Framework + SimpleJWT
- Database: MySQL
- AI: OpenAI Python SDK 调用外部 API,未配置或调用失败时回落到规则版 Planner
- 用户注册、登录、JWT 鉴权。
- 长期目标 CRUD。
- 中期目标 CRUD,并可关联长期目标。
- 每日任务创建、编辑、删除、勾选完成。
- 每日固定任务打卡,例如工作、刷题、读论文。
- 打卡贡献热力图和基础统计概览。
- 本地文件夹导入,使用 LLM 生成目标、任务、打卡草稿。
- Planner 根据目标、最近任务和固定打卡生成每日建议。
- 用户可采纳建议生成每日任务,也可手动修改任务。
- 不做多 Agent 协作。
- 不做自动日历同步。
- 不做移动端 App。
- 不做团队协作。
- 不做复杂项目管理功能,例如甘特图、依赖关系、工时统计。
- 不做 Docker Compose 生产化部署。
- 不自动把 LLM 导入结果写入数据库,必须人工确认后应用。
前置依赖:
- Python 3.14+
- Node.js 20+ 和 npm
- MySQL 8+
- OpenAI API key,可选;没有 key 时 Planner 和导入会使用规则/启发式回落
- 兼容 OpenAI SDK 的外部模型服务,可选;通过
OPENAI_BASE_URL配置
mysql -uroot -p < backend/db/init-mysql.sqlcd backend
python3 -m venv .venv
. .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
python manage.py migrate
python manage.py runserver 0.0.0.0:8080后端默认运行在 http://localhost:8080。
常用环境变量写在 backend/.env:
DJANGO_SECRET_KEY=replace-with-a-long-random-secret
DB_NAME=daily_task_agent
DB_USERNAME=daily_task_agent
DB_PASSWORD=daily_task_agent
DB_HOST=127.0.0.1
DB_PORT=3306
JWT_EXPIRATION_MS=604800000
CORS_ALLOWED_ORIGINS=http://localhost:5173
OPENAI_API_KEY=
OPENAI_MODEL=gpt-4o-mini
OPENAI_BASE_URL=
PLANNER_RECENT_DAYS=7
PLANNER_MAX_SUGGESTIONS=5
IMPORT_ALLOWED_ROOTS=
IMPORT_MAX_FILE_BYTES=200000
IMPORT_MAX_FILES=30
cd frontend
npm install
npm run dev前端默认运行在 http://localhost:5173,Vite 会将 /api 代理到 http://localhost:8080。
API 前缀:/api/v1
需要登录的接口使用:
Authorization: Bearer <token>
主要接口:
POST /auth/registerPOST /auth/loginGET /auth/meGET|POST|PUT|DELETE /goals/long-termGET|POST|PUT|DELETE /goals/mid-termGET|POST|PUT|PATCH|DELETE /tasksGET /tasks/summary?startDate=YYYY-MM-DD&endDate=YYYY-MM-DDGET|POST|PUT|DELETE /habitsGET /habits/today?date=YYYY-MM-DDPATCH /habits/{id}/checkins/{date}GET /habits/contributions?startDate=YYYY-MM-DD&endDate=YYYY-MM-DDPOST /imports/folderGET /imports/{jobId}POST /imports/{jobId}/applyPOST /planner/suggestionsPOST /planner/suggestions/adopt
Planner 是 Django 后端内部服务,不单独部署。
生成建议时:
- 读取当前用户的活跃长期目标、中期目标、最近任务和固定打卡记录。
- 如果配置了
OPENAI_API_KEY,使用 OpenAI Python SDK 调用 Responses API,并要求模型返回结构化 JSON。 - 如果配置了
OPENAI_BASE_URL,会把它传给 OpenAI SDK,用于兼容 OpenAI SDK 的外部服务。 - 如果没有配置 key、外部 API 调用失败、或返回内容不可用,则回落到规则版 Planner。
文件夹导入默认读取后端本机路径:
- 支持
.md和.txt。 - 自动忽略
.git、node_modules、.venv、隐藏目录、构建产物和过大文件。 IMPORT_ALLOWED_ROOTS为空时允许读取任意本机目录;配置后只允许读取指定根目录下的路径。- LLM 结果会保存为导入草稿,用户在前端确认后才会写入正式数据。
后端:
cd backend
. .venv/bin/activate
python manage.py test apps前端:
cd frontend
npm run build