Repository navigation
Description
=== billion-context diagnostics ===
generated: 2026-10-19T06:12:39.945Z
bili version: 0.1.201 (commit ff42dcc)
node: v20.19.5
platform: win32 x64
os: Windows_NT 10.0.22631
uptime: 3h 37m
--- storage ---
requested mode: shadow
effective mode: legacy
degrade reason: no SQLite engine available (node:sqlite missing, better-sqlite3 not installed) — node:sqlite needs Node.js >= 22.5; upgrade Node.js for the builtin engine (engine tarball mirrors tried in order: npm + npmmirror; set BILI_UPDATE_REGISTRY or update.registry to pin one)
engine: none
engine bootstrap: cooldown
bootstrap failure marker: at=2026-10-19T01:16:10.598Z reason="The operation was aborted due to timeout" (cooldown ~64m remaining)
BILI_STORAGE_UNIFIED: (unset)
storage.unified (config file): (unset)
BILI_STORAGE_JSON_WRITER: (unset)
storage.jsonWriter (config file): (unset)
BILI_SQLITE_AUTO_DOWNLOAD: (unset)
storage.sqliteAutoDownload (config file): (unset)
BILI_STORAGE_WAL_JOURNAL_SIZE_LIMIT_BYTES: (unset)
storage.walJournalSizeLimitBytes (config file): (unset)
BILI_ENCRYPTION_KEY set: no
sessions on disk: 0
last [storage] log lines:
2026-10-16T08:03:38.507Z [info] [v=0.1.197] [storage] unified shadow mode ENABLED (storage.unified=shadow or BILI_STORAGE_UNIFIED): every session write is double-ingested into index.db and digest-reconciled [engine: node:sqlite/builtin]
2026-10-16T08:05:24.884Z [info] [v=0.1.197] [storage] unified shadow mode ENABLED (storage.unified=shadow or BILI_STORAGE_UNIFIED): every session write is double-ingested into index.db and digest-reconciled [engine: node:sqlite/builtin]
2026-10-19T01:16:10.622Z [warn] [v=0.1.197] [storage] unified sidecar failed to open C:\Users\liuwf.local\share\billion-context\sessions/index.db (Error: [storage:node:sqlite] no SQLite engine available) — staying legacy-only; delete the file to reset the index
2026-10-19T01:25:33.228Z [warn] [v=0.1.199] [storage] unified sidecar failed to open C:\Users\liuwf.local\share\billion-context\sessions/index.db (Error: [storage:node:sqlite] no SQLite engine available) — staying legacy-only; delete the file to reset the index
2026-10-19T02:34:46.813Z [warn] [v=0.1.201] [storage] unified sidecar failed to open C:\Users\liuwf.local\share\billion-context\sessions/index.db (Error: [storage:node:sqlite] no SQLite engine available) — staying legacy-only; delete the file to reset the index
2026-10-19T06:12:36.288Z [warn] [v=0.1.201] [storage] unified sidecar failed to open C:\Users\liuwf.local\share\billion-context\sessions/index.db (Error: [storage:node:sqlite] no SQLite engine available) — staying legacy-only; delete the file to reset the index
Activity
ranxianglei commentedon Oct 19, 2026
(ai: vllm-qwen/qwen3.8-27b)
查重: 不重复 —— 与 #3338 同机制家族(引擎下载失败 → 降级 legacy-only),但本例暴露了 #3338 未覆盖的两个新面:①旧版本写下的冷却标记,会压制新版本里已经修好的重试逻辑;②用户没有任何手段在 6 小时冷却结束前强制立即重试。保持独立打开,与 #3338/#2833 关联。
标签: bug / scope/storage / p2(unified 存储功能降级但产品可用,有绕行手段)
排查结论(已按你的版本 v0.1.201 = 当前 master 代码逐条验证):
[v=0.1.197],冷却标记写入时间与它只差 24ms)——该版本的下载预算只有 10 秒、单一 registry,下 11MB 超时几乎必然,失败后设了 6 小时冷却。[engine: node:sqlite/builtin]——说明当时 bili 进程跑在 Node ≥ 22.5 上;现在诊断报 v20.19.5。看起来这两天内机器的默认 Node 变了(或不同启动方式选到了不同 Node)。你现在可以做的(任选其一):
C:\Users\liuwf\.cache\billion-context\sqlite\.bootstrap-failed.json,再重启 bili;"storage": {"unified": "legacy"}显式退出(警告消失,行为不变)。三个问题(帮我确认网络侧是否还有后续问题):
node -v是什么?10-16 前后换过 Node 版本吗?bili.log搜[storage] sqlite engine self-bootstrap: ok;若仍失败,请把最新几行[storage]贴上来。我们这边继续推进两件不需要决策的事:①诊断输出补上冷却到期时刻和标记文件路径,让用户直接知道怎么强制重试;②把这些逃生口写进 CONFIGURATION.md。另有几项改进方案(cooldown 标记带版本、强制重试命令、按失败类型缩短冷却等)需要你拍板,细节见后续评论。
docs: sync stale bootstrap timeout comment with the #3338 60s budget …
ranxianglei commentedon Oct 19, 2026
(ai: vllm-qwen/qwen3.8-27b)
进展:不依赖决策的部分已修完 —— PR #3790(#3790 ,CI 跑中):
until <ISO>,不再只有"~64m remaining"这种相对值)和标记文件的确切路径;force immediate retry: delete <路径> and restart—— 强制立即重试的操作入口写进诊断输出本身;storage.sqliteAutoDownload条目补了 6 小时冷却、标记位置与强制重试方法。, until <ISO>+ 新增一行),wire API(/__bili/status、/__bili/overview)不变,无配置面变化——详见 PR 描述。本地定向测试全绿(新套件 3/3 + 相邻三套件 36/36)、typecheck 干净,全套件以 CI 为准。以下 4 项需要你拍板(P1–P4)。拍板后我按批准的子集合并成一个 follow-up PR 收进本 issue(同一机制族「SQLite 引擎自下载的冷却/重试策略」,不拆片)。
八问
bili doctor --fix(现有的"显式请求收敛"入口,dsh 车道自动更新改全:自愈同步三本账(manifest/lockfile/副本)+ 存量漂移显式修复,自动更新后必须还能用 #3496)增加清除失败标记一步,不新增 CLI 动词;选项对比表
一句话即可拍板(例如"都按建议来"或逐项指定)。在此之前 #3790 可以先合入——它独立成立,不依赖任何上述决策。
docs: source the #3788 cooldown text from the config-docs seed (fixes…
ranxianglei commentedon Oct 19, 2026
(ai: vllm-qwen/qwen3.8-27b)
状态更新:PR #3790 的 CI 已全部跑完,全绿(18 个检查通过、12 个按设计跳过、0 失败——含 ubuntu/windows 两个平台的全部测试分片和 docs-sync 等所有守卫)。
说明一下过程:第一轮 CI 只有一个
docs-sync红——CONFIGURATION.md 的表格行是由tools/gen-config-docs.mjs从 YAML 种子生成的,我上一版直接手改了生成物导致漂移。已改为在种子(website/config-reference/process.yaml)里补句子并重新生成,第二轮全绿。PR #3790 现在处于可合并状态(master 又前进了几个提交,属正常漂移;合并由人来操作)。P1–P4 的决策项仍在上面那条回复里等你拍板。
ranxianglei commentedon Oct 19, 2026
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b)
新子机制条目登记(#3823):第五例同症状实例(v0.1.202, node v24.21.0, win32-x64)机制不同于前三例——内置引擎可用(
engine bootstrap: not-needed),失败在 OS 拒绝打开 index.db(SQLITE_CANTOPENunable to open database file),疑似 Win10 机器环境因素(Defender 锁目录 / OneDrive 占位 / MAX_PATH)。reporter 已确认同版本 Win11 机器正常,排除版本回归。取证清单已发(日志行、目录列表、OneDrive、Defender 排除项、并发实例),等待回报。无需决策的止血面改进已开 PR:#3855 —— win32 × CANTOPEN 时,降级告警与诊断 reason 点名 AV/OneDrive/路径长度三个嫌疑并纠正「删文件」误导(其他平台/错误类型字节级不变)。注意与在途 #3531(同一 warn 行的缺引擎提示)条件互斥、可组合。
待 reporter 证据到位后处置:确认环境因素 → 本条标记「环境根因,解法=AV 排除」结案;若发现代码侧可复现缺陷 → 按新机制继续修。
fix: surface SQLite bootstrap cooldown expiry and force-retry path in…
docs: document the SQLite bootstrap cooldown marker and force-retry l…
ranxianglei commentedon Oct 19, 2026
The self-bootstrap path got two fixes in #3819 (merged, next release): a cached-but-unloadable engine copy is now deleted and re-downloaded from the pinned mirror instead of being skipped forever, and a download that succeeds but fails to register arms a cooldown and reports
failedhonestly. If your case is the unloadable-cache class this should clear it on next start. Could you retest on the next release (≥0.1.204) and report whether theunified sidecar failed to openwarning still appears? If it does, the engine probe log line just above it will say which engine was attempted — that string decides whether this is a new platform case.ranxianglei commentedon Oct 19, 2026
[bot] 🏷 (ai: vllm-qwen/qwen3.8-27b)
#3823 子机制条目更新(机制修正):
[storage]行、sessions 目录对低完整性 pwsh 可写、OneDrive 排除。icacls /setintegritylevel Low修复后代理才起来。index.db 的 CANTOPEN 与之为同一受限进程根因的两面是当前的领先假设。bili.log.old(待报告者确认);B) logger 静默丢失缺陷——异步打开失败不告警 + [noise] 观测噪音三件:启动横幅同秒重复 24 次 / reasoning-pair-violated 每请求重报(单会话 276 条) / %TEMP% 端口日志无轮转(5 天 31.7MB) #2864 静音竞态导致双通道全死,已立项 All logs silently lost when the log file fails to open: no warning on async open failure, stderr fallback permanently si | 日志文件打不开时全部日志静默丢失:异步打开失败不告警、stderr 兜底被永久静音 #3857,修复在 PR [PR] fix(logger): log file open failure now warns + falls back to stderr instead of total silent loss #3858(打开失败现在打一条 [warn] 并退回 stderr-only)。docs(config): regenerate config docs — drop stale pre-#3818 storage r…
docs(config): regenerate config docs — drop stale pre-#3818 storage r…
5 remaining items
docs: regenerate config-doc artifacts — drop stale duplicate storage …
docs: regenerate config reference (collapse merged duplicate rows)
docs: regenerate CONFIGURATION (drop stale storage.unified shadow row)
fix: regenerate config docs to drop stale storage rows left over from…
fix(docs): regenerate config docs — drop stale duplicate storage rows
docs: regenerate config reference to drop stale duplicate storage rows
docs: regenerate CONFIGURATION to drop 4 stale duplicate storage rows (…
ranxianglei commentedon Oct 20, 2026
The bootstrap path this report traced has been hardened since v0.1.201:
engine-bootstrap.tscache re-validation);failed+ cooldown instead of a lyingdownloaded.So on ≥0.1.204 the expected outcome on this machine is
full(or at worst a one-time retried download), not a silent legacy-only degrade. Could you retest on the next release and drop the/__bili/statusstorage blob here? If full mode still fails to engage on win32/x64 node 20.x, that's a fresh bug and this can be reopened with the degrade output.ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
请报告者用 ≥v0.1.204 复测(存储收尾第二波 #3901 的 A3 项)。
你报的失败机制(引擎自下载单源不可达 → win32 + Node 20 停在 legacy-only)已在 master 修复并核实:
registry.npmjs.org → registry.npmmirror.com,每源独立 60s 预算、每源 sha512 pin、全失败才进 6h cooldown 且 reason 枚举尝试过的源(src/storage/engine-bootstrap.ts);node:sqlite直通 full 模式,彻底不需要下载;复测步骤:更新到 ≥v0.1.204(或直接把 Node 升到 22.5+),重启 bili,看启动日志里
[storage]是否还有unified sidecar failed to open ... staying legacy-only;web 面板 diagnostics 的 degrade reason 应为空。若仍降级,把完整 degrade 输出贴回来重开本单。ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
已对 master(5121f45f8)逐条核实。三条加固都在,其中一条缺回归测试——已顺手补上:
① 多镜像回退 ✓
src/storage/engine-bootstrap.ts:359-378:按序走镜像(配置的 registry 优先,再 npm canonical → npmmirror),单镜像失败记 "trying next mirror",全耗尽时错误带(tried mirrors: …)。三个场景都有测试钉住:回退成功 / 耗尽列全镜像 / 配置源优先(tests/storage-engine-bootstrap.test.ts:817/843/872)。② 缓存副本不可加载 → 删除 + 钉死重下 ✓
engine-bootstrap.ts:226-242(#3135-5):cacheUsable 通过但加载失败 → 删目录、落回一次 sha512 钉死的重下。测试在 line 372("#3818 unloadable cached copy is removed…")。③ 下载成功但注册失败 → failed + cooldown ✓(原先没有测试)
engine-bootstrap.ts:262-270(commit 11e5bda):字节落盘但引擎加载不了 → status=failed(detail=post-download registration failed)+ 置 6h cooldown,不谎报downloaded。但该 commit 只改了 +10/-1 行、无配套测试,tests/ 全库检索确认缺失。若此路径回归,面板会显示 downloaded 而实际静默 legacy-only——正是 #3788 这类报告的盲区。已当场修:PR #3930(记录 issue #3929,带来源标记)补一条 hermetic 测试(sha512 合法但 lib/index.js require 即抛错的 tarball → 断言 failed + marker 写入 + 下一轮 cooldown 门控零重下载),本地定向 31/31 + typecheck 干净,等 CI。另核实:默认 unified 模式已翻转为 full(#3818;
src/knobs.ts:759未设置时返回 "full")——该机器没设 storage.unified,所以引擎一旦可用,effective 就是 full,与你的预期一致。关于「retest」:我够不到 @bjssliu 的 Windows 机器,无法字面复测。替代做了本地 hermetic 仿真(Linux):seam 模拟「无 node:sqlite + 无宿主 better-sqlite3」+ mock registry/镜像,把下载成功、镜像失败回退、注册失败、cooldown 门控全部路径跑绿。逻辑层面验证通过;win32 特有因素(AV 隔离、企业代理、出口网络)只能真机验。新版发出后请用户:等自动更新(
bili --version确认),重跑同一份诊断、贴 storage 段过来;effective 仍为 legacy 就带 degrade 输出按新 bug reopen。上一轮 P1–P4 决策项现状(如实报):
CooldownMarker还是{atMs, reason}(engine-bootstrap.ts:142-145),旧版本写入的 marker 仍能压住新版本的改进重试;八问(决策请求版):
请拍板两件事:① 批准一个包含上述加固的新版(≥v0.1.203)以解锁真机复测;② P1/P4 关单还是继续(继续的话我按一个 follow-up PR 实现,不拆片)。
ranxianglei commentedon Oct 20, 2026
(ai: vllm-qwen/qwen3.8-27b)
登记本家族新子机制条目:index.db 文件本身损坏(与引擎下载失败主线、#3823 win32 CANTOPEN 均不同机制)。
.corrupt-<ts>,永不删除、留作取证)+ 立即开新索引;非 corruption 类(CANTOPEN/权限/无引擎等)降级路径逐字节不变。Closes SQLite unified storage degraded to legacy-only (bili v0.1.202, node v24.21.0, darwin-x64) index.db corrupted | SQLite unified storage degraded to legacy-only (bili v0.1.202, node v24.21.0, darwin-x64) index.db损坏 #3959。ranxianglei commentedon Oct 20, 2026
The engine tiering just landed on master (#3963, from @zypNB123's #3896): Node 20 no longer depends on the v13-only artifact — it now resolves a pinned better-sqlite3 v12.9.0 with ABI-matched prebuilds (same unified-storage lane, no legacy degrade), and any runtime no artifact can serve is refused before load instead of crashing.
Could you retest on the next release (≥ 0.1.204) with the same Node v20.19.5 and report whether the sidecar comes up (
/__bili/status→storage→effective mode)? If it still degrades, the new diagnostics will name the exact artifact/ABI that failed to resolve — that detail will pin the remainder.docs: drop stale duplicate storage rows from generated config referen…
docs: drop stale duplicate storage rows from generated config referen…