轻量级 JetBrains IDEA 插件,可对接任意 OpenAI 兼容 API,在 IDE 内直接获得流式 Chat 与一键生成 Commit Message 能力,不绑定任何厂商账号。
IntelliJ IDEA 生态中,绝大多数 AI 插件(GitHub Copilot、通义灵码、MarsCode 等)都绑定了各自的账号体系,无法使用已有的国内 AI API Key。
CodePlanGUI 解决这个问题:自由配置任意 OpenAI 兼容接口的 endpoint 和 Key,在 IDEA 内获得流式 Chat 侧边栏和一键生成 Commit Message,不切标签页。
| 功能 | 说明 |
|---|---|
| Chat 侧边栏 | SSE 逐 token 流式输出,Markdown 渲染,代码块语法高亮带复制按钮 |
| 上下文注入 | 可切换是否将当前文件(或选中内容)附加到每条消息,自动截断至 300 行 / 1.2 万字符 |
| Ask AI | 选中编辑器代码 → 右键 → Ask AI,带选中片段发送 |
| Commit Message 生成 | 在 Git 提交对话框点击 ✨,自动读取暂存区 diff 生成 Conventional Commits 格式提交信息 |
| 多 Provider 管理 | 可添加、编辑、删除、切换任意数量的 OpenAI 兼容接口 |
| 连接测试 | 一键验证,失败时显示具体 HTTP 状态码和错误详情 |
| 安全存储 | API Key 存入 IDEA 内置 PasswordSafe,不以明文落盘,不同步到 VCS |
- IntelliJ IDEA 2023.1 及以上(社区版或旗舰版均可)
- JetBrains Runtime(JBR)— IDEA 已内置,内嵌浏览器(JCEF)依赖此运行时
- JDK 17(构建时需要)
- 构建或下载
CodePlanGUI-0.1.0.zip(见 构建) - 打开 IDEA → Settings → Plugins → ⚙ → Install Plugin from Disk...
- 选择 zip 文件 → OK → 重启 IDEA
-
进入 Settings → Tools → CodePlanGUI
-
在 Providers 标签页点击 Add 添加 Provider:
字段 示例 Name 豆包Endpoint https://ark.cn-beijing.volces.com/api/v3Model doubao-pro-4kAPI Key 安全存储 -
点击 Test Connection 验证连通性,失败时会显示具体错误
-
点 OK 保存
常用 Provider 地址参考:
| 服务 | Endpoint |
|---|---|
| OpenAI | https://api.openai.com/v1 |
| DeepSeek | https://api.deepseek.com/v1 |
| 阿里百炼 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
| 字节豆包 | https://ark.cn-beijing.volces.com/api/v3 |
| 本地 Ollama | http://localhost:11434/v1 |
- 打开右侧 CodePlanGUI Tool Window,开始对话
# 构建 webview 并打包插件 zip
JAVA_HOME=/path/to/jdk17 ./gradlew buildWebview buildPlugin
# 产物路径
build/distributions/CodePlanGUI-0.1.0.zip需要 JDK 17。Gradle 8.5 不支持 JDK 21+。
JAVA_HOME=/path/to/jdk17 ./gradlew buildWebview runIde完整分阶段计划见 docs/roadmap.md。
当前明确不具备:
- 在 Chat 中直接执行命令
- Agent 模式或 slash command
- 云端账号体系或托管后端服务
不做:
- 账号体系 / 云端同步(始终本地 key,零服务器)
- 内置模型
- 非 OpenAI 兼容的私有协议
┌─────────────────────────────────────────────┐
│ IDEA Plugin (Kotlin) │
│ ├── Tool Window (ChatPanel) │
│ ├── Settings (PersistentStateComponent) │
│ │ └── API Keys → PasswordSafe │
│ ├── Git Commit Action (GenerateCommitMsg) │
│ └── JCEF Browser Host │
│ ↕ Kotlin ↔ JS Bridge │
│ ┌─────────────────────────────────────────┐ │
│ │ React 19 Frontend (Chat UI) │ │
│ │ Ant Design 5 · marked · highlight.js │ │
│ └─────────────────────────────────────────┘ │
│ ↕ OkHttp SSE │
└─────────────────────────────────────────────┘
↓
External AI API (OpenAI-compatible)
阿里百炼 / 豆包 / DeepSeek / OpenAI / …
关键设计决策:
- 不引入 bridge 守护进程 —— 与那些托管子进程(如 Claude Code CLI)的插件不同,CodePlanGUI 直接从插件层调用 REST API,架构更简单。
- JCEF 而非原生 Swing —— Swing 难以胜任流式 Markdown 与语法高亮渲染,JCEF 提供完整的浏览器运行时。
loadHTML而非loadURL("file://...")—— 插件 JAR 内的资源在运行时无法通过 file URL 寻址,前端 HTML 通过getResourceAsStream读出后以字符串注入。- API Key 走
PasswordSafe—— 存入 IDEA 凭据库,绝不写入可能被提交到 VCS 的codePlanGUI.xml。
| 层 | 技术 |
|---|---|
| 插件外壳 | Kotlin 1.9 + Gradle(Groovy DSL) |
| IntelliJ Platform | org.jetbrains.intellij.platform v2.1.0 |
| 内嵌浏览器 | JCEF(JetBrains Chromium Embedded Framework) |
| 前端 | React 19 + TypeScript + Ant Design 5 + Vite |
| HTTP / SSE | OkHttp 4.12 + okhttp-sse |
| 序列化 | kotlinx-serialization-json 1.6.3 |
| 并发 | kotlinx-coroutines-core 1.7.3 |
MIT