Skip to content

Latest commit

 

History

History
248 lines (170 loc) · 11.5 KB

File metadata and controls

248 lines (170 loc) · 11.5 KB

🚀 Git Auto Commit (gac)

PyPI version Changelog Python Build Status codecov Ruff mypy Contributions welcome License: MIT

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | हिन्दी | Tiếng Việt | Français | Русский | Español | Português | Norsk | Svenska | Deutsch | Nederlands | Italiano

能理解你程式碼的 LLM 驅動的提交訊息!

**自動化你的提交!**用 uvx gac 替代 git commit -m "...",生成由大型語言模型建立的上下文相關、格式良好的提交訊息!


你將獲得

智慧的、上下文相關的訊息,解釋你變更背後的原因

GAC 生成上下文提交訊息


快速開始

uvx gac init   # 設定提供者、模型和語言
uvx gac  # 使用 LLM 生成並提交

就是這麼簡單!檢視生成的訊息並用 y 確認。


核心特性

🌐 支援的 30+ 提供者

  • AnthropicAzure OpenAICerebrasChatGPT (OAuth)Chutes.aiClaude Code (OAuth)
  • Crof.aiDeepInfraDeepSeekFireworksGeminiGitHub Copilot (OAuth)Groq
  • Kimi for CodingLilacLM StudioMiniMax.ioMistral AIMoonshot AINeuralwattOllama
  • OpenAIOpenCode GoOpenRouterQwen Cloud (CN & INTL)ReplicateStreamlake/Vanchin
  • Synthetic.newTogether AIWafer.aiZ.AI (API & Coding Plans)
  • Custom Endpoints (Anthropic/OpenAI)

🧠 智慧 LLM 分析

  • 理解意圖:分析程式碼結構、邏輯和模式,理解你變更背後的「原因」,而不僅僅是改變了什麼
  • 語義感知:識別重構、錯誤修復、新特性和破壞性變更,生成上下文適當的訊息
  • 智慧過濾:優先考慮有意義的變更,同時忽略產生的檔案、依賴項目和構件
  • 智慧提交分組 - 使用 --group 自動將相關變更分組為多個邏輯提交

📝 多種訊息格式

  • 單行(-o 標誌):遵循常規提交格式的單行提交訊息
  • 標準(預設):帶有解釋實作細節的要點的摘要
  • 詳細(-v 標誌):包括動機、技術方法和影響分析的全面解釋
  • 50/72 規則(--50-72 標誌):強制使用經典的提交訊息格式,以便在 git log 和 GitHub UI 中獲得最佳可讀性
  • DCO/Signoff(--signoff 標誌):新增 Signed-off-by 行以符合開發者原產地證書(Cherry Studio、Linux 核心及其他專案要求)

🌍 多語言支援

  • 25+ 種語言:生成英語、中文、日語、韓語、西班牙語、法語、德語等 18+ 種語言的提交訊息
  • 彈性翻譯:選擇保持常規提交前綴為英語以保持工具相容性,或完全翻譯它們
  • 多種工作流程:使用 uvx gac language 設定預設語言,或使用 -l <語言> 標誌進行一次性覆蓋
  • 原生文字支援:完全支援非拉丁文字,包括中日韓、西里爾文、泰文等

💻 開發者體驗

  • 互動式回饋:輸入 r 重新生成,e 編輯(預設就地 TUI,或設定了 $GAC_EDITOR 時使用該編輯器),或直接輸入你的回饋,如 讓它更短專注於錯誤修復
  • 互動式提問:使用 --interactive (-i) 回答有關你更改的定向問題,以獲得更多上下文的提交訊息
  • 單命令工作流程:使用 uvx gac -ayp(暫存所有、自動確認、推送)等標誌完成完整工作流程
  • Git 整合:尊重 pre-commit 和 lefthook 鉤子,在昂貴的 LLM 操作之前執行它們
  • MCP 伺服器:執行 uvx gac serve 透過 Model Context Protocol 向 AI 代理公開提交工具

📊 使用統計

uvx gac stats               # 概覽:總 gac 數、連續使用、每日/每週峰值、熱門專案和模型
uvx gac stats models        # 按模型細分:gac 數、令牌、延遲、速度、每次提交延遲圖表
uvx gac stats projects      # 按專案細分:所有倉庫的 gac 數、提交數、令牌數、每次 gac 平均檔案數
uvx gac stats recent        # 最近的 gac 歷史:每次 gac 的令牌、速度、延遲、檔案數(-n 20 查看更多)
uvx gac stats reset         # 重置所有統計資料(需確認)
uvx gac stats reset model <model-id>  # 僅重置特定模型的統計資料
  • 追蹤你的 gac 使用:檢視你用 gac 做了多少次提交、當前連續使用天數、每日/每週活動峰值和熱門專案
  • Token 追蹤:按日、週、專案和模型統計的提示 + 完成令牌總數 — 令牌使用量也有高分獎盃
  • 熱門模型:檢視你最常用的模型以及每個模型消耗的令牌數
  • 高分慶祝:🏆 在你創造新的每日、每週、令牌或連續使用紀錄時獲得獎盃;🥈 在追平紀錄時獲得
  • 設定時選擇加入uvx gac init 會詢問是否啟用統計,並詳細說明儲存的內容
  • 隨時退出:設定 GAC_DISABLE_STATS=true(或 1/yes/on)以停用。設定為 false/0/no(或取消設定)則保持統計啟用
  • 隱私優先:本地儲存在 ~/.gac_stats.json。僅儲存計數、日期、專案名稱和模型名稱 — 不含提交訊息、程式碼或個人資料。無遙測

🛡️ 內建安全

  • 自動密鑰檢測:在提交前掃描 API 密鑰、密碼和權杖
  • 互動式保護:在提交潛在敏感資料之前提示,並提供清晰的補救選項
  • 智慧過濾:忽略範例檔案、範本檔案和佔位符文字以減少誤報

使用範例

基本工作流程

# 暫存你的變更
git add .

# 使用 LLM 生成並提交
uvx gac

# 檢視 → y(提交)| n(取消)| r(重新生成)| e(編輯)| 或輸入回饋

常用命令

命令 描述
uvx gac 生成提交訊息
uvx gac -y 自動確認(無需檢視)
uvx gac -a 在生成提交訊息之前暫存所有內容
uvx gac -S 互動式選擇要暫存的檔案
uvx gac -o 用於瑣碎變更的單行訊息
uvx gac -v 包含動機、技術方法和影響分析的詳細格式
uvx gac -h "提示" 為 LLM 新增上下文(例如,uvx gac -h "錯誤修復"
uvx gac -s 包括範圍(例如,feat(auth):)
uvx gac -i 詢問有關更改的問題以獲得更好的上下文
uvx gac -g 將更改分組為多個邏輯提交
uvx gac -p 提交並推送
uvx gac stats 檢視你的 gac 使用統計

進階使用者範例

# 一條命令完成完整工作流程
# 檢視你的提交統計
uvx gac stats

# 所有專案的統計
uvx gac stats projects

uvx gac -ayp -h "發布準備"

# 帶範圍的詳細解釋
uvx gac -v -s

# 小變更的快速單行
uvx gac -o

# 生成特定語言的提交訊息
uvx gac -l zh-TW

# 將變更分組為邏輯相關的提交
uvx gac -ag

# 帶詳細輸出的互動模式用於詳細解釋
uvx gac -iv

# 偵錯 LLM 看到的內容
uvx gac --show-prompt

# 跳過安全掃描(謹慎使用)
uvx gac --skip-secret-scan

# 新增 signoff 以符合 DCO(Cherry Studio、Linux 核心等)
uvx gac --signoff

互動式回饋系統

對結果不滿意?你有幾個選項:

# 簡單重新生成(無回饋)
r

# 編輯提交訊息
e

# 或者直接輸入你的回饋!
讓它更短並專注於效能改進
使用帶範圍的常規提交格式
解釋安全影響

# 在空輸入上按 Enter 再次檢視提示

編輯功能(e)允許你精煉提交訊息:

  • 預設(就地 TUI):使用 vi/emacs 鍵繫結進行多行編輯 — 糾正拼寫錯誤、調整措辭、重組
  • 設定 GAC_EDITOR:開啟您偏好的編輯器(codevimnano 等) — 完整的編輯器功能,包括尋找/取代、巨集等

VS Code 等 GUI 編輯器會自動處理:gac 會插入 --wait,使程序在關閉編輯器分頁前一直阻塞。無需額外設定。


設定

執行 uvx gac init 以互動方式設定你的提供者,或設定環境變數:

想要在之後僅更新提供者或模型且不修改語言?使用 uvx gac model,它會跳過語言相關的提示。

檢視 .gac.env.example 了解所有可用選項。

**想要其他語言的提交訊息?**執行 uvx gac language 從 25+ 種語言中選擇,包括 Español、Français、日本語 等。

**想要自訂提交訊息風格?**請參閱 docs/CUSTOM_SYSTEM_PROMPTS.md 了解編寫自訂系統提示的指導。


獲取協助