Replies: 7 comments
|
I checked items 1, 2, and 5 against master For item 1,
So the strongest reproduction should include the dependency diff, bundle list diff, and the installed manifests for the missing packages. That will show whether pnpm changed the dependency set, a package lost its bundle declaration, or reconciliation removed an entry outside its intended ownership. For item 2, duplicate provider routes do fail atomically with For item 5, the service lifecycle documentation confirms that a required service belongs in I turned these boundaries into a reversible operator runbook: preserve the manifest, lockfile, profile patch, and home patch; dump the composition before and after one install; then smoke test and either promote or restore the known-good state. Visual runbook: https://sandbaseai.github.io/deepseek-harness-handbook/plugin-recovery.html Canonical source guide: sandbaseai/deepseek-harness-handbook#20 |
补充(2026-08-15):会话存储布局不兼容 → 启动失败且错误归因误导(核心插件被误报)新遇到一个关联问题,值得补充:
|
补充 2(2026-08-15):重启机制「委托交互式恢复流程」在非交互触发下必然失败第 3 条(重启脚本杀后端会连带自杀)修复过程中又踩到关联坑,值得补充:
|
|
第 2、5 条我们已做成可离线检测的检查并落地(moonquake2004/dsh-doctor,commit
实测中 P9 修了三轮防误报( 两点呼应:
第 1、3 条(plugin add 合并语义、重启脚本进程树)属上游/launcher 层,我们没法从离线侧覆盖,但赞同你的建议方向。 |
补充 3(2026-08-15):实测确认「后端 spawn 的 detached 重启进程也会随后端一起死」对第 3 条做了一次真机实测(同一 Windows 环境):
|
|
插件启动/重启的问题集(每条带复现+根因)——dsh plugin add 静默问题、重启状态等,和第 3 章依赖/挂载坑是同一片区域。 这些根因值得并进第 3 章,方便的话可以整理成 checklist 我来收录:https://github.com/Electricitysheep/dsh-handbook/blob/main/docs/03-profiles.md |
|
@Electricitysheep — Here's the full problem set from this thread, organized as a checklist for 3.5 常见坑 (all eight entries, each attributed to who verified it — I only vouch for the two we have offline detection for; the rest carry their verifier's name so you can decide what to include): 1.
2. Duplicate adapter registration → boot-time
3. Restart path can kill the backend it was spawned from — OP's real-machine tests (Windows)
4. Interactive recovery menu hangs in non-interactive contexts — OP
5. Startup failure misattributed to the core
6.
7. Launcher preflight can consume diagnostics directly — our lane
8. Want this as a PR to |
Uh oh!
There was an error while loading. Please reload this page.
背景
在 Windows + 自建 profile 上深度使用 DSH web 时,遇到并定位了几个值得官方关注的问题。每条都附了可复现步骤与根因,欢迎指正。
1.
dsh plugin add会静默丢失dsh.profile.bundles中的已有条目(Bug)dsh plugin --profile web add link:D:/xxx安装新 bundle 后,profiles/web/package.json的dsh.profile.bundles数组中原有条目被移除(实测丢失了@dsh-polyglot/bundle和dsh-web-control),这些插件的路由/UI 静默失效(HTTP 404),无任何告警。package.json→ 执行dsh plugin add <任一 bundle>→ 对比 bundles 数组。plugin add应合并而非整体替换 bundles 列表;写入前先--dump-config校验,并把实际变更记录到日志。2. 适配器路由冲突导致启动即崩,错误信息难以定位
ctx.llm.registerAdapter(['deepseek-official'], …)抢注已由llm-deepseek注册的 provider,进程在 boot 阶段直接抛DUPLICATE_ADAPTER崩溃,整棵组合起不来。堆栈里能看到 provider 名,但没有指出「谁先注册、谁冲突」。DUPLICATE_ADAPTER崩溃信息点名冲突双方(已注册者 + 请求者);registerConfigurableProviders或仅注册新路由,而不是抢注既有 provider;--dump-config或 loader 层)能提前拦截这类冲突,给出可操作提示(如「请移除 X 或改用 Y」)。3. 「由后端派生的重启脚本杀后端」会连带杀掉自己,重启必然失败
restart-web.ps1(由 dsh web 进程派生运行)直接Stop-Process3080 监听进程,脚本自身也随宿主进程树被终止,永远走不到后面的重新拉起步骤,后端只能靠外部(手动运行启动器)恢复。spawn(detached: true) + unref(dsh-service-control已用该模式,工作正常)。4. 启动器「预检 + 恢复菜单 + known-good 快照」设计,值得官方参考
自建启动器(
启动 DeepSeek Harness.ps1)目前包含:--dump-config组合校验 + 每个 bundle 入口语法检查 + 冒烟测试;cordis.patch.yml快照为 known-good;这套机制把「组合被改坏」从「死页面 + 只能手动折腾」变成「一键定位/恢复」。若官方 launcher 或
dsh web能内置类似能力(或提供官方 preflight/recovery 钩子),能显著改善插件生态可用性。5. 插件开发坑:用
ctx.settings必须声明inject: ['settings']apply()里ctx.get('settings')注册命名空间,但未声明inject: ['settings']。插件会先于 settings 服务就绪而激活,ctx.get('settings')返回 undefined,注册被跳过;客户端写该命名空间时报settings namespace not registered。export const inject = ['settings'](或对可选服务做 undefined 处理)。inject。以上均为本人在 Windows + 自建 profile 下的实测。感谢 DSH 团队与社区!
All reactions