IntelliJ Platform 插件:基于 OpenAI 兼容接口,根据 Git 变更(含已勾选的 Unversioned 文件)流式生成 Commit Message。
- Commit 消息工具栏 AI Generate,一键生成提交说明
- 流式输出到 Commit 输入框;生成中按钮变为红色 Stop,右下角显示进度条
- 多家供应商:OpenAI / Gemini / DeepSeek / OpenRouter / Ollama / Kimi / 阿里云百炼 / SiliconFlow / 火山引擎 / Cloudflare / 自定义 OpenAI 兼容端点
- 提示词优先级:
- 项目根目录
commit-prompt.txt - 设置里的全局提示词
- 插件内置默认提示词
- 项目根目录
- Diff 来源:Commit 面板中已勾选的 changes + unversioned files
- Settings 内可刷新模型列表、测试连通性、查看/拷贝内置提示词
- IntelliJ IDEA / 兼容 IDE,构建号 ≥
252(默认针对2025.2.x) - 项目使用 Git(依赖
Git4Idea) - 可用的 OpenAI 兼容 API(Key + Base URL + Model)
# 启动带本插件的沙箱 IDE
./gradlew runIde
# 编译
./gradlew compileKotlin
# 测试
./gradlew test
# 打包
./gradlew buildPlugin产物一般在 build/distributions/。
本插件为动态插件(未声明
require-restart):在 IDE 里启用/禁用/更新一般无需重启。
开发时若沙箱状态异常,可清理后重跑:./gradlew clean rm -rf .intellijPlatform/sandbox ./gradlew runIde
完整请求写在 独立文件(与 idea.log 同目录,不含 API Key):
| 文件 | 内容 |
|---|---|
ai-commit-last-request.log |
最近一次完整 prompt / HTTP body(每次覆盖) |
ai-commit-requests.log |
历史追加;超过约 2MB 轮换为 .log.1(只留一份备份) |
idea.log |
搜 AI Diff Commit:(WARN 一行,带文件绝对路径) |
沙箱路径示例:
.intellijPlatform/sandbox/commit/IU-2025.2.6.2/log/ai-commit-last-request.log
打开方式:Help → Show Log in Finder/Explorer,同一文件夹里看上述文件。
- Settings → Tools → AI Diff Commit
- 选择 Provider,填写 API Key / API URL / Model(可选 Proxy)
- 可点 Refresh Models、Test Connection
- 需要时配置全局提示词,或查看内置默认提示词
- 在 Git 项目中修改文件,打开 Commit 工具窗/对话框
- 勾选要提交的变更(含 Unversioned)
- 点击消息框工具栏 AI Generate
- 生成过程中可点 Stop 或进度条取消
请求结构:
| 角色 | 内容 |
|---|---|
system |
提示词模板(填 {branch} / {language}) |
user |
勾选变更的 diff(超长会截断) |
模板占位符:
| 占位符 | 含义 |
|---|---|
{branch} |
当前 Git 分支名 |
{language} |
Settings 中的 Language(默认 zh-CN) |
{diff} |
旧模板兼容用;不会再嵌入 system,真实 diff 在 user |
项目级示例:在仓库根目录创建 commit-prompt.txt,内容可参考插件内置模板(Settings 页只读展示,或仓库内 src/main/resources/commit-prompt.txt)。
| 项 | 说明 |
|---|---|
| Provider | Gemini / DeepSeek / OpenAI API / OpenAI Compatible / OpenRouter / Ollama / 阿里云百炼 / SiliconFlow / 火山引擎 / Cloudflare Workers AI / Kimi |
| API Key | Bearer Token(Gemini 为 query key;Ollama 可不填) |
| API URL | Base URL(一般不要带 chat 路径);Cloudflare 需替换 {account_id};留空用提供商默认 |
| Model | 模型 ID,可手输或刷新后选择 |
| Proxy | 可选,如 http://127.0.0.1:7890 |
| Language | 填入 {language} |
| Timeout | AI 请求最长等待秒数(默认 300,范围 5–3600) |
| Global Prompt | 无项目 commit-prompt.txt 时使用 |
配置持久化在 IDE 应用级存储(aiCommitSettings.xml),不是项目文件。
src/main/kotlin/net/ankio/commit/
ai/ SSE 解析、消息模型
ai/providers/ Provider 抽象与各厂商实现
diff/ 变更 / Unversioned → diff
generate/ 生成会话、进度、流式写入
prompt/ 提示词解析
settings/ 持久化配置
ui/ Commit Action、Settings 页
util/ 模板占位符
src/main/resources/
META-INF/plugin.xml
META-INF/pluginIcon.svg 插件市场 / 插件列表 Logo
META-INF/pluginIcon_dark.svg
icons/aiCommit.svg Commit 工具栏按钮图标
commit-prompt.txt 内置默认提示词
messages/CommitBundle*.properties UI 文案(默认英文 + zh_CN)
logo/ 原始品牌素材
docs/logo.png README 用图
MIT © AnkioTomas
