Membunuh orang lumpuh dilakukan dengan AI ??
Semua penerapan di repo ini dibuat oleh OpenCommit — lihat penerapannya untuk mengetahui cara kerja OpenCommit. Emoji dan deskripsi komit yang panjang dapat dikonfigurasi, pada dasarnya semuanya bisa dikonfigurasi.
Anda dapat menggunakan OpenCommit hanya dengan menjalankannya melalui CLI seperti ini oco
. 2 detik dan perubahan bertahap Anda dilakukan dengan pesan yang bermakna.
Instal OpenCommit secara global untuk digunakan di repositori mana pun:
npm install -g opencommit
Dapatkan kunci API Anda dari OpenAI atau penyedia LLM lain yang didukung (kami mendukung semuanya). Pastikan Anda menambahkan detail pembayaran OpenAI ke akun Anda agar API berfungsi.
Setel kunci ke konfigurasi OpenCommit:
oco config set OCO_API_KEY= < your_api_key >
Kunci API Anda disimpan secara lokal di file konfigurasi ~/.opencommit
.
Anda dapat memanggil OpenCommit dengan perintah oco
untuk menghasilkan pesan komit untuk perubahan bertahap Anda:
git add < files... >
oco
Menjalankan git add
adalah opsional, oco
akan melakukannya untuk Anda.
Anda juga dapat menjalankannya dengan model lokal melalui ollama:
ollama run mistral
(lakukan ini hanya sekali, untuk menarik model)git add < files... >
oco config set OCO_AI_PROVIDER= ' ollama ' OCO_MODEL= ' llama3:8b '
Model defaultnya adalah mistral
.
Jika Anda memiliki ollama yang diatur di docker/ di komputer lain dengan GPU (bukan secara lokal), Anda dapat mengubah url titik akhir default.
Anda dapat melakukannya dengan mengatur variabel lingkungan OCO_API_URL
sebagai berikut:
oco config set OCO_API_URL= ' http://192.168.1.10:11434/api/chat '
di mana 192.168.1.10 adalah contoh URL titik akhir, tempat Anda menyiapkan ollama.
Ada beberapa flag opsional yang dapat digunakan dengan perintah oco
:
Tautan ke spesifikasi GitMoji: https://gitmoji.dev/
Tanda ini hanya dapat digunakan jika item konfigurasi OCO_EMOJI
disetel ke true
. Bendera ini memungkinkan pengguna untuk menggunakan semua emoji dalam spesifikasi GitMoji, Secara default, spesifikasi lengkap GitMoji disetel ke false
, yang hanya mencakup 10 emoji (?✅♻️⬆️?).
Hal ini disebabkan adanya batasan jumlah token yang dikirim dalam setiap permintaan. Namun, jika Anda ingin menggunakan spesifikasi lengkap GitMoji, Anda dapat menggunakan flag --fgm
.
oco --fgm
Tanda ini memungkinkan pengguna untuk melakukan perubahan secara otomatis tanpa harus mengonfirmasi pesan penerapan secara manual. Ini berguna bagi pengguna yang ingin menyederhanakan proses penerapan dan menghindari langkah-langkah tambahan. Untuk menggunakan tanda ini, Anda dapat menjalankan perintah berikut:
oco --yes
Buat file .env
dan tambahkan variabel konfigurasi OpenCommit di sana seperti ini:
...
OCO_AI_PROVIDER = <openai (default), anthropic, azure, ollama, gemini, flowise>
OCO_API_KEY = <your OpenAI API token> // or other LLM provider API token
OCO_API_URL = <may be used to set proxy path to OpenAI api>
OCO_TOKENS_MAX_INPUT = <max model token limit (default: 4096)>
OCO_TOKENS_MAX_OUTPUT = <max response tokens (default: 500)>
OCO_DESCRIPTION = <postface a message with ~3 sentences description of the changes>
OCO_EMOJI = <boolean, add GitMoji>
OCO_MODEL = <either 'gpt-4o', 'gpt-4', 'gpt-4-turbo', 'gpt-3.5-turbo' (default), 'gpt-3.5-turbo-0125', 'gpt-4-1106-preview', 'gpt-4-turbo-preview' or 'gpt-4-0125-preview' or any Anthropic or Ollama model or any string basically, but it should be a valid model name>
OCO_LANGUAGE = <locale, scroll to the bottom to see options>
OCO_MESSAGE_TEMPLATE_PLACEHOLDER = <message template placeholder, default: ' $msg '>
OCO_PROMPT_MODULE = <either conventional-commit or @commitlint, default: conventional-commit>
OCO_ONE_LINE_COMMIT = <one line commit message, default: false>
Konfigurasi global sama dengan konfigurasi lokal, tetapi disimpan dalam file konfigurasi global ~/.opencommit
dan diatur dengan perintah oco config set
, misalnya oco config set OCO_MODEL=gpt-4o
.
Konfigurasi lokal masih memiliki prioritas lebih dari konfigurasi Global, tetapi Anda dapat mengatur OCO_MODEL
dan OCO_LOCALE
secara global dan mengatur konfigurasi lokal untuk OCO_EMOJI
dan OCO_DESCRIPTION
per repo yang lebih nyaman.
Cukup atur salah satu variabel di atas seperti ini:
oco config set OCO_MODEL=gpt-4o-mini
Konfigurasikan GitMoji untuk mengawali pesan.
oco config set OCO_EMOJI=true
Untuk menghapus emoji kata pengantar:
oco config set OCO_EMOJI=false
Opsi konfigurasi lainnya berperilaku sama.
Anda dapat mengatur konfigurasi OCO_WHY
ke true
agar OpenCommit mengeluarkan deskripsi singkat MENGAPA perubahan dilakukan setelah pesan komit. Standarnya false
.
Untuk membuat kinerja ini akurat, kita harus menyimpan 'apa yang dilakukan file' dalam semacam indeks atau penyematan dan melakukan pencarian (agak RAG) untuk pesan git commit yang akurat. Jika Anda ingin membuat komentar ini pada tiket #398 ini dan mari kita mulai dari sana bersama-sama.
oco config set OCO_WHY=true
Secara default, OpenCommit menggunakan model gpt-4o-mini
.
Anda dapat beralih ke gpt-4o yang kinerjanya lebih baik, tetapi biayanya lebih mahal?
oco config set OCO_MODEL=gpt-4o
atau sebagai pilihan yang lebih murah:
oco config set OCO_MODEL=gpt-3.5-turbo
Secara default OpenCommit menggunakan OpenAI.
Anda dapat beralih ke Azure OpenAI Service atau Flowise atau Ollama.
oco config set OCO_AI_PROVIDER=azure OCO_API_KEY= < your_azure_api_key > OCO_API_URL= < your_azure_endpoint >
oco config set OCO_AI_PROVIDER=flowise OCO_API_KEY= < your_flowise_api_key > OCO_API_URL= < your_flowise_endpoint >
oco config set OCO_AI_PROVIDER=ollama OCO_API_KEY= < your_ollama_api_key > OCO_API_URL= < your_ollama_endpoint >
Untuk menentukan secara global bahasa yang digunakan untuk menghasilkan pesan penerapan:
# de, German, Deutsch
oco config set OCO_LANGUAGE=de
oco config set OCO_LANGUAGE=German
oco config set OCO_LANGUAGE=Deutsch
# fr, French, française
oco config set OCO_LANGUAGE=fr
oco config set OCO_LANGUAGE=French
oco config set OCO_LANGUAGE=française
Pengaturan bahasa default adalah Bahasa Inggris. Semua bahasa yang tersedia saat ini terdaftar di folder i18n
Prompt untuk mendorong ke git diaktifkan secara default tetapi jika Anda ingin mematikannya cukup gunakan:
oco config set OCO_GITPUSH=false
dan itu akan keluar segera setelah komit dikonfirmasi tanpa menanyakan apakah Anda ingin melakukan push ke jarak jauh.
@commitlint
OpenCommit memungkinkan Anda memilih modul prompt yang digunakan untuk menghasilkan pesan komit. Secara default, OpenCommit menggunakan generator pesan komit konvensionalnya. Namun, Anda dapat beralih menggunakan modul prompt @commitlint
jika Anda mau. Opsi ini memungkinkan Anda menghasilkan pesan komit sehubungan dengan konfigurasi lokal.
Anda dapat mengatur opsi ini dengan menjalankan perintah berikut:
oco config set OCO_PROMPT_MODULE= < module >
Ganti <module>
dengan conventional-commit
atau @commitlint
.
Untuk beralih menggunakan modul prompt '@commitlint
, jalankan:
oco config set OCO_PROMPT_MODULE=@commitlint
Untuk beralih kembali ke generator pesan komit konvensional default, jalankan:
oco config set OCO_PROMPT_MODULE=conventional-commit
@commitlint
Integrasi antara @commitlint
dan OpenCommit dilakukan secara otomatis saat pertama kali OpenCommit dijalankan dengan OCO_PROMPT_MODULE
disetel ke @commitlint
. Namun, jika Anda perlu menyetel atau menyetel ulang konfigurasi secara paksa untuk @commitlint
, Anda dapat menjalankan perintah berikut:
oco commitlint force
Untuk melihat konfigurasi yang dihasilkan untuk @commitlint
, Anda dapat menggunakan perintah ini:
oco commitlint get
Ini memungkinkan Anda memastikan bahwa konfigurasi telah diatur sesuai keinginan.
Selain itu, integrasi membuat file bernama .opencommit-commitlint
yang berisi perintah yang digunakan untuk konfigurasi @commitlint
lokal. Anda dapat memodifikasi file ini untuk menyempurnakan contoh pesan komit yang dihasilkan oleh OpenAI. Ini memberi Anda fleksibilitas untuk melakukan penyesuaian berdasarkan preferensi atau pedoman proyek Anda.
OpenCommit menghasilkan file bernama .opencommit-commitlint
di direktori proyek Anda yang berisi perintah yang digunakan untuk konfigurasi @commitlint
lokal. Anda dapat memodifikasi file ini untuk menyempurnakan contoh pesan komit yang dihasilkan oleh OpenAI. Jika konfigurasi @commitlint
lokal berubah, file ini akan diperbarui saat OpenCommit dijalankan lagi.
Hal ini memberi Anda kontrol lebih besar atas pesan penerapan yang dihasilkan, sehingga memungkinkan penyesuaian yang selaras dengan konvensi proyek Anda.
Perintah opencommit
atau oco
dapat digunakan sebagai pengganti perintah git commit -m "${generatedMessage}"
. Artinya, setiap flag reguler yang digunakan dengan perintah git commit
juga akan diterapkan saat menggunakan opencommit
atau oco
.
oco --no-verify
diterjemahkan ke:
git commit -m " ${generatedMessage} " --no-verify
Untuk memasukkan pesan ke dalam pesan yang dihasilkan, Anda dapat memanfaatkan fungsi template, misalnya:
oco ' #205: $msg’
opencommit memeriksa placeholder dalam parameter, memungkinkan Anda menambahkan informasi tambahan sebelum dan sesudah placeholder, seperti Issue atau Pull Request yang relevan. Demikian pula, Anda memiliki opsi untuk menyesuaikan item konfigurasi OCO_MESSAGE_TEMPLATE_PLACEHOLDER, misalnya, menyederhanakannya menjadi $m!"
Fitur OCO_MESSAGE_TEMPLATE_PLACEHOLDER
di alat opencommit
memungkinkan pengguna untuk menyematkan pesan khusus dalam pesan komit yang dihasilkan menggunakan fungsi templat. Konfigurasi ini dirancang untuk meningkatkan fleksibilitas dan kemampuan penyesuaian pesan penerapan, sehingga memudahkan pengguna untuk memasukkan informasi yang relevan langsung ke dalam penerapannya.
Dalam basis kode kami, implementasi fitur ini dapat ditemukan di segmen berikut:
commitMessage = messageTemplate . replace (
config . OCO_MESSAGE_TEMPLATE_PLACEHOLDER ,
commitMessage
) ;
Baris ini bertanggung jawab untuk mengganti placeholder di messageTemplate
dengan commitMessage
yang sebenarnya.
Misalnya, dengan menggunakan perintah oco '$msg #205'
, pengguna dapat memanfaatkan fitur ini. Kode yang disediakan mewakili mekanisme backend dari perintah tersebut, memastikan bahwa placeholder diganti dengan pesan penerapan yang sesuai.
Setelah pengguna membuat pesan komit yang diinginkan, mereka dapat melanjutkan untuk melakukan komit menggunakan pesan yang dihasilkan. Dengan memahami potensi penuh fitur dan detail penerapannya, pengguna dapat dengan percaya diri menggunakan pesan yang dihasilkan untuk komitmen mereka.
Anda dapat menghapus file agar tidak dikirim ke OpenAI dengan membuat file .opencommitignore
. Misalnya:
path/to/large-asset.zip
**/*.jpg
Ini membantu mencegah opencommit mengunggah artefak dan file besar.
Secara default, opencommit mengabaikan file yang cocok: *-lock.*
dan *.lock
Anda dapat mengatur OpenCommit sebagai kait Git prepare-commit-msg
. Hook terintegrasi dengan Kontrol Sumber IDE Anda dan memungkinkan Anda mengedit pesan sebelum melakukan.
Untuk memasang pengait:
oco hook set
Untuk melepas pengait:
oco hook unset
Untuk menggunakan pengait:
git add < files... >
git commit
Atau ikuti proses fitur Kontrol Sumber IDE Anda, ketika memanggil perintah git commit
— OpenCommit akan berintegrasi ke dalam alur.
OpenCommit sekarang tersedia sebagai Tindakan GitHub yang secara otomatis meningkatkan semua pesan penerapan baru saat Anda melakukan push ke jarak jauh!
Ini bagus jika Anda ingin memastikan semua komitmen di semua cabang repositori Anda bermakna dan tidak timpang seperti fix1
atau done2
.
Buat file .github/workflows/opencommit.yml
dengan isi di bawah ini:
name : ' OpenCommit Action '
on :
push :
# this list of branches is often enough,
# but you may still ignore other public branches
branches-ignore : [main master dev development release]
jobs :
opencommit :
timeout-minutes : 10
name : OpenCommit
runs-on : ubuntu-latest
permissions : write-all
steps :
- name : Setup Node.js Environment
uses : actions/setup-node@v2
with :
node-version : ' 16 '
- uses : actions/checkout@v3
with :
fetch-depth : 0
- uses : di-sukharev/[email protected]
with :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
env :
# set openAI api key in repo actions secrets,
# for openAI keys go to: https://platform.openai.com/account/api-keys
# for repo secret go to: <your_repo_url>/settings/secrets/actions
OCO_API_KEY : ${{ secrets.OCO_API_KEY }}
# customization
OCO_TOKENS_MAX_INPUT : 4096
OCO_TOKENS_MAX_OUTPUT : 500
OCO_OPENAI_BASE_PATH : ' '
OCO_DESCRIPTION : false
OCO_EMOJI : false
OCO_MODEL : gpt-4o
OCO_LANGUAGE : en
OCO_PROMPT_MODULE : conventional-commit
Hanya itu saja. Sekarang ketika Anda mendorong ke cabang mana pun di repo Anda — semua komitmen BARU ditingkatkan oleh AI Anda yang tidak pernah lelah.
Pastikan Anda mengecualikan cabang kolaborasi publik ( main
, dev
, etc
) di branches-ignore
, sehingga OpenCommit tidak melakukan rebase komit di sana sambil memperbaiki pesannya.
Rebase interaktif ( rebase -i
) mengubah SHA komit, sehingga riwayat komit di jarak jauh menjadi berbeda dari riwayat cabang lokal Anda. Ini tidak masalah jika Anda bekerja di cabang sendirian, namun mungkin merepotkan bagi kolaborator lain.
Anda membayar sendiri permintaan Anda ke OpenAI API.
OpenCommit menyimpan kunci Anda secara lokal.
OpenCommit secara default menggunakan model 3.5-turbo, tidak boleh melebihi $0.10 per hari kerja biasa.
Anda dapat beralih ke gpt-4, itu lebih baik, tetapi lebih mahal.