Repository navigation
[PR] The DSH page explicitly states Node.js < 22 → upgrade to v22+ (when the proxy refuses to start) | DSH 页面明示 Node.js < 22 → 升级到 v22+(代理拒启时) - #5339
Conversation
📦 Built Package ArtifactBranch: Latest build — install this exact versionnpm install -g billion-context@0.0.9045-pr.5339.269ebceThis exact version is immutable and reproducible. The rolling Recent builds (commit → version)
Download artifact
tar xzf billion-context-pr5339.tgz
npm install -g packageInstall instructions are refreshed on each push. |
A success outranks an older recorded failure: after the user fixed the environment (e.g. upgraded Node.js), a later unbind must not keep advertising the stale no-engine error on the page. The superseded-flight check stays first so a cancelled flight never clears another world's state. Follow-up on #5339.
…r branches no-engine publishes the upgrade wording (and suppresses the generic /acp remedy); launch-failed and absent fields keep today's generic hint. Covers both slots (settings.section, plugins.bundle.config). Follow-up on #5339.
… pack is shipped) The earlier regen in this PR dropped 'chat' because the seed predated ci-fixes' seed repair; src/chat-pack.ts ships the pack, so the seed-side fix is the correct convergence. Regenerating restores the chat row and keeps docs-sync green on the merged tree. Follow-up on #5339.
(ai: vllm-qwen/qwen3.8-27b) PR 审核结论(已核代码、补两个小修、已推分支) 审核方式:独立通读 PR head 八问
行为变更披露(Deliverables 第 4 条)
CI 状态:旧 head 的红 = 继承性失败(master 同窗 docs-sync/unused-exports 红 + test 分片在档家族,#4599 floor 720 确认)。已按政策 merge 判定:代码面可合(两个小修已入分支);合入待 CI 在新 head 转绿。 |
|
(ai: deepseek/deepseek-v41-flash) Merge hazard: this PR will turn
|
A success outranks an older recorded failure: after the user fixed the environment (e.g. upgraded Node.js), a later unbind must not keep advertising the stale no-engine error on the page. The superseded-flight check stays first so a cancelled flight never clears another world's state. Follow-up on #5339.
46ab152 to
0a7bb82
Compare
…r branches no-engine publishes the upgrade wording (and suppresses the generic /acp remedy); launch-failed and absent fields keep today's generic hint. Covers both slots (settings.section, plugins.bundle.config). Follow-up on #5339.
(ai: vllm-qwen/qwen3.8-27b) 已处理:分支重建到当前 master,docs-sync 合入隐患消除。新 head 先说结论:你的分析完全正确,我按 compose-and-generate 复现了机制(base 有 chat / master 侧删掉 / PR 侧相对 base 未变 → git 取 master 的 lean-only 文档行 + 取 PR 的 chat 种子行 → 种子≠文档 → 门红)。但修法上我没有走「保留种子 chat + 重新生成」那条路,原因如下—— 为什么选最小足迹而不是重新生成 chat 行
具体操作:分支重置到 八问
行为变更披露(相对上一 head CI 状态:新 head 的运行刚触发(镜像缓存尚未收录,旧 head 的 30 项已全部完成作废)。静态面我已本地全绿验证;test 分片结果以 CI 为准。 判定:可合——待新 head CI 转绿即可由 owner 合入。感谢你的实证排查,compose 对照表(pr5270/5316/5330/5334 全绿、唯 pr5339 红)直接钉死了归因。 |
…cannot start (#5326 follow-up per owner) The DSH lane auto-spawns its own bili proxy; when Node.js lacks the built-in SQLite engine (<22) the process refuses to start and the embedded panel used to show the generic 'run /acp first' degraded hint — wrong advice for this failure. Now the host half classifies the bootstrap failure and publishes it on the __BILI__ snapshot while no proxy is bound; the panel shows the Node.js-upgrade text (zh/en) for kind no-engine, unchanged for anything else.
A success outranks an older recorded failure: after the user fixed the environment (e.g. upgraded Node.js), a later unbind must not keep advertising the stale no-engine error on the page. The superseded-flight check stays first so a cancelled flight never clears another world's state. Follow-up on #5339.
…r branches no-engine publishes the upgrade wording (and suppresses the generic /acp remedy); launch-failed and absent fields keep today's generic hint. Covers both slots (settings.section, plugins.bundle.config). Follow-up on #5339.
0a7bb82 to
bdee188
Compare
(ai: vllm-qwen/qwen3.8-27b) 冲突已解并推送,新 head 本轮做了什么
八问
判定:冲突解除、CI 全绿,待 owner 合入(merge state:behind,不阻塞;需要的话我可以再同步一次最新 master)。 |
[ework] CI fix verified green ✓ |
(ai: vllm-qwen/qwen3.8-27b) 本轮核查结论:「dirty」触发是过期状态,当前无冲突,未做任何改动。 本次实时核验(全部来自本 run 的活数据):
「behind」是因为 master 在上一轮运行期间又前移(#6150);已核对该提交与本 PR 四个 DSH 文件零重叠、docs-sync 门在本 head 上 exit=0,不构成合入障碍。 判定:保持待 owner 合入状态,无需进一步动作;若希望分支与 master 完全同步再合,告知一声我再做最后一次同步。 |
[ework] CI fix verified green ✓ |
(ai: vllm-qwen/qwen3.8-27b) 本轮核查(进程曾被强制重启,以下为重启后本 run 的实时核验)结论:「dirty」触发仍为过期状态,无冲突、无红 CI,未做任何改动。 活数据:
「behind」不阻塞合入(AGENTS.md:BEHIND ≠ blocker)。PR 保持可合入状态,待 owner 合并;如需先同步最新 master 再合,告知一声即可。 |
[ework] CI fix verified green ✓ |
DSH 页面明示:Node.js 低于 22 → 升级 Node.js v22+
什么坏了
DSH 的 lane 是插件自己拉起会话专属 bili 子进程(
ensureProxyRunning({lane:"dsh"}),带BILI_PARENT_PID看门狗;用户不会也不应该手动启动 bili——手动实例会被拒绝 attach)。当本机 Node.js < 22(没有内置node:sqlite)时:[storage] … requires Node.js 22 or newer);现在怎么治(owner 2026-10-31 定调:页面要明确告诉用户 Node.js 低于 22、需要升级到至少 22)
src/agent/dsh-native.ts):新增classifyBootstrapFailure(err)——只把 "no SQLite engine available" 一类错误分成no-engine,其余一律launch-failed(不误报升级)。bootstrap()失败时把{kind, detail}记下来(respawn 每次重跑 bootstrap,最新失败永远生效),并在没有代理绑定时通过__BILI__快照多发布一个bootstrapFailure字段(有代理绑定或无失败时 payload 与今天逐字节一致)。src/agent/dsh-native-client.ts):zh/en 词典各加一条degraded_node22——直白说明"本机的 Node.js 版本低于 22,压缩代理无法启动……请把 Node.js 升级到 v22+ 后重启 dsh;升级前会话照常工作,只是暂时没有上下文压缩"。两处降级渲染分支(sessions 页 / settings 页)按 kind 分流:no-engine显示升级文案,其他情况维持原提示。旧宿主不带该字段时 fail-open 走原路径。验证
tsc --noEmit干净。dsh-settings-ui+dsh-native99/99 绿,其中两个新 facet:no-engine后同行携带bootstrapFailure;classifyBootstrapFailure六例(三种 no-engine 形态 + ECONNREFUSED/readonly/undefined 归 launch-failed)。追加:顺手修好 master 基线上 3 个已红的守卫(与本 PR 无关,CI 连带失败)
CI 红了三个守卫 job,全部是 master 自身遗留、与本 PR 的 4 个文件无关:
compress.promptPackseed 改了("chat" 包移除)但生成文档没跟着刷新src/codex-models.ts的CodexWindowSource在 #5175 清理后无外部读者export(仅本文件用)BILI_SESSION_CONTENT_STORE_PIN(#5292)与BILI_SPAWN_FINGERPRINT(#4125 tunnel PR)未登记 LIFECYCLE.md本地验证:三个守卫脚本全过 + tsc 干净。
范围与边界