feat(opencode): add session tracking and update default model
This commit is contained in:
@@ -47,10 +47,35 @@
|
|||||||
(json-parse-buffer :object-type 'alist))))
|
(json-parse-buffer :object-type 'alist))))
|
||||||
(alist-get 'key (alist-get 'opencode-go auth))))
|
(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"
|
(gptel-make-openai "OpenCode Go"
|
||||||
:host "opencode.ai"
|
:host "opencode.ai"
|
||||||
:endpoint "/zen/go/v1/chat/completions"
|
:endpoint "/zen/go/v1/chat/completions"
|
||||||
:key #'kj-opencode-go-key
|
:key #'kj-opencode-go-key
|
||||||
|
:header #'kj-opencode-go-header
|
||||||
:stream t
|
:stream t
|
||||||
:models '(minimax-m3 minimax-m2.7 minimax-m2.5
|
:models '(minimax-m3 minimax-m2.7 minimax-m2.5
|
||||||
kimi-k3 kimi-k2.7-code kimi-k2.6 longcat-2.0 kimi-k2.5
|
kimi-k3 kimi-k2.7-code kimi-k2.6 longcat-2.0 kimi-k2.5
|
||||||
@@ -67,6 +92,7 @@
|
|||||||
:host "opencode.ai"
|
:host "opencode.ai"
|
||||||
:endpoint "/zen/v1/chat/completions"
|
:endpoint "/zen/v1/chat/completions"
|
||||||
:key #'kj-opencode-go-key
|
:key #'kj-opencode-go-key
|
||||||
|
:header #'kj-opencode-go-header
|
||||||
:stream t
|
:stream t
|
||||||
:models '(big-pickle deepseek-v4-flash-free muse-spark-1.2-contributor-free
|
:models '(big-pickle deepseek-v4-flash-free muse-spark-1.2-contributor-free
|
||||||
mimo-v2.5-free hy3-free nemotron-3-ultra-free
|
mimo-v2.5-free hy3-free nemotron-3-ultra-free
|
||||||
@@ -191,7 +217,7 @@ content do not break gptel-magit."
|
|||||||
:config
|
:config
|
||||||
(setq agent-shell-opencode-authentication
|
(setq agent-shell-opencode-authentication
|
||||||
(agent-shell-opencode-make-authentication :none t))
|
(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
|
;; Header compacto
|
||||||
(setq agent-shell-header-style 'text)
|
(setq agent-shell-header-style 'text)
|
||||||
|
|||||||
Reference in New Issue
Block a user