← 返回列表
未验证
一个社区组合包bundle:恢复 DeepSeek Harness Web 组合里面向插件的…
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/14 · 已提供中文文档
在DeepSeek Harness Web组合中恢复面向插件的connection.rpc.handle() API的社区捆绑包。
综合分
28.9
GitHub 分
28.9
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add Robin1987China/dsh-connection-rpc-fix该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:已验证本站已于 0 天前真实安装成功
- 是什么
- dsh 原生插件 · tool
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 11 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/24(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-connection-rpc-fix
一个社区组合包(bundle):恢复 DeepSeek Harness Web 组合里面向插件的 connection.rpc.handle() API。
作者 @Robin1987China
症状
第三方插件注册一个私有 Web RPC 通道,浏览器端每次调用都失败:
cannot get property "webServer" without inject
插件侧看不到任何日志,浏览器请求落到静态处理器,返回 HTTP 405。
影响谁
任何通过 connection.rpc.handle(channel, handler) 提供浏览器可达通道的插件作者。官方 /api 传输不受影响 —— 只有面向插件的那条 API 坏了。
根因
在 @deepseek-ai/dsh-client-connection 里:
const inject = ['credentials']; // 包自身的注入只有 credentials
async function apply(ctx, config) {
const connection = new HostConnectionService(ctx, ...); // 服务持有这个 ctx
ctx.inject(['webServer'], (webCtx) => {
webCtx.effect(() => webCtx.webServer.register(route), ...); // 官方 /api —— 能通
});
}
// 服务内部:
const owner = this.ctx; // = apply 的 ctx:没有 webServer
handle: (channel, handler) => this.register(owner, channel, handler),
register(owner, channel, handler) {
return owner.effect(() => owner.webServer.register(route), ...); // 抛错并被吞掉
}
插件行声明的是 inject: [webRuntime],所以服务的 ctx 上从来没有 webServer。属性访问在 owner.effect 内部抛错、被吞掉,通道于是从未挂载。
包自己的注释写着它会在 “当 webServer 存在时”挂载浏览器传输 —— 而面向插件的 API 却无条件假设它存在。
修复
本 bundle 只改一行,把服务读取的服务交给它自己的 ctx:
- id: connection
inject: [webRuntime, webServer]
安装
作为组合包(官方分发形态):
cd ~/.dsh/profiles/web
npm install dsh-connection-rpc-fix
然后在该 profile 的 package.json 里列出它:
{"dsh": {"profile": {"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-connection-rpc-fix"]}}}
或者不装任何东西,直接在 ~/.dsh/profiles/web/cordis.patch.yml 里自己打两行:
- id: connection
inject: [webRuntime, webServer]
验证方法
一个探针插件在启动时调用 ctx.connection.rpc.handle('/lab-probe', handler),随后用 HTTP 探测该通道。已注册的通道在连接鉴权栅栏之后,未认证请求返回 401;未注册的会落到静态处理器返回 405。
| | 插件日志 | POST /lab-probe |
|---|---|---|
| 修复前 | THREW: cannot get property "webServer" without inject | 405 |
| 修复后 | returned without throwing (disposer: function) | 401 |
两次运行都用隔离的 DSH_HOME 和独立端口;对照组 POST /api 两次都是 401。
补丁也验证过以组合包形式(列在 dsh.profile.bundles)交付同样有效 —— 那正是本包采用的形式。
边界与限制
- 修的是组合行,不是包本身。底层的无守卫访问依然存在,所以升级前请看下面的上游报告
- 它针对 Web 组合。若某部署挂了 connection 却没有 web server,这条 API 本来就是坏的,本包帮不上
- 它不是让 rpc.handle() 容忍缺失的 web server,而是让 web server 就位
上游报告
- #6105 —— rpc.handle() 无法注册插件 RPC 通道(浏览器 405)
- #6179 —— 必然抛错(cannot get property webServer without inject)
- #6289 —— 无法挂载第三方 Web RPC 通道
- #6081 —— Web bundle 应声明 modules → webServer 激活依赖
许可证
MIT