أصبح إنشاء رسالة التزام git بسرعة تطبيق GenAI كلاسيكيًا للمطورين.
للمساعدة في هذا، سنقوم بصياغة برنامج GenAIScript النصي.
يعمل البرنامج النصي كبرنامج نصي عادي لأتمتة Node.js ويستخدم runPrompt
لإصدار مكالمات إلى LLM ومطالبة المستخدم بتأكيد النص الذي تم إنشاؤه.
يبدأ البرنامج النصي باستيراد الوظائف الضرورية من @inquirer/prompts:
import { select, input, confirm } from "@inquirer/prompts"
سيتم استخدام هذه الوظائف للتفاعل مع المستخدم، ومطالبته بتأكيد الإجراءات أو إدخال البيانات.
بعد ذلك، نتحقق مما إذا كانت هناك أي تغييرات مرحلية في مستودع Git:
let { stdout } = await host.exec("git", ["diff", "--cached"])
إذا لم يتم تنفيذ أي تغييرات، فإننا نسأل المستخدم عما إذا كان يريد تنظيم جميع التغييرات. إذا أكد المستخدم، فإننا ننظم جميع التغييرات. وإلا فإننا ننقذ.
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")
نقوم بإنشاء رسالة التزام أولية باستخدام التغييرات المرحلية:
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
يشير التكوين الفوري أعلاه إلى أن الرسالة يجب أن تكون موجزة،
المتعلقة بمخرجات "git diff --cached"، ويجب ألا تتضمن علامات الاقتباس.
يختار المستخدم كيفية متابعة الرسالة التي تم إنشاؤها:
choice = await select({ message, choices: [ { name: "commit", value: "commit", description: "accept message and commit" }, ... ], })
تتوفر خيارات لتعديل الرسالة أو إعادة إنشائها. إذا اختار المستخدم تعديل الرسالة، فإننا نطلب منه إدخال رسالة جديدة:
if (choice === "edit") { message = await input({ message: "Edit commit message", required: true, }) choice = "commit" }
إذا اختار المستخدم تنفيذ الرسالة، فإننا نلتزم بالتغييرات:
if (choice === "commit" && message) { console.log((await host.exec("git", ["commit", "-m", message])).stdout) }
يمكنك تشغيل هذا البرنامج النصي باستخدام واجهة سطر الأوامر (CLI).
genaiscript run gcm
نظرًا لأنه يستخدم حزمة @inquirer/prompts، فستحتاج إلى تثبيت هذه الحزمة أولاً:
npm install --save-dev @inquirer/prompts
إذا كنت تستخدم npx،
npx -p @inquirer/prompts genaiscript -p genaiscript -- genaiscript run gcm
سيعمل هذا الأمر على تشغيل البرنامج النصي، وسيرشدك خلال عملية إنشاء رسالة Git وتنفيذها باستخدام الذكاء الاصطناعي، مما يجعل التزاماتك أكثر إفادة واتساقًا.
يمكنك تغليف هذا الأمر في ملف gcm.sh أو في قسم البرنامج النصي للحزمة في package.json:
{ "devDependencies": { "@inquirer/prompts": "...", "genaiscript": "..." }, "scripts": { "gcm": "genaiscript run gcm" } }
ثم يمكنك تشغيل البرنامج النصي باستخدام:
npm run gcm
هذا البرنامج النصي مستوحى من منشئ رسائل الالتزام الخاص بـ Karpathy.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3