Generar un mensaje de confirmación de git se ha convertido rápidamente en una aplicación GenAI clásica para desarrolladores.
Para ayudar con esto, crearemos un script GenAIScript.
El script actúa como un script de automatización normal de Node.js y utiliza runPrompt
para emitir llamadas al LLM y pedirle al usuario que confirme el texto generado.
El script comienza importando las funciones necesarias desde @inquirer/prompts:
import { select, input, confirm } from "@inquirer/prompts"
Estas funciones se utilizarán para interactuar con el usuario, pidiéndole que confirme acciones o ingrese datos.
A continuación, verificamos si hay cambios por etapas en el repositorio de Git:
let { stdout } = await host.exec("git", ["diff", "--cached"])
Si no se realizan cambios, le preguntamos al usuario si desea realizar todos los cambios. Si el usuario lo confirma, preparamos todos los cambios. De lo contrario, nos rescataremos.
const stage = await confirm({ message: "No staged changes. Stage all changes?", default: true, }) if (stage) { await host.exec("git", ["add", "."]) stdout = (await host.exec("git", ["diff", "--cached"])).stdout } if (!stdout) cancel("no staged changes")
Generamos un mensaje de confirmación inicial utilizando los cambios por etapas:
message = ( await runPrompt( (_) => { _.def("GIT_DIFF", stdout, { maxTokens: 20000 }) _.$`GIT_DIFF is a diff of all staged changes, coming from the command: \`\`\` git diff --cached \`\`\` Please generate a concise, one-line commit message for these changes. - do NOT add quotes` }, { cache: false, temperature: 0.8 } ) ).text
La configuración del mensaje anterior indica que el mensaje debe ser conciso,
relacionado con la salida "git diff --cached" y no debe incluir comillas.
El usuario elige cómo proceder con el mensaje generado:
choice = await select({ message, choices: [ { name: "commit", value: "commit", description: "accept message and commit" }, ... ], })
Se ofrecen opciones para editar o regenerar el mensaje. Si el usuario elige editar el mensaje, le pedimos que ingrese un mensaje nuevo:
if (choice === "edit") { message = await input({ message: "Edit commit message", required: true, }) choice = "commit" }
Si el usuario elige confirmar el mensaje, nosotros confirmamos los cambios:
if (choice === "commit" && message) { console.log((await host.exec("git", ["commit", "-m", message])).stdout) }
Puedes ejecutar este script usando la CLI.
genaiscript run gcm
Dado que utiliza el paquete @inquirer/prompts, primero deberá instalar este paquete:
npm install --save-dev @inquirer/prompts
Si estás usando npx,
npx -p @inquirer/prompts genaiscript -p genaiscript -- genaiscript run gcm
Este comando ejecutará el script y lo guiará a través del proceso de generación y confirmación de un mensaje de Git usando IA, lo que hará que sus confirmaciones sean más informativas y consistentes.
Puede incluir este comando en un archivo gcm.sh o en la sección de secuencia de comandos de su paquete en package.json:
{ "devDependencies": { "@inquirer/prompts": "...", "genaiscript": "..." }, "scripts": { "gcm": "genaiscript run gcm" } }
Luego puedes ejecutar el script usando:
npm run gcm
Este script se inspiró en el generador de mensajes de confirmación de Karpathy.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3