Replies: 3 comments
|
感谢建议,把Cordis的HMR能力在DSH中使用得更好的确是我们正在做的事情,会持续优化相关的功能 |
0 replies
|
关于你提出的四个具体技术问题,说实话我们也还没想好 |
0 replies
|
这条我很有共鸣——我们 dshbase 每天都在做「插件更新」这件事,而且是批量做:
所以「重启扩展服务」之外,我们更希望官方提供一个可复用的更新验证基线(装→载→跑的最小流程),而不是让每个插件自己搞更新逻辑。我们的验证清单在 dshbase.com/plugins 开源,欢迎参考。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
背景
我正在为一个第三方插件增加基于 GitHub Tags 的版本检查。实际开发中发现:
当前已加载的插件代码涉及 ESM 模块缓存和仍在运行的 Cordis 注册。插件直接覆盖自身文件后,很难保证旧代码已完整卸载;使用 cache-busting 重新导入还可能产生重复模块实例。另一方面,让普通插件自己处理 Windows、Linux、Docker、systemd、PM2 等环境下的进程重启,也会带来权限、安全和可靠性问题。
因此,插件更新流程往往只能停在“更新已安装,请手动重启 DeepSeek Harness”。
已有社区实践
社区已经出现了相关尝试:
这些实践说明插件更新和生命周期管理存在明确需求。但目前相关能力由社区插件自行实现,不同插件需要分别处理包管理、配置修改、进程重启和跨平台兼容,也需要获得较高的系统权限。
因此,这些案例更适合作为官方提供统一、最小权限生命周期接口的依据,而不是长期让每个插件重复实现一套进程管理方案。
建议:分阶段提供官方能力
第一阶段:官方的安全重启能力
可以先提供一个由宿主控制的生命周期接口,例如:
建议同时提供:
即使第一阶段暂时只能重启整个 Harness,也能先解决社区插件“更新后无法安全生效”的核心问题。
第二阶段:标准插件更新生命周期
建议由 Harness/CLI 提供统一的更新执行能力,而不是每个插件自行调用包管理器或修改运行目录:
插件可以负责展示版本信息和发起请求,但安装、替换、重启、回滚应由官方宿主能力完成。
长期方向:独立的扩展宿主进程
如果架构允许,可以考虑类似 VS Code Extension Host 的模式:
这会明显增加架构复杂度,因此可以作为长期方向;短期先落地官方的安全重启接口。
期望的用户体验
这样既能接近 VS Code 插件更新的体验,也能避免普通插件自行获得过大的文件系统和进程控制权限。
想请教维护者
appLifecycle.requestRestart()的宿主能力?与 #2714 的关系
#2714 社区插件互操作标准 主要解决插件 Manifest、Capability 协商、兼容性判断与确定性生命周期问题;本提案聚焦其上层的实际更新执行链路,包括安装替换、安全重启、健康检查和失败回滚。
如果 #2714 的契约方向得到采用,本提案中的
plugin.update、lifecycle.restart等能力可以作为独立 Capability Contract 接入其协商机制,两者可以互补而不必形成两套体系。相关讨论
All reactions