Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Code PalNew to Visual Studio Code? Get it now.
Code Pal

Code Pal

gyj

|
14 installs
| (0) | Free
An electronic pet living in the editor, accompanying your programming journey as your code grows!
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

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 实现数据持久化:

// 保存数据
const storage = context.globalState;

await storage.update('petData', {
  type: 'cat',      // 宠物类型
  level: 3,         // 当前等级
  exp: 150          // 当前经验值
});

// 读取数据
const petData = storage.get('petData');
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft