From 0543f7b231d44f5b43c45186d06e834a5aebf3ec Mon Sep 17 00:00:00 2001 From: kj Date: Thu, 3 Sep 2026 11:49:42 -0300 Subject: [PATCH] feat(opencode): add session tracking and update default model --- configs/init-ai.el | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/configs/init-ai.el b/configs/init-ai.el index 6bcb994..0b9f54f 100644 --- a/configs/init-ai.el +++ b/configs/init-ai.el @@ -47,10 +47,35 @@ (json-parse-buffer :object-type 'alist)))) (alist-get 'key (alist-get 'opencode-go auth)))) + (defvar-local kj-opencode-session-id nil + "Stable OpenCode session id for this conversation buffer.") + + (defun kj-opencode-go-new-session-id () + "Generate a new stable-enough random id for x-opencode-session." + (md5 (format "opencode-go-%s-%s" (random) (float-time)))) + + (defun kj-opencode-go-session-id (info) + "Return a stable x-opencode-session id for the buffer in INFO." + (let ((buf (or (plist-get info :buffer) (current-buffer)))) + (if (buffer-live-p buf) + (with-current-buffer buf + (or kj-opencode-session-id + (setq-local kj-opencode-session-id + (kj-opencode-go-new-session-id)))) + (kj-opencode-go-new-session-id)))) + + (defun kj-opencode-go-header (info) + "Auth plus per-conversation session header for the OpenCode Go backends." + (append + (when-let* ((key (gptel--get-api-key))) + `(("Authorization" . ,(concat "Bearer " key)))) + `(("x-opencode-session" . ,(kj-opencode-go-session-id info))))) + (gptel-make-openai "OpenCode Go" :host "opencode.ai" :endpoint "/zen/go/v1/chat/completions" :key #'kj-opencode-go-key + :header #'kj-opencode-go-header :stream t :models '(minimax-m3 minimax-m2.7 minimax-m2.5 kimi-k3 kimi-k2.7-code kimi-k2.6 longcat-2.0 kimi-k2.5 @@ -67,6 +92,7 @@ :host "opencode.ai" :endpoint "/zen/v1/chat/completions" :key #'kj-opencode-go-key + :header #'kj-opencode-go-header :stream t :models '(big-pickle deepseek-v4-flash-free muse-spark-1.2-contributor-free mimo-v2.5-free hy3-free nemotron-3-ultra-free @@ -191,7 +217,7 @@ content do not break gptel-magit." :config (setq agent-shell-opencode-authentication (agent-shell-opencode-make-authentication :none t)) - (setq agent-shell-opencode-default-model-id "opencode-go/mimo-v2.5") + (setq agent-shell-opencode-default-model-id "opencode-go/qwen3.8-flash") ;; Header compacto (setq agent-shell-header-style 'text)