lab0-c icon indicating copy to clipboard operation
lab0-c copied to clipboard

Allow generating commit message via ollama

Open jserv opened this issue 9 months ago • 1 comments

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

jserv avatar Mar 06 '25 10:03 jserv

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]

yenslife avatar Mar 12 '25 18:03 yenslife