Replies: 2 comments
|
这个问题会直接影响用户是否敢安装第三方 Runtime。建议把“Host 插件加载隔离”和“插件内部运行时沙箱”分成两层处理:
SandBase Harness 可以作为一个第三方 runtime 集成参考:它通过 DeepSeek Harness bundle 示例 接入,runtime 状态在自己的 workspace 中管理,并提供 安装恢复说明。这不能替代 DSH Host 的 per-plugin fault isolation,但可以帮助验证“插件失败不应等于数据和恢复路径消失”的边界。 |
|
Follow-up to my own report above, after a deeper read of the sources. The observed behavior stands — one plugin throwing What I got wrong. I framed this as "plugin loading lacks fault isolation" and asked for each plugin's activation to be wrapped in its own try-catch. The shipped sources show the framework already does exactly that: every plugin runs in its own fiber, and an activation error caught by a plugin's fiber stops only that fiber (it logs the error, records it on the fiber, and deactivates just that plugin) — other plugins' fibers are untouched at this layer. My proposed fix was asking for something that already exists. Where the all-or-nothing actually comes from. The plugin loader applies the whole entry list as a single transaction: it creates the entries via The reshaped ask. Keep transactional semantics where they protect live reconfiguration, and contain failures at boot instead:
Environment: Thanks to the maintainers and the community — this correction comes from a deeper source read before taking the thread further. I hope the two-layer mechanism is useful regardless of how the boot-policy question is decided. |
Uh oh!
There was an error while loading. Please reload this page.
Summary
Plugin loading is not fault-isolated: if a single plugin throws during load/activation, the error aborts the whole plugin loading pass, and every other plugin — including healthy, unrelated ones — becomes unavailable. We observed this in practice when one locally installed plugin failed with
ReferenceError: inject is not definedat load time; the entire plugin tree was unavailable for that run until the offending plugin was removed. We would like per-plugin isolation: catch load errors per plugin, degrade gracefully, and keep the rest of the tree running.Background & Evidence
ReferenceError: inject is not definedon its activation path.Failure Mode or Reproduction
Observed: the failing plugin's exception aborts the loading pass; the remaining healthy plugins do not load. Expected: only the offending plugin is marked failed (with its error surfaced per plugin), and the rest load normally.
Proposed Fix
Additional Context
@deepseek-ai/dsh0.1.1-rc.2 (developer preview)All reactions