IntelliJ IDEA 插件
MyDeskBot 提供强大的 IntelliJ IDEA 插件,将 AI 助手直接集成到您的开发环境中。
目录
功能特性
核心功能
- ✅ 智能代码补全 - 基于上下文的智能补全建议
- ✅ 代码生成 - 通过自然语言描述生成代码
- ✅ 代码审查 - 实时代码质量检查
- ✅ 代码重构 - 智能重构建议
- ✅ 文档生成 - 自动生成代码文档
- ✅ Bug 修复 - 智能错误诊断和修复建议
高级功能
- ✨ 项目感知 - 理解整个项目结构和上下文
- ✨ 多文件编辑 - 跨文件智能分析和修改
- ✨ 计划模式 - 复杂任务的分步规划
- ✨ 持续 AI - 全程 AI 辅助开发
- ✨ 测试生成 - 自动生成单元测试
安装
方式一:从 JetBrains Marketplace 安装(推荐)
- 打开 IntelliJ IDEA
- 进入 File → Settings(macOS: IntelliJ IDEA → Preferences)
- 导航到 Plugins
- 搜索 MyDeskBot
- 点击 Install
- 重启 IDE
方式二:从磁盘安装
- 从 GitHub Releases 下载插件
- 打开 IntelliJ IDEA
- 进入 File → Settings → Plugins
- 点击齿轮图标 → Install Plugin from Disk
- 选择下载的插件文件
- 重启 IDE
支持的 IDE
MyDeskBot IDEA 插件支持以下 JetBrains IDE:
- IntelliJ IDEA
- PyCharm
- WebStorm
- PhpStorm
- RubyMine
- GoLand
- CLion
- DataGrip
- AppCode
- Rider
快速开始
1. 首次配置
- 安装插件后重启 IDE
- 在工具栏找到 MyDeskBot 图标
- 点击图标或使用快捷键
Ctrl+Shift+M(Windows/Linux) /Cmd+Shift+M(macOS) - 输入您的 API 密钥
- 选择您偏好的 AI 模型
- 开始使用!
2. 第一个请求
java
// 选中这段代码
public void processData(List<String> data) {
// TODO: 实现数据处理逻辑
}右键 → MyDeskBot → Complete 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());
}使用指南
代码补全
触发方式
- 快捷键:
Ctrl+Shift+Space(Windows/Linux) /Cmd+Shift+Space(macOS) - 右键菜单: 选中代码 → 右键 → MyDeskBot → Complete Code
- 工具栏: 点击 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();
}
}代码审查
如何使用
- 选中要审查的代码
- 右键 → MyDeskBot → Review Code
- 查看审查结果和建议
审查内容
- 代码质量问题
- 潜在的 bug
- 性能问题
- 安全漏洞
- 最佳实践建议
示例输出
markdown
## 代码审查结果
### 🔴 高优先级问题
1. **空指针风险** (第 15 行)
- 问题:`user.getName()` 可能为 null
- 建议:添加空值检查
2. **资源泄漏** (第 32 行)
- 问题:FileInputStream 未正确关闭
- 建议:使用 try-with-resources
### 🟡 中等优先级问题
1. **性能优化** (第 18-25 行)
- 问题:循环中重复创建对象
- 建议:将对象创建移到循环外
### 💡 改进建议
1. 添加 JavaDoc 注释
2. 提取魔法数字为常量
3. 使用 Optional 代替 null 返回值代码重构
重构操作
- 选中代码
- 右键 → MyDeskBot → Refactor
- 选择重构类型或描述需求
支持的重构类型
- 提取方法
- 重命名变量
- 简化条件表达式
- 减少嵌套层级
- 应用设计模式
示例
选中复杂方法,输入:
将这个方法重构为使用策略模式文档生成
生成 JavaDoc
- 选中类或方法
- 右键 → MyDeskBot → Generate Documentation
- 选择文档类型
示例
输入方法:
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) {
// ...
}计划模式
对于复杂任务,使用计划模式分步完成:
- 右键 → MyDeskBot → Plan Mode
- 描述任务目标
- AI 生成详细计划
- 逐步执行计划
示例
输入:
为现有的用户管理模块添加以下功能:
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 天配置
打开设置
进入 File → Settings → Tools → MyDeskBot
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/Linux | macOS |
|---|---|---|
| 打开面板 | Ctrl+Shift+M | Cmd+Shift+M |
| 代码补全 | Ctrl+Shift+Space | Cmd+Shift+Space |
| 代码审查 | Ctrl+Shift+R | Cmd+Shift+R |
| 快速修复 | Alt+Enter | Opt+Enter |
| 添加注释 | Ctrl+Shift+D | Cmd+Shift+D |
| 计划模式 | Ctrl+Shift+P | Cmd+Shift+P |
自定义快捷键
- 打开 Settings → Keymap
- 搜索 "MyDeskBot"
- 修改快捷键绑定
高级功能
多文件操作
同时操作多个文件:
- 在 Project 视图中选中多个文件
- 右键 → MyDeskBot → Multi-file Analysis
- 描述需要进行的操作
项目级别分析
分析整个项目:
- 右键项目根目录
- MyDeskBot → Analyze Project
- 选择分析类型:
- 架构分析
- 依赖分析
- 性能分析
- 安全分析
集成 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 }}故障排除
插件无法加载
- 确认 IDEA 版本兼容
- 检查插件版本
- 查看 IDEA 日志
- 尝试重新安装
API 调用失败
- 检查网络连接
- 验证 API 密钥
- 检查代理设置
- 查看错误日志
响应缓慢
- 检查模型选择
- 减少 context 文件数量
- 调整 Max Tokens 设置
- 考虑升级到更快的服务器
下一步
- 快速开始 - 了解基本概念
- VS Code 扩展 - 了解其他平台支持
- Neovim 插件 - 命令行用户指南