讓AI 幫你生成 git 提交信息

語言: CN / TW / HK

theme: condensed-night-purple highlight: atelier-cave-light


在協同開發的項目中,我們肯定避免不了使用git提交代碼,所以經常會看到了一些描述不清的提交信息。當遇到種情況時,我們也不必為此責怪開發人員,因為我們確實很難記住你在 git 提交時剛剛做了什麼。

GitHub  Nutlope  aicommits

一個使用 AI 幫您編寫 git 提交消息的 CLI

什麼是 Nultope/aicommits?

Aicommits 是一個 CLI(腳手架),它可以使用 AI 為你編寫 git 提交消息。

未知的推文媒體內容

它是如何工作的?

本篇文章本意是着重介紹代碼的 AI 部分,但一打開 GitHub,我驚奇地看到了 TABS、jk的使用。這就很有意思,因為 CLI 工具cleye這個工具也是用到了TABS、jk,它給我留下了深刻的印象。我以前也搭建過一些 CLI,而這個 cleye 是在命令行上構建 aicommits 交互的首選工具。這是它很優秀的地方。

如果您想查看 CLI 實現,可以快速閲讀src/cli.ts

``` // src/cli.ts

const request = https.request({ port: 443, hostname: 'api.openai.com', path: '/v1/completions', method: 'POST', headers: { 'Content-Type': 'application/json', 'Content-Length': postContent.length, Authorization: Bearer ${apiKey}, },

... ```

到目前為止,我還沒有用 OpenAI 構建任何東西,但上面的示例很好的説明了人們應該去如何配置它。

現在查看代碼src/utils/openai.ts,我們可以看到正在調用 OpenAI 並使用/v1/completions路徑。根據 README的説明,這不是 ChatGPT 補全,而是常規 GTP-3 文本補全。

在 REST 調用之後,我們會先執行響應清理和錯誤檢查器。這是不能繞過的步驟的,因為 OpenAI 經常會遇見停機和服務器負載。

``` // src/utils/openai.ts

if (response.statusCode === 500) { errorMessage += '; 查看 API 狀態: https://status.openai.com'; } ```

最後,看一下createCompletion函數,這才是真正實現功能的地方。

我在下面留下了關於每一行在做什麼的解釋

``` // src/utils/openai.ts

const completion = await createCompletion(apiKey, { model, // text-davinci-003 - 用於更長的輸出和一致的指令 prompt, // nutlope提供的promptTemplate temperature: 0.7, // 數字越大,輸出越隨機 top_p: 1, // 類似温度但結果不同 frequency_penalty: 0, // 降低模型重複同一行的可能性 presence_penalty: 0, // 增加模型談論新話題的可能性 max_tokens: 200, // 這將要花你多少錢? stream: false, // 部分消息發送關閉 n: completions, // 為每個輸入消息生成多少個聊天完成選項 }); ```

還有很多我想深入挖掘,但我把剩下的留給你們看。我建議在本地安裝 aicommits 進行試用。前提是你已經註冊了 OpenAI 已經添加了你的令牌。

aicommits 在命令行上的演示

本文正在參加「金石計劃」