# Code Pal-VS Code 编码趣味插件 **Repository Path**: gao_yunji/code-pal ## Basic Information - **Project Name**: Code Pal-VS Code 编码趣味插件 - **Description**: Code Pal 是一款为 VS Code 设计的趣味扩展插件,旨在通过虚拟宠物陪伴提升编码体验。用户可在编辑器右下角显示等级图标,通过点击互动触发随机情绪反馈(开心、饥饿、生气)。具备成长系统,支持等级提升(Lv1-Lv25+无限荣耀等级),经验值通过用户行为(如编码时长、保存文件)累积,并受每日上限、连续登录奖励及活跃度衰减机制影响。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-07 - **Last Updated**: 2025-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: TypeScript, Nodejs, VSCode ## README # Code Pal 虚拟宠物插件设计方案 Code Pal 是一款为 VS Code 设计的趣味扩展插件,旨在通过虚拟宠物陪伴提升编码体验。用户可在编辑器右下角显示等级图标,通过点击互动触发随机情绪反馈(开心、饥饿、生气)。具备成长系统,支持等级提升(Lv1-Lv25+无限荣耀等级),经验值通过用户行为(如编码时长、保存文件)累积,并受每日上限、连续登录奖励及活跃度衰减机制影响。 ## 1. 核心功能设计 ### 🎯 基础功能 - **宠物显示** 在编辑器右下角显示一个像素风格的宠物(可选类型:猫、狗、恐龙等)。 - **成长系统** - **等级架构** - 等级范围:Lv1~Lv25(基础阶段) + 无限荣耀等级(满级后)。 - 等级成长采用指数曲线模型,确保用户获得及时反馈。 - 已实现完整的等级荣誉称号系统: 1. 新增6个等级区间,每个区间包含: - 专属emoji图标 - 荣誉称号(萌新/码农/工程师/架构师/专家/荣耀) - 独特颜色标识 - 等级显示(Lv1-25/G1+) 2. 状态栏现在显示格式: - 三种宠物类型(🐱猫/🐶狗/🦖恐龙)可正常切换 - 每种宠物有独特的情绪语录 - 状态栏正确显示宠物图标和等级信息 - 点击互动会显示随机情绪反馈 - 所有状态变更都会持久化保存 3. 颜色方案: - 萌新: 浅绿色(#A5D6A7) - 码农: 浅蓝色(#81D4FA) - 工程师: 浅紫色(#CE93D8) - 架构师: 浅橙色(#FFAB91) - 专家: 浅黄色(#FFF59D) - 荣耀: 浅金色(#FFCC80) - **成长曲线**: 1. 基础阶段(Lv1-25)使用0.5*level^3曲线,3年内达成: - Lv1→Lv3: 约1个月(每天2小时) - Lv1→Lv10: 约3-6个月 - Lv1→Lv25: 约3年 2. 荣耀阶段(Lv25+)使用50*(level-25)^4曲线: - 提供更长期的成长目标 - 保持指数级难度增长 3. 计算公式调整: - 基础阶段从平方改为立方增长 - 荣耀阶段从立方改为四次方增长 - 调整系数使时间目标更合理 - **防沉迷与平衡机制** | 机制 | 规则 | 目的 | | ------------ | ---------------------------------- | -------------- | | 每日经验上限 | 基础经验最高1000/日 | 防止过度投入 | | 活跃加成 | 连续3天登录经验获取+20% | 鼓励规律编码 | | 等级衰减 | 15天不登录,经验获取-30%(可恢复) | 维持用户活跃度 | - **数据统计** - 提供 `/pet stats` 命令,显示总编码时长、当前等级等信息。 --- ## 2. 技术实现方案 ### 📁 项目结构 ``` vscode-pet/ ├── assets/ # 宠物精灵图资源 ├── src/ │ ├── Pet.ts # 宠物核心逻辑 │ ├── StatusBar.ts # 状态栏管理 │ ├── commands.ts # 注册的命令 │ └── extension.ts # 插件入口 └── package.json # 插件配置文件 ``` --- ## 3. 数据存储设计 ### 💾 存储方案 使用 VS Code 的 `Memento API` 实现数据持久化: ```typescript // 保存数据 const storage = context.globalState; await storage.update('petData', { type: 'cat', // 宠物类型 level: 3, // 当前等级 exp: 150 // 当前经验值 }); // 读取数据 const petData = storage.get('petData'); ```