di-sukharev/opencommit

top #1 and most feature rich GPT wrapper for git — generate commit messages with an LLM in 1 sec — works with Claude, GPT and every other provider, supports local Ollama models too

OpenCommit – AI 驅動的提交訊息產生器

它是什麼 – 一個 Node.js 命令列工具(oco),讀取你已暫存的 Git 提交檔案,將差異(或整個檔案內容)傳送給大型語言模型,並回傳簡潔、符合規範的提交訊息。訊息可包含 GitMoji 表情符號、簡短描述,以及可選的「為何」說明。

如何運作

  1. 你將套件全域安裝(npm i -g opencommit)。
  2. 為任意支援的 LLM 提供商(OpenAI、Anthropic、Azure、Ollama、llama.cpp、Gemini、Flowise、DeepSeek、OpenRouter、OrcaRouter 等)提供 API 金鑰。
  3. 執行 oco(或 git add … && oco)會透過提供者的 REST 端點將暫存的變更傳送給選定的模型。
  4. 模型回傳提交訊息,工具將其傳遞給 git commit -m "..."。可選旗標可讓你跳過確認提示、加入表情符號,或強制使用單行訊息。

主要功能(如 README 所述)

  • 多提供者支援 – 支援雲端 API(OpenAI、Anthropic、Azure 等)與透過 Ollama 或 llama.cpp 伺服器運行的本地模型。
  • 可設定模型與語言 – 預設為 gpt-4o-mini;可切換為提供者支援的任意模型名稱,並設定輸出語言(如 defr)。
  • GitMoji 集成 – 使用 --fgm 啟用 10 個簡短表情符號或完整 GitMoji 規範。
  • 提交鈎子與 GitHub Actionoco hook set 安裝 prepare-commit-msg 鈎子;Beta 版 GitHub Action 可在推送時重寫新提交。
  • 專案級與全域設定 – 儲存在 ~/.opencommit 或專案中的 .env 檔案;支援多種設定項目(OCO_EMOJIOCO_DESCRIPTIONOCO_WHY、令牌限制、代理等)。
  • 忽略檔案.opencommitignore(本機)與 ~/.opencommitignore(全域)可排除大檔案或密鑰,避免傳送給 LLM。
  • 模型管理oco models 列出快取的提供者模型;--refresh 強制更新。
  • 模板佔位符 – 可在大範本中嵌入自訂字串($msg),例如 oco '#205: $msg'

典型工作流程

# 一次性安裝
global npm i -g opencommit

# 設定 API 金鑰(每台機器或每個專案一次)
oco config set OCO_API_KEY=sk-…

# 暫存變更(或讓 oco 自動處理)並產生提交
git add .
oco            # 開啟確認提示
# 或跳過確認
oco --yes

使用本地模型(Ollama 範例):

ollama run mistral   # 只拉取一次模型
oco config set OCO_AI_PROVIDER=ollama OCO_MODEL=llama3:8b
oco

GitHub Action 使用 – 按 README 所示新增 .github/workflows/opencommit.yml;該動作將使用設定的模型與選項在推送時重寫每個新提交。

為何重要 – 寫出清晰、符合規範的提交訊息很繁瑣。OpenCommit 自動化此過程,確保一致性、更好的變更日誌與更順暢的協作,同時讓開發者掌控風格、語言與成本。


安裝npm install -g opencommit 文件 – 倉儲的 README(命令:ocooco configoco hookoco models 等) 授權 – 摘錄中未說明;請查看倉儲以取得實際授權。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案