Skip to content

v2.4.3

Choose a tag to compare

@westanke westanke released this 20 Oct 08:46
· 73 commits to main since this release

dsh-remote-bridge v2.4.3

后台任务(新功能)

远程场景的真焦虑:在手机上让 agent 跑个长任务,然后切走或放下手机 —— 此时没有任何地方能看到「它还在跑吗」,更没有地方能「让它停下」。

三个端点,全部挂在会话维度下(内核的 list / kill 都要 sessionId,owner fence 是唯一的访问规则):

  • GET /chat/sessions/{sessionId}/jobs — 清单(首帧即全量,不做分页)
  • GET /chat/sessions/{sessionId}/jobs/{jobId}/output — 已保留输出(?from= 增量续读)
  • POST /chat/sessions/{sessionId}/jobs/{jobId}/kill — 终止

能力位 job-list-v1 / job-output-v1 / job-kill-v1;Kotlin SDK 同步三个方法。

【重要】patch 的 inject 覆盖插件 inject

cordis.patch.yml 里插件行的 inject 覆盖插件自己 export const inject,不是取并集。于是「插件声明了、patch 漏了」的服务读起来报 cannot get property "x" without inject —— 与「内核压根没有这个服务」的报错一模一样,肉眼分不出来。

这条长期掩盖了 4 个服务缺失:permissionPresets 曾被连续多份文档断言为「web profile 注不进、只能走内置兜底目录」,实际是 patch 没声明它;fileUploads / attachments / jobController 同理。

修法:inject 从 10 项补到 14 项(与 src/index.ts 对齐),并新增 docs:check 门禁双向比对两者(少了报「缺少」、多了报「多出」,多了更糟 —— 声明不存在的依赖让整个 entry 永久 INACTIVE)。

真机验证:探针 14/14 全绿;权限档位 BFF 返回内核真实三档(read-only / workspace-write / danger-full-access),不再是内置兜底的两档。

宿主服务注入面探针

GET /debug/host-services —— 回答一个此前只能靠猜的问题:这个内核上插件 inject 声明的服务到底有几个真的注进来了。启动时也会把摘要打进 DSH 日志。

history 首屏少一次 RPC

0.2.1 起 SessionFollowFrame 的 snapshot 分支自带 projections,@patch history-projections-passthrough 的 until 条件已达成。改为优先用自带的,取不到才回落(保留回落:最低支持版本仍是 0.2.0)。

兼容性

  • engines.dsh: >=0.2.0-rc.2 <0.3.0(^0.2.0 会漏掉 0.2.0-rc.2,那是上一轮适配所依据的内核)
  • 已在 DSH 0.2.1-rc.2 上真机验证;0.2.0-rc.2 仍是已验证基线
  • 无需改码即可运行:插件刻意不 import 任何 @deepseek-ai/*,全部宿主服务经结构类型 + Host 注入消费

文档门禁新增

docs:check 从两段扩到三段:新增「根 README 双站 + CHANGELOG 口径」与「patch inject 双向对齐」。README 双站漂移、patch inject 漏声明这两类问题从此机器可抓。

产物

dsh-remote-bridge-2.4.3.tgz — 572,953 字节,SHA-256 8cc567ac6bc8d6722846f18917ea739a98d5fe0cfce802291d8669e8effedcb3

升级

dsh plugin --profile web add dsh-remote-bridge

(App 侧 dsh-companion 的后台任务面板依赖本版能力位;插件未升级前手机端不会显示该入口。)