前言¶
在 DeepSeek Harness(dsh)裏走 opencode 或 opencode-go 模型時,若 Console Go 網關已要求會話頭,常見報錯是 400 MissingSessionID:請求缺少 x-opencode-session,網關無法把流量路由到持有該會話緩存的節點。pi 編碼代理在 provider 層會帶上該頭;dsh 經 @earendil-works/pi-ai 訪問同一路由時,庫側尚未實現該頭,因此問題往往只出現在 dsh 側。下面介紹社區插件 dsh-opencode-session(維護者 BrackRat,分類:聯網工具),在 dsh 進程內爲相關請求自動補全會話頭,恢復與 pi 側相近的行爲。
這是什麼¶
dsh-opencode-session 是 dsh 的兼容型插件 bundle:不改動磁盤上的憑證或配置文件,在內存裏通過 llm/stream 中間件包裝 pi-ai 的 Models 原型,對命中 opencode 路由的請求注入 x-opencode-session 與 x-opencode-client: dsh。包版本爲 0.1.0,許可證 MIT,要求 dsh >= 0.1.5-rc.1、Node >= 18。README 在 dsh 0.1.5-rc.1 與 @earendil-works/pi-ai 0.85.1 上做過驗證(含 opencode-go、openai-completions 協議)。
核心功能¶
- 消除 MissingSessionID:針對 opencode.ai 網關返回的
400及MissingSessionID類錯誤,在 dsh 發起的opencode/opencode-go(以及 base URL 託管在opencode.ai的模型)請求上補全x-opencode-session。 - 頭優先級:若你在 provider 或 model 上已配置
x-opencode-session,以你的配置爲準;插件僅在缺失時填充。 - 範圍可控:DeepSeek 官方、Anthropic、OpenAI 等其它 provider 不受影響。
- 進程內、可卸載:正常插件安裝進 profile;卸載後無殘留。每次啓動會重新安裝內存包裝,dsh 升級一般無需額外操作;若未來 pi-ai 自帶該頭,插件可視爲 no-op 並移除。
- 失敗安全:內部結構變化時插件記錄 warning 並退避,不阻斷請求。
安裝與啓用¶
從 GitHub 安裝(README 給出的當前可用方式):
dsh plugin --profile web add github:BrackRat/dsh-opencode-session
npm 發佈後可用:
dsh plugin --profile web add dsh-opencode-session
本地目錄或 tarball:
dsh plugin --profile web add /path/to/dsh-opencode
dsh plugin --profile web add ./dsh-opencode-session-0.1.0.tgz
包聲明瞭 dsh.bundle,dsh plugin add 會把 bundle 寫入 dsh.profile.bundles,通常不必手改 profile。安裝完成後重啓提供 UI 的 dsh 進程(例如 dsh web)。
典型用法與驗證¶
確認插件已進組合配置:
dsh --profile web --dump-config | grep -A 2 opencode-session-header
輸出中應能看到插件條目。隨後在 Web 裏對 opencode-go 模型發起對話,應能正常回復,而不是再出現 MissingSessionID。
卸載:
dsh plugin --profile web remove dsh-opencode-session
適用場景與注意¶
- 適合:在 dsh
webprofile 下使用 opencode / opencode-go,且被網關會話頭要求擋住的開發者。 - 權限與安全:插件與當前 dsh 進程同權,僅在內存中掛鉤模型流;安裝前建議閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的合規要求。
- 生態說明:DSH 社區插件目錄(如 SkillHub 條目)爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;本文事實以倉庫 README 爲準。
結尾¶
dsh-opencode-session 用一條安裝命令、進程內中間件的方式,補上 dsh 經 pi-ai 訪問 opencode.ai 時缺的 x-opencode-session,針對 400 MissingSessionID 場景可直接試用。目錄頁:https://www.skillhub.cn/plugins/BrackRat/dsh-opencode-session;源碼與 FAQ:https://github.com/BrackRat/dsh-opencode-session。