Skip to content

Plugin Inventory zh

pawaca edited this page Aug 30, 2026 · 1 revision

插件清单

上游插件状态投影和组合查看器——为什么 Edge 设置页没有插件列表。

无对应的上游文档页。包:@deepseek-ai/dsh-host-plugin-inventory + @deepseek-ai/dsh-cordis-host-runner

上游提供了什么

两个包协同工作,将运行时插件图暴露给浏览器:

  • dsh-host-plugin-inventory — 当前 cordis Loader 插件状态的只读 Typert Remote 投影。暴露 pluginInventory/list 端点,返回每个已加载包的版本、信任级别和活跃状态。
    • dsh-cordis-host-runner — 动态包定义注册表,管理宿主侧沙箱生命周期和模型挂载双半包的 invoke handler。提供清单服务读取的运行时数据。

客户端插件 dsh-client-ui-agent-preset(包含在 Edge 的 33 插件包中)消费这些数据来渲染设置页的 preset 组合查看器和插件列表。

当前 Edge 状态

**未实现。**两个包均未安装。影响:

  • 设置页插件列表为空——客户端通过 Typert Remote 调用 pluginInventory/list 但服务端没有提供者,网关返回错误。
    • Edge 在 edge-api.ts 中硬编码单个 preset 'dsh-edge'agentPresets.list handler 返回一个 trust: 'system'authorable: falsehasDocument: false 的 preset。
    • agentPresets.read handler 从运行时状态生成合成 YAML 描述(已安装插件、部署配置、模型配置)。

为什么没有安装

Edge 使用静态组装而非动态加载。所有插件在部署时由 assemble-standalone-web.mjs 预构建,通过 expected-boot-graph.json 验证,作为 Cloudflare Assets 分发。没有 cordis Loader,没有运行时包发现,没有 per-session preset 切换。插件清单服务没有东西可读,因为它依赖的加载基础设施不存在。

这是有意的架构选择:静态组装消除了冷启动插件解析,保持 bundle 确定性,避免 Workers 中受限的动态 import()

架构总结

组件 状态 Edge 方式
dsh-host-plugin-inventory 🚫 未安装 没有 loader 可读
dsh-cordis-host-runner 🚫 未安装 没有动态包
dsh-client-ui-agent-preset ✅ 在 bundle 中 显示硬编码的 'dsh-edge' preset
agentPresets API ⚠️ 硬编码 单个 preset,无 YAML 文件

关键观察:插件清单的缺失是 Edge 静态组装模型的必然结果——不是需要修复的遗漏功能。安装清单服务需要动态 loader 基础设施,这与 Edge 的确定性 bundle 方式冲突。前进方向不是添加动态加载,而是提供一个静态清单投影来报告构建时的插件列表。

TODO

**评估静态插件清单投影。**一个轻量适配器可以读取构建时的插件列表(来自 expected-boot-graph.json 或组装清单),暴露为 Typert Remote 端点,这样设置页就能显示当前组合而不需要完整的动态 loader。这会满足 pluginInventory/list 的客户端调用而不改变静态组装模型。所有 plan 可用。

**与 Agent Presets 的关系(#43)。**如果 Edge 将来支持多个 preset(每个 session 不同的工具集),清单和 loader 基础设施需要重新考虑。参见 #43 的 preset 系统调研。

English

中文

Clone this wiki locally