Allow generating commit message via ollama
Use an large language model (via ollama) to generate commit message that match commit style by learning from previous commits.
Currently, qwen2.5-coder is used for commit message generation, code reasoning, and suggestions.
Reference: Using Large Language Models for Commit Message Generation: A Preliminary Study
The current architecture's repeated regeneration of style prompts results in slower performance. Why not adopt a fixed style prompt instead? For example, with clear, predefined instructions like a Linux commit style. Alternatively, we could generate the style prompt once and only regenerate it if the model changes (or any condition that could affect model performance).
Current Strategy
graph LR
OS_Start[Start] --"git log"--> OS_GenStylePrompt["Generate Style Prompt every commit"]
OS_GenStylePrompt --"Style prompt"--> OS_GenCommitMsg[Generate Commit Message]
OS_GenCommitMsg --"suggested commit message"--> OS_End[End]
Option 1: Fixed Style Prompt (only 1 inference time)
graph LR
FS_Start[Start] --"Fixed style prompt"--> FS_GenCommitMsg[Generate Commit Message]
FS_GenCommitMsg --"suggested commit message"--> FS_End[End]
Option 2: Generate Prompt Once
graph TD
GP_Start[Start] --> GP_CheckPrompt{"Check Style Prompt Exists (for current model)"}
GP_CheckPrompt -- "Style Prompt File Exists?" --> GP_LoadPrompt[Load Stored Style Prompt]
GP_CheckPrompt -- "Style Prompt File Missing or difference model name" --> GP_GenStylePrompt[Generate Style Prompt]
GP_GenStylePrompt -- "Generated Style Prompt" --> GP_SavePrompt[Save Style Prompt]
GP_SavePrompt -- "Saved Style Prompt" --> GP_GenCommitMsg[Generate Commit Message]
GP_LoadPrompt -- "Loaded Style Prompt" --> GP_GenCommitMsg
GP_GenCommitMsg -- "suggested commit message" --> GP_End[End]