Skip to content

IntelliJ IDEA 插件

MyDeskBot 提供强大的 IntelliJ IDEA 插件,将 AI 助手直接集成到您的开发环境中。

目录

功能特性

核心功能

  • 智能代码补全 - 基于上下文的智能补全建议
  • 代码生成 - 通过自然语言描述生成代码
  • 代码审查 - 实时代码质量检查
  • 代码重构 - 智能重构建议
  • 文档生成 - 自动生成代码文档
  • Bug 修复 - 智能错误诊断和修复建议

高级功能

  • 项目感知 - 理解整个项目结构和上下文
  • 多文件编辑 - 跨文件智能分析和修改
  • 计划模式 - 复杂任务的分步规划
  • 持续 AI - 全程 AI 辅助开发
  • 测试生成 - 自动生成单元测试

安装

方式一:从 JetBrains Marketplace 安装(推荐)

  1. 打开 IntelliJ IDEA
  2. 进入 FileSettings(macOS: IntelliJ IDEAPreferences
  3. 导航到 Plugins
  4. 搜索 MyDeskBot
  5. 点击 Install
  6. 重启 IDE

方式二:从磁盘安装

  1. GitHub Releases 下载插件
  2. 打开 IntelliJ IDEA
  3. 进入 FileSettingsPlugins
  4. 点击齿轮图标 → Install Plugin from Disk
  5. 选择下载的插件文件
  6. 重启 IDE

支持的 IDE

MyDeskBot IDEA 插件支持以下 JetBrains IDE:

  • IntelliJ IDEA
  • PyCharm
  • WebStorm
  • PhpStorm
  • RubyMine
  • GoLand
  • CLion
  • DataGrip
  • AppCode
  • Rider

快速开始

1. 首次配置

  1. 安装插件后重启 IDE
  2. 在工具栏找到 MyDeskBot 图标
  3. 点击图标或使用快捷键 Ctrl+Shift+M (Windows/Linux) / Cmd+Shift+M (macOS)
  4. 输入您的 API 密钥
  5. 选择您偏好的 AI 模型
  6. 开始使用!

2. 第一个请求

java
// 选中这段代码
public void processData(List<String> data) {
    // TODO: 实现数据处理逻辑
}

右键 → MyDeskBotComplete Code,输入:

实现一个方法,过滤空字符串并转换为大写

3. 查看结果

插件会为您生成:

java
public List<String> processData(List<String> data) {
    if (data == null) {
        return Collections.emptyList();
    }

    return data.stream()
        .filter(Objects::nonNull)
        .filter(s -> !s.isEmpty())
        .map(String::toUpperCase)
        .collect(Collectors.toList());
}

使用指南

代码补全

触发方式

  1. 快捷键: Ctrl+Shift+Space (Windows/Linux) / Cmd+Shift+Space (macOS)
  2. 右键菜单: 选中代码 → 右键 → MyDeskBot → Complete Code
  3. 工具栏: 点击 MyDeskBot 图标

示例

输入提示:

创建一个 Spring Boot REST 控制器,实现用户 CRUD 操作

生成:

java
@RestController
@RequestMapping("/api/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public ResponseEntity<List<User>> getAllUsers() {
        return ResponseEntity.ok(userService.findAll());
    }

    @GetMapping("/{id}")
    public ResponseEntity<User> getUserById(@PathVariable Long id) {
        return userService.findById(id)
            .map(ResponseEntity::ok)
            .orElse(ResponseEntity.notFound().build());
    }

    @PostMapping
    public ResponseEntity<User> createUser(@RequestBody User user) {
        User created = userService.save(user);
        return ResponseEntity.status(HttpStatus.CREATED).body(created);
    }

    @PutMapping("/{id}")
    public ResponseEntity<User> updateUser(
            @PathVariable Long id,
            @RequestBody User user) {
        return userService.findById(id)
            .map(existingUser -> {
                existingUser.setName(user.getName());
                existingUser.setEmail(user.getEmail());
                return ResponseEntity.ok(userService.save(existingUser));
            })
            .orElse(ResponseEntity.notFound().build());
    }

    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deleteUser(@PathVariable Long id) {
        if (userService.existsById(id)) {
            userService.deleteById(id);
            return ResponseEntity.noContent().build();
        }
        return ResponseEntity.notFound().build();
    }
}

代码审查

如何使用

  1. 选中要审查的代码
  2. 右键 → MyDeskBot → Review Code
  3. 查看审查结果和建议

审查内容

  • 代码质量问题
  • 潜在的 bug
  • 性能问题
  • 安全漏洞
  • 最佳实践建议

示例输出

markdown
## 代码审查结果

### 🔴 高优先级问题

1. **空指针风险** (第 15 行)
   - 问题:`user.getName()` 可能为 null
   - 建议:添加空值检查
2. **资源泄漏** (第 32 行)
   - 问题:FileInputStream 未正确关闭
   - 建议:使用 try-with-resources

### 🟡 中等优先级问题

1. **性能优化** (第 18-25 行)
   - 问题:循环中重复创建对象
   - 建议:将对象创建移到循环外

### 💡 改进建议

1. 添加 JavaDoc 注释
2. 提取魔法数字为常量
3. 使用 Optional 代替 null 返回值

代码重构

重构操作

  1. 选中代码
  2. 右键 → MyDeskBot → Refactor
  3. 选择重构类型或描述需求

支持的重构类型

  • 提取方法
  • 重命名变量
  • 简化条件表达式
  • 减少嵌套层级
  • 应用设计模式

示例

选中复杂方法,输入:

将这个方法重构为使用策略模式

文档生成

生成 JavaDoc

  1. 选中类或方法
  2. 右键 → MyDeskBot → Generate Documentation
  3. 选择文档类型

示例

输入方法:

java
public double calculateDiscount(Customer customer, Order order) {
    double baseDiscount = customer.isVip() ? 0.1 : 0.0;
    double quantityDiscount = order.getQuantity() > 10 ? 0.05 : 0.0;
    return baseDiscount + quantityDiscount;
}

生成的 JavaDoc:

java
/**
 * 计算订单折扣金额
 *
 * 折扣由两部分组成:
 * - VIP 会员折扣:10%
 * - 大额订单折扣:购买数量超过 10 件时额外 5%
 *
 * @param customer 客户信息,用于判断 VIP 状态
 * @param order 订单信息,包含购买数量
 * @return 折扣比例,取值范围 [0.0, 0.15]
 * @throws IllegalArgumentException 当 customer 或 order 为 null 时
 *
 * @since 1.0.0
 * @author MyDeskBot
 */
public double calculateDiscount(Customer customer, Order order) {
    // ...
}

计划模式

对于复杂任务,使用计划模式分步完成:

  1. 右键 → MyDeskBot → Plan Mode
  2. 描述任务目标
  3. AI 生成详细计划
  4. 逐步执行计划

示例

输入:

为现有的用户管理模块添加以下功能:
1. 用户登录历史记录
2. 密码强度验证
3. 账户锁定机制
4. 密码重置功能

生成的计划:

markdown
## 实施计划

### 阶段一:数据库设计(3 项)

1. 创建 login_history 表
2. 修改 user 表添加锁定字段
3. 创建 password_reset_tokens 表

### 阶段二:后端实现(5 项)

1. 实现 LoginHistoryService
2. 实现密码强度验证器
3. 实现账户锁定逻辑
4. 实现密码重置流程
5. 添加对应的 REST API

### 阶段三:前端实现(4 项)

1. 创建登录历史页面
2. 添加密码强度指示器
3. 实现账户解锁界面
4. 创建密码重置表单

### 阶段四:测试(3 项)

1. 单元测试
2. 集成测试
3. 安全测试

预计时间:2-3 天

配置

打开设置

进入 FileSettingsToolsMyDeskBot

API 配置

yaml
API Key: sk-...
Base URL: https://api.openai.com/v1
Model: gpt-4

模型参数

yaml
Temperature: 0.7
Max Tokens: 2000
Top P: 1.0
Frequency Penalty: 0
Presence Penalty: 0

行为设置

yaml
Auto-trigger: false
Show inline suggestions: true
Include context files: 3
Max file size: 1MB

代理设置

yaml
Enable proxy: true
Proxy type: HTTP
Host: 127.0.0.1
Port: 7890

快捷键

常用快捷键

功能Windows/LinuxmacOS
打开面板Ctrl+Shift+MCmd+Shift+M
代码补全Ctrl+Shift+SpaceCmd+Shift+Space
代码审查Ctrl+Shift+RCmd+Shift+R
快速修复Alt+EnterOpt+Enter
添加注释Ctrl+Shift+DCmd+Shift+D
计划模式Ctrl+Shift+PCmd+Shift+P

自定义快捷键

  1. 打开 SettingsKeymap
  2. 搜索 "MyDeskBot"
  3. 修改快捷键绑定

高级功能

多文件操作

同时操作多个文件:

  1. 在 Project 视图中选中多个文件
  2. 右键 → MyDeskBot → Multi-file Analysis
  3. 描述需要进行的操作

项目级别分析

分析整个项目:

  1. 右键项目根目录
  2. MyDeskBot → Analyze Project
  3. 选择分析类型:
    • 架构分析
    • 依赖分析
    • 性能分析
    • 安全分析

集成 CI/CD

插件可以集成到 CI/CD 流程:

yaml
# .github/workflows/code-review.yml
name: AI Code Review
on: [pull_request]
jobs:
  review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: MyDeskBot Review
        uses: mydeskbot/action@v1
        with:
          api-key: ${{ secrets.MYDESKBOT_API_KEY }}

故障排除

插件无法加载

  1. 确认 IDEA 版本兼容
  2. 检查插件版本
  3. 查看 IDEA 日志
  4. 尝试重新安装

API 调用失败

  1. 检查网络连接
  2. 验证 API 密钥
  3. 检查代理设置
  4. 查看错误日志

响应缓慢

  1. 检查模型选择
  2. 减少 context 文件数量
  3. 调整 Max Tokens 设置
  4. 考虑升级到更快的服务器

下一步

获取帮助