前言¶
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。