dsh-plugin-opencode-local:在 DSH 裏用本機 OpenCode CLI 的全部模型

前言

DeepSeek Harness(DSH)通過插件擴展模型來源時,常見做法是接雲端 API 或 DSH 內置 provider。若你已經在本機安裝 OpenCode,並在 OpenCode 裏登錄了多家 provider,希望像 T3 Code 那樣——由本機 opencode serve 承接推理、模型列表與鑑權都走 OpenCode 自己的 CLI——社區裏原先缺少對應的 DSH 插件。dsh-plugin-opencode-local 由 MateenAhmed737 維護,在 DSH 中增加 OpenCode (local) 模型 provider,分類屬於模型推理。

這是什麼

該插件是 DSH 的 LLM provider 插件:每次對話請求都經由你機器上已安裝的 OpenCode 進程處理,不代替 OpenCode 讀取或轉發 auth.json 等憑證,也不向 opencode.ai 或其他主機發起模型流量;插件本身無安裝腳本、不下載額外資源。模型 ID 使用 OpenCode 的 provider/model 形式,涵蓋你在 OpenCode 中已登錄的各 provider 模型以及 OpenCode 自有免費模型。

核心功能

下面介紹 README 中已說明的能力要點。

模型與鑑權

  • 模型列表來自本機 OpenCode;默認每 modelRefreshSeconds(300 秒)從 OpenCode 重新拉取。
  • 登錄與 API 密鑰由 OpenCode CLI 自行管理;插件不復制、不轉發憑證。

本地服務與會話

  • 首次請求時插件執行 opencode --version,隨後在 127.0.0.1 上啓動 opencode serve(隨機端口與密碼),也可通過配置 serverUrl 附着到你已在運行的 serve 實例。
  • 每個 DSH 會話對應 OpenCode 內一個 session,工作目錄默認與 DSH 對話一致;歷史不一致時會新建 session 並用 DSH transcript 種子化。
  • 文本、推理、工具活動與 token 用量流式進入 DSH;在 DSH 中停止回覆會中止 OpenCode 運行。
  • 支持 png、jpeg、gif、webp(單張最大 20 MB)傳給接受圖像的模型。

受限工具與權限

受限工具(如 bash/shell、edit、webfetch 等)策略與 T3 Code 默認非全權限模式相近:始終允許 question、read、glob、grep 等;受限項在 DSH 中可彈出審批。可通過 allowRestrictedTools、askForApproval 調整行爲。插件不使用 --auto 或 allow-all。

錯誤映射

OpenCode 側錯誤會原樣展示;常見映射包括:429 / FreeUsageLimitError → DSH RATE_LIMIT;401/403 等鑑權類 → AUTH;本地連接問題 → TRANSPORT(DSH 會重試一次);5xx → SERVER。

兼容性

組件 要求
DeepSeek Harness 0.2.x(README 註明在 0.2.1-rc.5 上測試)
DSH profiles Desktop 與 CLI/headless
OpenCode 1.14.19 或更新,含 2.x
平臺 Windows 端到端測試;Linux CI;macOS 未測但應可用
Node 22.19 或更新(DSH 自帶)

當前 npm 包版本爲 0.1.1,許可證 MIT。

安裝與啓用

先做 OpenCode 安裝與自檢,再把插件加入 DSH,最後重啓並在模型選擇器裏選用 OpenCode (local)。

1. 安裝 OpenCode

npm i -g opencode-ai     # 或見 https://opencode.ai/docs/#install
opencode --version
opencode auth login      # 付費 provider 需要;免費模型可不登錄

2. 添加 DSH 插件

  • DSH 桌面應用: 打開插件管理器,添加 dsh-plugin-opencode-local。
  • DSH CLI: 將 web 換成你的 profile 名(如 desktop、headless):
dsh plugin --profile web add dsh-plugin-opencode-local

若要試用未發佈版本,可在插件倉庫內 npm ci && npm pack,將生成的 .tgz 作爲插件添加。

3. 重啓並選模型

重啓 DSH 後,在模型選擇器中選擇 OpenCode (local) 下的模型;亦可在 Settings → Models 中編輯該 provider。若找不到 opencode 可執行文件,首次請求會提示安裝方式或設置 binaryPath。

配置項

在 Settings → Models → OpenCode (local) 配置,或在 profile 的 cordis.patch.yml 裏寫 dsh-plugin-opencode-local 段:

配置項 默認值 說明
binaryPath opencode OpenCode 可執行文件路徑或 PATH 名
serverUrl 空 附着已有 serve,如 http://127.0.0.1:4096
serverPassword 空 serve 密碼(1.x 對應 OPENCODE_SERVER_PASSWORD,2.x 對應 OPENCODE_PASSWORD)
cwd 空 OpenCode session 工作目錄;空則用 DSH 對話目錄
allowRestrictedTools false 爲 true 時受限工具不經詢問允許一次
askForApproval true 是否在 DSH 審批提示中詢問受限工具
requestTimeoutMs 1800000 單輪上限(毫秒);0 表示不限
modelRefreshSeconds 300 模型列表刷新間隔
showToolActivity true 在回覆中簡短展示 OpenCode 工具調用
localSessionTitles true 本地生成 DSH 會話標題,避免額外模型請求

典型用法與排錯

正常路徑:本機已 opencode auth login(如需)、插件已啓用 → 在 DSH 中選 OpenCode (local) 模型 → 對話即經本地 serve 完成。

常見問題(摘自 README):

  • OpenCode was not found: 安裝 OpenCode 或設置 binaryPath;Windows 常見路徑爲 C:\Users\<you>\AppData\Roaming\npm\opencode.cmd。
  • OpenCode vX is too old: opencode upgrade 或 npm i -g opencode-ai@latest。
  • 選擇器無模型: 終端執行 opencode models;若爲空則 opencode auth login。
  • database is locked: 同數據目錄下另有 OpenCode 進程;稍後重試或用 serverUrl 連接已有 serve。
  • 工具反覆被拒: 在 DSH 提示中批准,或謹慎開啓 allowRestrictedTools。
  • 免費模型限流: 來自 OpenCode 免費層;等待或登錄自帶 key 的 provider。

插件不記錄 prompt、憑證或 serve 密碼。

適用場景與注意

適合已在 daily 工作流中使用 OpenCode CLI、希望在 DSH Desktop 或 headless profile 裏複用同一套 provider 與登錄狀態的開發者。DSH 生態強調「一切皆插件」;社區目錄 SkillHub 插件頁 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

插件以當前 DSH 進程權限在本機啓動並管理 opencode serve;安裝前請閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認與本機安全策略一致。受限工具涉及 shell、文件編輯與網絡訪問時,默認需人工審批。

結尾

經過上面的步驟,你可以在 DSH 內以與 T3 Code 相近的方式,把推理完全交給本機 OpenCode,同時保留 DSH 的會話與審批體驗。進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub:MateenAhmed737/dsh-plugin-opencode-local。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜