feat(opencode): add session tracking and update default model
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user