Skip to content

Repository files navigation

AI Diff Commit

AI Diff Commit

Get from Marketplace

Downloads Version


IntelliJ Platform 插件:基于 OpenAI 兼容接口,根据 Git 变更(含已勾选的 Unversioned 文件)流式生成 Commit Message。

功能

  • Commit 消息工具栏 AI Generate,一键生成提交说明
  • 流式输出到 Commit 输入框;生成中按钮变为红色 Stop,右下角显示进度条
  • 多家供应商:OpenAI / Gemini / DeepSeek / OpenRouter / Ollama / Kimi / 阿里云百炼 / SiliconFlow / 火山引擎 / Cloudflare / 自定义 OpenAI 兼容端点
  • 提示词优先级:
    1. 项目根目录 commit-prompt.txt
    2. 设置里的全局提示词
    3. 插件内置默认提示词
  • 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

查看发给 AI 的日志

完整请求写在 独立文件(与 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,同一文件夹里看上述文件。

使用

  1. Settings → Tools → AI Diff Commit
    • 选择 Provider,填写 API Key / API URL / Model(可选 Proxy)
    • 可点 Refresh ModelsTest Connection
    • 需要时配置全局提示词,或查看内置默认提示词
  2. 在 Git 项目中修改文件,打开 Commit 工具窗/对话框
  3. 勾选要提交的变更(含 Unversioned)
  4. 点击消息框工具栏 AI Generate
  5. 生成过程中可点 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 用图

License

MIT © AnkioTomas

About

基于AI的Commit生成插件

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages