Files
PMOCrazycoder/bin/jj-ai-commit.sh
Eric Coissac d6fb4e33e5 Refactor devcontainer and MCP tools for containerized development
Ajout et configuration d’un environnement de développement conteneurisé (devcontainer) avec support multi-langages (Go, Rust, Python), intégration d’outils LLM locaux/cloud (LM Studio, Claude Pro), et refonte des outils MCP : suppression du module sandbox, correction de la gestion des chemins projet dans jj.py, ajout d’une fonction jj_new_tool, et structuration du Makefile pour le build multiplateforme. Mise à jour des scripts (docker-entrypoint.sh, setup-devcontainer.sh), du README.md et de bin/jj-ai-commit.sh pour automatiser la génération de messages de commit à partir des résumés des fichiers modifiés.
2026-03-11 17:40:25 +01:00

49 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
LOCAL_LLM_API=${LOCAL_LLM_API:-http://host.docker.internal:1248/v1}
MODEL="${LLM_MODEL:-qwen3-coder}"
llm_query() {
local content="$1"
jq -n --arg content "$content" --arg model "$MODEL" \
'{"model": $model, "messages": [{"role": "user", "content": $content}]}' \
| curl -s -X POST \
-H "Content-Type: application/json" \
-d @- \
"$LOCAL_LLM_API/chat/completions" \
| jq -r '.choices[0].message.content'
}
# Get list of modified files
FILES=$(jj diff --summary | awk '{print $2}')
if [[ -z "$FILES" ]]; then
echo "No changes to commit." >&2
exit 1
fi
# Pass 1: summarize each file diff individually
SUMMARIES=""
while IFS= read -r file; do
FILE_DIFF=$(jj diff "$file" 2>/dev/null)
if [[ -z "$FILE_DIFF" ]]; then
continue
fi
PROMPT="Résume en 2-3 phrases les changements apportés dans ce diff pour le fichier '$file'. Sois concis et factuel.
$FILE_DIFF"
SUMMARY=$(llm_query "$PROMPT")
SUMMARIES="${SUMMARIES}### $file
$SUMMARY
"
done <<< "$FILES"
# Pass 2: generate commit message from summaries
COMMIT_PROMPT="À partir des résumés suivants de fichiers modifiés, génère un message de commit git.
Réponds UNIQUEMENT avec un objet JSON valide contenant \"title\" (string, max 72 chars, en anglais, style imperative) et \"message\" (string, détails en français). Pas de texte avant ou après le JSON.
$SUMMARIES"
llm_query "$COMMIT_PROMPT" | jq -r '.title + "\n\n" + .message'