Skip to content
This repository was archived by the owner on Nov 9, 2026. It is now read-only.

v0.8.8 — 适配 DSH 0.1.5-rc.1

Latest

Choose a tag to compare

@xia-sc xia-sc released this 10 Sep 06:11
· 7 commits to main since this release

v0.8.8 — 适配 DSH 0.1.5-rc.1

正式版(Latest)。本版把插件对齐到 DeepSeek Harness 0.1.5-rc.1,并收录此前只存在于
Pre-release 的 /zen-go-rpc HTTP 405 修复。

适配 DSH 0.1.5-rc.1

  • peer 依赖对齐:@deepseek-ai/dsh-credentials / dsh-launch-environment / dsh-llm /
    dsh-settings / dsh-timeout 由 ^0.1.2-rc.1 升到 ^0.1.5-rc.1。0.1.x 的预发布版
    caret 不跨 patch 匹配(^0.1.2-rc.1 不覆盖 0.1.5-rc.1),旧声明已与实际运行环境不符。
  • 宿主 API 逐项复核:插件用到的每个接缝在 0.1.5-rc.1 上仍存在且语义一致 ——
    LlmAdapter(providerInfo / listModels / resolveModel / prepareCall / stream)、
    llm.registerAdapter / llm.registerConfigurableProviders、settings.installSection、
    credentials.credentialRef / credentials.resolve、launchEnvironmentOf、
    MAX_TIMER_DELAY_MS、attributionHeaders / assertUsableApiKey / LlmError、
    webServer.register({kind:"prefix"})、connection.requestRejection。
  • 客户端注入面同样在位:dsh-client-connection / dsh-client-locale /
    dsh-client-ui-settings / dsh-api-remotes 在 0.1.5-rc.1 中均存在,client.inject 无需改动。
  • 真机验证:在 dsh web 0.1.5-rc.1 上加载本插件(link: 安装),同源
    POST /zen-go-rpc/usage/summary 命中插件的 requestRejection 围栏返回 401(路由确实
    挂载、fence 生效),而不是 SPA fallback 的 405。

收录 v0.8.7-rc.1 的修复

  • /zen-go-rpc HTTP 405 根因:connection.rpc.handle("/zen-go-rpc", …) 在 connection 服务
    自己的上下文里解析 owner.webServer,Cordis 抛 cannot get property "webServer" without inject
    并被 effect 静默吞掉 → 路由从未挂载,浏览器 POST 落到 SPA fallback(非 GET/HEAD 一律 405)。
  • 修复:改为在注入 ["connection","webServer"] 的 fiber 上直接
    webServer.register({kind:"prefix", path:"/zen-go-rpc", handler}),自实现与 /api 同形的
    fetch-shaped RPC handler(buffered body、client-request 信封校验、method==endpoint、
    {ok}/fail 结果、requestRejection 安全围栏)。
  • 连带修复:浏览器 rpc.call 的参数位于 payload.args 而非 envelope.args,已对齐。

验证

  • node test/smoke.mjs:45 项,44 pass + 1 skip(无 key 的活探针)。
  • npm run build:client:产物 lib/client.js 与 src/client/* 同步(无差异)。
  • 真实 dsh-host-webserver + dsh-client-connection(0.1.5-rc.1)挂载下 RPC 通道可用。

升级

仓库安装(link: 方式)重启即生效:

dsh plugin --profile web add github xia-sc/dsh-opencode-go
# 然后重启 dsh web,刷新页面

本地源码安装用户:拉取 main 后重启 dsh web(无需重跑 setup-local-deps.cjs)。
v0.8.7-rc.1 用户可直接升到本版:功能内容一致,依赖声明与版本号转正。


v0.8.8 — adapted to DSH 0.1.5-rc.1

Stable release (Latest). This release aligns the plugin with DeepSeek Harness 0.1.5-rc.1 and
carries the /zen-go-rpc HTTP 405 fix that until now existed only in a Pre-release.

Adapted to DSH 0.1.5-rc.1

  • Peer dependencies aligned: @deepseek-ai/dsh-credentials / dsh-launch-environment /
    dsh-llm / dsh-settings / dsh-timeout move from ^0.1.2-rc.1 to ^0.1.5-rc.1. A caret on a
    0.1.x prerelease does not match a different patch tuple, so the old declaration no longer
    described the environment the plugin actually runs in.
  • Every host seam re-checked: all APIs this plugin consumes still exist with the same
    semantics in 0.1.5-rc.1 — LlmAdapter (providerInfo / listModels / resolveModel /
    prepareCall / stream), llm.registerAdapter / llm.registerConfigurableProviders,
    settings.installSection, credentials.credentialRef / credentials.resolve,
    launchEnvironmentOf, MAX_TIMER_DELAY_MS, attributionHeaders / assertUsableApiKey /
    LlmError, webServer.register({kind:"prefix"}), and connection.requestRejection.
  • Client injection surface intact: dsh-client-connection / dsh-client-locale /
    dsh-client-ui-settings / dsh-api-remotes are all still present in 0.1.5-rc.1, so
    client.inject needs no change.
  • Verified live: loaded on a dsh web running 0.1.5-rc.1 (via link:), a same-origin
    POST /zen-go-rpc/usage/summary hits the plugin's requestRejection fence and answers 401
    (route mounted, fence active) instead of the SPA fallback's 405.

Carried over from v0.8.7-rc.1

  • /zen-go-rpc HTTP 405 root cause: connection.rpc.handle("/zen-go-rpc", …) resolved
    owner.webServer inside the connection service's own context; Cordis threw
    cannot get property "webServer" without inject and the effect silently swallowed it → the
    route never mounted and every browser POST fell through to the SPA fallback, which answers
    non-GET/HEAD with 405.
  • Fix: register the prefix route directly on the fiber that injects
    ["connection","webServer"] via webServer.register({kind:"prefix", path:"/zen-go-rpc", handler}),
    reimplementing the /api-shaped fetch handler (buffered body, client-request envelope,
    method==endpoint, {ok}/fail results, requestRejection fence).
  • Also fixed: browser rpc.call passes endpoint args under payload.args, not
    envelope.args.

Verified

  • node test/smoke.mjs: 45 tests, 44 pass + 1 skip (live probe needs a key).
  • npm run build:client: lib/client.js is in sync with src/client/* (no diff).
  • RPC channel exercised against real dsh-host-webserver + dsh-client-connection (0.1.5-rc.1).

Upgrade

Repo installs (link: style) apply on restart:

dsh plugin --profile web add github xia-sc/dsh-opencode-go
# then restart dsh web and refresh the page

Local-source installs: pull main and restart dsh web (no need to re-run
setup-local-deps.cjs). v0.8.7-rc.1 users can move straight to this release: same functional
content, with the dependency declaration and version number promoted to stable.