Skip to content
Conduit

mcp server

GamifiedLife

人生外载游戏系统

Qnh233/GamifiedLifecommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

This project does not publish an install method we can turn into a config. Follow the README instead.

README

synced Oct 26, 2026

Gamified Life-Agent Engine

基于多智能体与 MCP 协议的"游戏化"目标管理引擎

项目简介

这是一个由 AI 驱动的复杂状态机和动态规则引擎。它将用户的日常任务转化为带有随机奖励、挑战和触发机制的"主线/支线任务"。

核心特性

  • 多智能体编排 (Multi-Agent Orchestration): 使用 LangGraph 实现 Supervisor、Planner、Reward、Query、Chat、Reflector 协作
  • 工作流闭环: 主链路为 supervisor -> {planner|reward|query|chat} -> response -> reflector -> END
  • 游戏化机制: XP 经验值系统、随机掉落、成就系统、连续签到
  • MySQL 持久化存储: 用户状态、任务、目标、成就、奖励全量存储
  • MCP 外部工具集成: 支持读取本地日历、待办事项、GitHub 提交等
  • 定时任务调度: 支持 APScheduler 驱动的 chat/reflector 定时执行
  • Flask 后端服务: 高性能 Python Web 框架

技术栈

技术用途
LangGraphAgent 编排框架
FlaskWeb 后端框架
SQLAlchemyORM 数据库操作
MySQL主数据库
LiteLLMLLM 统一封装
MCP外部工具协议

快速开始

1. 环境要求

  • Python 3.10+
  • MySQL 8.0+
  • Redis (可选)

2. 安装依赖

pip install -r requirements.txt
pip install alembic

3. 配置环境变量

cp .env.example .env

编辑 .env 文件,配置以下内容:

# MySQL
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_USER=root
MYSQL_PASSWORD=your-password
MYSQL_DB=gamified_life

# LLM (LiteLLM)
LITELLM_API_KEY=your-api-key-here
DEFAULT_MODEL=gpt-4

4. 创建数据库

CREATE DATABASE gamified_life CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

4.1 执行数据库迁移(Alembic)

alembic upgrade head

5. 启动服务

python -m app.main

服务将在 http://localhost:5000 启动。

6. 启动 MCP 工具服务(可选但推荐)

python -m app.mcp.server

默认地址为 http://localhost:8001。

API 接口

基础接口

方法路径描述
GET/服务信息
GET/api/status服务与 Agent 状态
GET/health健康检查

用户接口

方法路径描述
POST/api/auth/register注册并创建会话
POST/api/auth/login登录并创建会话
POST/api/auth/logout退出登录并销毁会话
GET/api/auth/me获取当前会话用户
POST/api/chat与 Agent 对话
GET/api/me/profile获取当前会话用户资料
GET/api/me/goals获取当前会话用户目标
GET/api/me/tasks获取当前会话用户任务
GET/api/me/events获取当前会话用户事件

任务接口

方法路径描述
POST/api/tasks/complete/<task_id>完成任务

数据接口

方法路径描述
GET/api/achievements获取所有成就
GET/api/rewards获取所有奖励

定时任务接口

方法路径描述
POST/api/schedules创建定时任务(chat/reflector)
GET/api/me/schedules获取当前会话用户定时任务
DELETE/api/schedules/<job_id>删除定时任务

API 使用示例

1. 注册并登录(会话模式)

curl -X POST http://localhost:5000/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "username": "demo_user",
    "password": "demo123456"
  }' \
  -c cookies.txt

2. 发送消息(使用会话 Cookie)

curl -X POST http://localhost:5000/api/chat \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{
    "message": "这周我要搞定遥感论文的初稿,还要健身三次"
  }'

响应示例:

{
  "success": true,
  "agent": "PLANNING",
  "message": "已为您创建目标「遥感论文初稿」和3个每日任务...",
  "data": {
    "goal": {
      "id": "xxx",
      "title": "遥感论文初稿",
      "xp_reward": 450
    },
    "tasks": [
      {
        "id": "xxx",
        "title": "完成文献综述",
        "difficulty": "medium",
        "xp_reward": 150
      }
    ],
    "profile": {
      "level": 1,
      "total_xp": 0,
      "streak_days": 0
    }
  }
}

3. 完成任务

curl -X POST http://localhost:5000/api/tasks/complete/task-xxx \
  -H "Content-Type: application/json" \
  -b cookies.txt \
  -d '{}'

响应示例:

{
  "success": true,
  "message": "Completed task '完成文献综述'! +150 XP",
  "xp_earned": 150,
  "level_up": false,
  "new_level": 1,
  "drop": {
    "name": "XP Boost",
    "rarity": "common"
  },
  "profile": {
    "level": 1,
    "total_xp": 150,
    "tasks_completed": 1
  }
}

4. 获取用户资料

curl -b cookies.txt http://localhost:5000/api/me/profile

游戏机制

任务难度与 XP

难度XP 倍数掉落率加成
Easy1.0x-
Medium1.5x-
Hard2.0x+5%
Epic3.0x+15%

随机掉落

  • Common (常见): 60% 概率
  • Rare (稀有): 25% 概率
  • Epic (史诗): 12% 概率
  • Legendary (传说): 3% 概率

成就系统

成就条件
⚔️ First Blood完成第一个任务
🔥 On Fire3 天连续签到
💎 Unstoppable7 天连续签到
📋 Master Planner完成 10 个任务
🎯 Goal Crusher完成 5 个目标
🏆 Challenge Seeker完成 10 个挑战
👑 Epic Hero完成一个 Epic 任务
⭐ Rising Star达到 10 级
🌟 Veteran达到 50 级
⚡ Streak Master30 天连续签到

项目结构

GamifiedLife/
├── requirements.txt         # 依赖
├── .env.example             # 环境变量模板
└── app/
    ├── config.py            # 配置
    ├── schemas.py           # 数据模型
    ├── main.py              # Flask 主应用
    ├── scheduler_service.py # APScheduler 调度服务
    ├── agents/              # 智能体模块
    │   ├── state.py         # LangGraph 状态
    │   ├── llm_client.py    # LLM 客户端
    │   ├── supervisor.py   # 意图路由
    │   ├── planner.py       # 目标规划
    │   ├── reward.py        # 奖励系统
    │   ├── query.py         # 查询
    │   ├── chat.py          # 通用聊天
    │   ├── reflector.py     # 用户画像反思
    │   └── workflow.py      # 工作流
    ├── database/            # 数据层
    │   ├── models.py        # SQLAlchemy 模型
    │   └── services.py      # Agent 结果持久化
    └── mcp/                 # MCP 协议
        ├── server.py        # MCP 服务
        ├── client.py        # MCP 客户端
        └── mcp_tools.py     # LangChain 工具包装

扩展开发

添加新的 Agent

  1. 在 app/agents/ 目录创建新的 Agent 文件
  2. 实现 Agent Node 函数
  3. 在 workflow.py 中注册到 LangGraph

生产部署:HTTPS + Let's Encrypt 自动证书

生产编排文件使用 docker-compose.prod.yml,通过 nginx + certbot 自动申请/续期证书。

1) 准备环境变量

在 .prod.env 配置以下字段:

  • LE_CERTBOT_ENABLED: 0 无域名模式(禁用自动申请),1 开启自动申请
  • LE_DOMAIN: 主域名(必须已解析到服务器公网 IP)
  • LE_ADDITIONAL_DOMAINS: 附加域名(逗号分隔,可留空)
  • LE_EMAIL: 证书提醒邮箱
  • LE_STAGING: 1 测试环境,0 正式环境

如果你暂时没有域名,建议设置 LE_CERTBOT_ENABLED=0,系统会保留 HTTPS(自签证书)并跳过 Let's Encrypt 申请。

2) 首次启动前准备临时证书(避免 Nginx 启动失败)

openssl req -x509 -nodes -days 3 -newkey rsa:2048 \
  -keyout deploy/certs/privkey.pem \
  -out deploy/certs/fullchain.pem \
  -subj "/CN=localhost"

3) 启动生产栈

docker compose -f docker-compose.prod.yml --env-file .prod.env up -d --build

4) 切换正式签发

确认流程正常后,把 LE_CERTBOT_ENABLED=1 且 LE_STAGING=0,然后重建 certbot:

docker compose -f docker-compose.prod.yml --env-file .prod.env up -d --force-recreate certbot

5) 验证

  • 访问 http://<你的域名>/.well-known/acme-challenge/test 不应被强制跳转到 HTTPS
  • 访问 https://<你的域名>/health 返回健康状态
  • 打开 https://<你的域名> 查看证书签发机构是否为 Let's Encrypt

计划

  • 设计用户属性经验条
  • agent链路流输出
  • 添加更多MCP工具
    • 日历工具
    • 网络搜索工具
    • GitHub 提交工具
    • 获取位置 工具
  • 实现自定义奖励(通过chat触发工具并加入奖池)
    • 设计奖励生成工具(输入用户状态,输出奖励建议,根据用户行为和目标)
    • 将奖励生成工具集成到 Planner 或 Reward Agent 中
  • 实现 OpenTelemetry全链路监控
  • 加入Redis 以及 ES 以支持更复杂的状态管理和搜索功能

展示

License

MIT License

↑↓ navigate openesc close