الإكمال التلقائي باستخدام GPT، باستخدام البيانات من سجل أوامر atuin كموجه إدخال. يستخدم الردود المتدفقة للحصول على الرد الأول بسرعة كبيرة. يتم تجميع الملف README في دقائق، وسأقوم بإصلاحه قريبًا.
يجب أن يكون pip install --user tiktoken openai
كافيًا، أو يمكنك إجراء venv لهم وتوجيه تكوينات الصدفة إلى Python الصحيح.
fzf لاختيار النتيجة الصحيحة.
أضف هذا إلى config.nu:
{
name: complete_with_gtp
modifier: CONTROL
keycode: Char_o
mode: [emacs vi_normal vi_insert]
event:[
{ send: executehostcommand,
cmd: "commandline -r (python /path/to/completer.py (commandline) | fzf --track --height 8)"
}
{ send: Enter }
]
}
إلى config.fish:
function gpt_completion
commandline (python /path/to/completer.py (commandline) | fzf --track --height 8)
end
bind ck "gpt_completion"
--atuin
: موقع قاعدة بيانات تاريخ atuin
--dunst
: استخدم dunstify لإعلامك بما يحدث (تصحيح الأخطاء في الغالب)
--model
: gpt-3.5-turbo أو gpt-4. يبدو GPT-4 أبطأ بكثير بالنسبة لي لهذا الاستخدام.
--wezterm
: إلحاق محتوى الشاشة من Wezterm
يؤدي هذا إلى إنشاء عدد قليل من الاستعلامات من قاعدة بيانات atuin بحيث يمكن لعدد قليل من الفهارس تسريعها كثيرًا:
sqlite3 ~/.local/share/atuin/history.db
CREATE INDEX idx_history_cwd on history(cwd);
CREATE INDEX idx_history_session on history(session);
إذا كنت تستخدم Wezterm، فيمكنك أيضًا إضافة محتوى الشاشة الطرفية الحالية إلى موجه GPT، وهو ما قد يكون مفيدًا إذا كانت هناك بعض رسائل الخطأ التي قد تساعد في إنشاء سطر الأوامر الصحيح. في هذه الحالة أضف -w لسطر الأوامر Completer.py.
تم التعليق على Kitty get-text في الكود لأنني لم أتمكن من تشغيله الآن، وسأصلحه قريبًا أو أخبرني إذا وجدت طريقة.
تم نشر هذا على عجل عندما وصل Atuin إلى الصفحة الأولى لـ HN. الكود فظيع، هناك مجموعة من الميزات نصف الجاهزة التي تم التعليق عليها ولم أختبرها كثيرًا. قد يتطلب بعض الإصلاحات للعمل بشكل جيد في مكان آخر. سألقي نظرة في الأيام القادمة لتنظيفه.