From 8321dbe43b20880793cbb5dd866e96a08c3f561c Mon Sep 17 00:00:00 2001 From: lemyx Date: Sun, 29 Dec 2024 10:50:47 +0800 Subject: [PATCH] Integrate LLM for enhancement 1. Integrate gptel for general communications 2. Integrate aider.el for coding assistant 3. Adopt deepseek as the backend --- .gitignore | 3 ++- .gitmodules | 6 ++++++ init.el | 1 + install/install-macos.sh | 3 +++ install/install-ubuntu.sh | 5 +++++ lisp/init-ai.el | 16 ++++++++-------- lisp/init-beancount.el | 2 +- lisp/init-dired.el | 6 +++--- lisp/init-prog.el | 4 ++++ lisp/init-window.el | 13 +++++++++---- site-lisp/aider | 1 + site-lisp/auto-save | 1 + site-lisp/beancount-mode | 1 + site-lisp/lsp-bridge | 1 + site-lisp/one-key | 1 + 15 files changed, 47 insertions(+), 17 deletions(-) create mode 160000 site-lisp/aider create mode 160000 site-lisp/auto-save create mode 160000 site-lisp/beancount-mode create mode 160000 site-lisp/lsp-bridge create mode 160000 site-lisp/one-key diff --git a/.gitignore b/.gitignore index 82ece90..350b76c 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,5 @@ transient/ projects eln-cache/ .cache/ -history \ No newline at end of file +history +.aider* diff --git a/.gitmodules b/.gitmodules index 75f5f82..ff66264 100644 --- a/.gitmodules +++ b/.gitmodules @@ -13,3 +13,9 @@ [submodule "site-lisp/vertico-posframe"] path = site-lisp/vertico-posframe url = https://github.com/tumashu/vertico-posframe.git +[submodule "site-lisp/aider"] + path = site-lisp/aider + url = https://github.com/tninja/aider.el +[submodule "site-lisp/beancount-mode"] + path = site-lisp/beancount-mode + url = https://github.com/beancount/beancount-mode.git diff --git a/init.el b/init.el index e862f68..ba10a68 100644 --- a/init.el +++ b/init.el @@ -17,6 +17,7 @@ (require 'init-treemacs) (require 'init-save) (require 'init-window) +(require 'init-ai) ;; Edit (require 'init-completion) diff --git a/install/install-macos.sh b/install/install-macos.sh index 965da98..f59f520 100644 --- a/install/install-macos.sh +++ b/install/install-macos.sh @@ -33,5 +33,8 @@ npm install -g pyright pip3 install ruff-lsp --break-system-packages brew install texlab +# aider +brew install aider + # fetch submodules git submodule update --init diff --git a/install/install-ubuntu.sh b/install/install-ubuntu.sh index e8fdedd..6b6d828 100644 --- a/install/install-ubuntu.sh +++ b/install/install-ubuntu.sh @@ -36,5 +36,10 @@ cargo build --release # vterm sudo apt install cmake libtool-bin libvterm-dev +# aider +export PATH="$PATH:$HOME/.local/bin" +python -m pip install aider-install --break-system-packages +aider-install + # fetch submodules git submodule update --init diff --git a/lisp/init-ai.el b/lisp/init-ai.el index 8c793b1..c2d1f6f 100644 --- a/lisp/init-ai.el +++ b/lisp/init-ai.el @@ -5,7 +5,7 @@ (defun deepseek-api-key-path () "Return the path to the DeepSeek API key file." - (expand-file-name "~/.config/llm/deepseek/api_key.txt")) + (expand-file-name "~/.dotfiles/llm/deepseek/api_key.txt")) (defun read-llm-api-key (path) "Read and return the API key from the specified file path." @@ -18,14 +18,14 @@ (use-package gptel :ensure t :config - (setq gptel-model "deepseek-chat") + (setq gptel-model 'deepseek-chat) (setq gptel-default-mode 'org-mode) - (gptel-set-openai "DeepSeek" - :host "api.deepseek.com" - :endpoint "/chat/completions" - :stream t - :key (read-llm-api-key (deepseek-api-key-path)) - :models '("deepseek-chat" "deepseek-coder"))) + (setq gptel-backend (gptel-make-openai "DeepSeek" + :host "api.deepseek.com" + :endpoint "/chat/completions" + :stream t + :key (read-llm-api-key (deepseek-api-key-path)) + :models '("deepseek-chat" "deepseek-coder")))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; aider.el diff --git a/lisp/init-beancount.el b/lisp/init-beancount.el index a6d750a..2acc568 100644 --- a/lisp/init-beancount.el +++ b/lisp/init-beancount.el @@ -3,7 +3,7 @@ ;;; Code: -(add-to-list 'load-path "~/.emacs.d/site-lisp/beancount/") +(add-to-list 'load-path "~/.emacs.d/site-lisp/beancount-mode/") (require 'beancount) (add-to-list 'auto-mode-alist '("\\.bean\\'" . beancount-mode)) (add-hook 'beancount-mode-hook diff --git a/lisp/init-dired.el b/lisp/init-dired.el index 2a305d9..e3215c0 100644 --- a/lisp/init-dired.el +++ b/lisp/init-dired.el @@ -24,9 +24,9 @@ (setq dired-use-ls-dired t) (setq dired-listing-switches "-al --group-directories-first") -(use-package nerd-icons-dired - :hook - (dired-mode . nerd-icons-dired-mode)) +;; (use-package nerd-icons-dired +;; :hook +;; (dired-mode . nerd-icons-dired-mode)) (provide 'init-dired) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/lisp/init-prog.el b/lisp/init-prog.el index c42b702..85a3b6d 100644 --- a/lisp/init-prog.el +++ b/lisp/init-prog.el @@ -3,6 +3,10 @@ ;;; Code: +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; auto-revert +(global-auto-revert-mode 1) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Fluently Edit Large Files ;; https://emacs-china.org/t/topic/25811/6 diff --git a/lisp/init-window.el b/lisp/init-window.el index c1e3c47..a4e0607 100644 --- a/lisp/init-window.el +++ b/lisp/init-window.el @@ -17,6 +17,8 @@ ("\\*corfu.*\\*" :regexp t :ignore t) ("*eshell*" :select t :size 0.4 :align t :popup t) ("*vterm*" :select t :size 0.4 :align t :popup t) + ("*DeepSeek*" :select t :size 0.4 :align t :popup t) + (comint-mode :select t :size 0.4 :align t :popup t) (helpful-mode :select t :size 0.6 :align right :popup t) ("*Messages*" :select t :size 0.4 :align t :popup t) ("*Calendar*" :select t :size 0.3 :align t :popup t) @@ -34,15 +36,18 @@ ) :init (setq popper-reference-buffers - '("\\*Messages\\*" + '( + "\\*DeepSeek\\*" + comint-mode + "\\*Messages\\*" "\\*Async Shell Command\\*" help-mode helpful-mode occur-mode pass-view-mode - "^\\*eshell.*\\*$" eshell-mode ;; eshell as a popup - "^\\*shell.*\\*$" shell-mode ;; shell as a popup - "^\\*vterm*\\*$" vterm-mode ;; vterm as a popup + "^\\*eshell.*\\*$" eshell-mode + "^\\*shell.*\\*$" shell-mode + "^\\*vterm*\\*$" vterm-mode ("\\*corfu\\*" . hide) (compilation-mode . hide) ;; derived from `fundamental-mode' and fewer than 10 lines will be considered a popup diff --git a/site-lisp/aider b/site-lisp/aider new file mode 160000 index 0000000..a7f2153 --- /dev/null +++ b/site-lisp/aider @@ -0,0 +1 @@ +Subproject commit a7f21534522a725259cf2efd46837d7bd88ec231 diff --git a/site-lisp/auto-save b/site-lisp/auto-save new file mode 160000 index 0000000..0fb3c0f --- /dev/null +++ b/site-lisp/auto-save @@ -0,0 +1 @@ +Subproject commit 0fb3c0f38191c0e74f00bae6adaa342de3750e83 diff --git a/site-lisp/beancount-mode b/site-lisp/beancount-mode new file mode 160000 index 0000000..452621f --- /dev/null +++ b/site-lisp/beancount-mode @@ -0,0 +1 @@ +Subproject commit 452621fa1f918d8a105e09d3bd82b2deb45b7146 diff --git a/site-lisp/lsp-bridge b/site-lisp/lsp-bridge new file mode 160000 index 0000000..402e65f --- /dev/null +++ b/site-lisp/lsp-bridge @@ -0,0 +1 @@ +Subproject commit 402e65f372bb4268c0cd0514a12f0b0e9649c4af diff --git a/site-lisp/one-key b/site-lisp/one-key new file mode 160000 index 0000000..b268d8e --- /dev/null +++ b/site-lisp/one-key @@ -0,0 +1 @@ +Subproject commit b268d8e8591f273a2b2b52da10760b610c8a0bce