You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
bili omp 内保存的设置下次启动必丢:生成文件 config.yml 跳过 overlay→real 合并且每次启动从真实 home 无条件重生成(08-31 尚有冲突化石安全网,#449 后回归) #531
Activity
ranxianglei commentedon Sep 4, 2026
[bot] 🏷
Triage 完成,根因确认,开始修复。
已对 master(v0.1.83)代码逐行核实,你的根因链完全成立:
src/launcher.ts:1307—config.yml在生成文件列表(#449);src/launcher.ts:873—refreshOverlayHome对生成文件直接continue,overlay→real 的 merge-back(mergeOverlayEntrymtime-newer-wins +.bili-conflict化石保全,:1029–1046)对它完全不生效;src/launcher.ts:1355→writeOmpCompactionDisabledConfig(:1250–1293)每次启动只读真实 home、经原子 rename 无条件重写覆盖层config.yml——你在覆盖层里的编辑被整体覆盖。确认是 #449 的回归:#449 之前
config.yml走普通 merge-back(所以 08-31 的分叉留下config.yml.bili-conflict化石);#449 之后它变成"只出不进"的单向文件。修复方案(采用你的第二方案"恢复 merge-back"并增强;不采用 baseline 三方合并,理由见下):
config.yml做注入感知的 merge-back:精确撤销 bili 注入的compaction.enabled: false(真实文件若自带enabled:行则按字节恢复该行——你自己在真实配置里设的enabled: false不会被误剥;bili 整块追加的空壳连同compaction:头一起塌掉)。未做任何编辑时,剥离后内容与真实文件字节一致 → 零写入、零 mtime 漂移、零化石;.bili-conflict化石(恢复 08-31 安全网,覆盖你的回归用例③-b);.bili-launch.pid显示另一个 bili omp 仍存活时,跳过覆盖层config.yml重生成并显式 warn(运行中会话的设置不被踩掉);merge-back 照常执行(编辑尽早落回真实 home,更抗崩溃);config.yml:该文件的 per-launch 内容只有可剥离的compaction注入,不含代理 URL(那些在models.yml),因此不触碰 真实 models.yml 可被塞进死端口代理地址且永不解包:"real file never touched" 前提被嵌套 merge-back 递归与遗留插件写破,裸 omp 永久拨死号 #410"生成文件不得把代理地址写回真实 home"的红线;pi/hermes/dsh 的生成文件携带 per-launch 代理 origin,不纳入本票。为什么不采 baseline 三方合并(你的第一方案):键级 diff 需要 YAML 解析器,与 #449 明确定的"line-based、不引入 YAML 依赖、保持零运行时依赖"约束冲突;baseline 文件本身还引入损坏/版本漂移等新失败面。merge-back 路线复用 #449 之前生产验证过的成熟语义,diff 小、失败模式少。已知残留边界(会写进代码注释):真实配置被并发编辑、且 mtime 判负、且 omp 序列化器丢弃未知键——三者交集概率极低,常见并发场景由化石兜底。
现在开始实现,回归测试将覆盖你验收标准③的两例 + 幂等无漂移 + 并发启动跳过。完成后回帖 PR 链接。
次要观察(不混入本票):你说的 agent.db MRU tie-break / resume 沿用会话模型属 omp 设计,同意不在此处理。
ranxianglei commentedon Sep 4, 2026
[bot] 🏷
**修复完成 → PR: https://github.com/ranxianglei/billion-context/pull/533**(分支
2026-09-04_omp-overlay-config-merge-back,commitba4d7ab)实现内容(与回帖方案一致)
src/launcher.ts(+167 行):stripOmpCompactionInjection是mergeOmpCompactionDisabledYaml的精确逆运算——撤销compaction.enabled: false注入;真实文件若自带enabled:行则按字节抄回(你自己在真实配置里写的enabled: false不会被误剥);bili 整块追加的空壳连同compaction:头一起塌掉。未编辑时剥离后与真实文件字节一致 → 纯 no-op(零写入、零 mtime 漂移、零化石)。.bili-conflict化石(08-31 安全网回归,覆盖验收③-b)。refreshOverlayHome覆写标记之前读取;另一个bili omp存活时跳过config.yml重生成并显式 warn("skipping the config.yml regeneration…"),运行中会话的设置不被踩;merge-back 照常执行(编辑尽早落回真实 home)。config.yml不含 per-launch 代理内容(那在models.yml),merge-back 不可能把代理 URL 写回真实 home。pi/hermes/dsh 的生成文件刻意不动。测试(7 个新用例,tests/launcher.test.ts)
.bili-conflict化石(③b)enabled: true按原样恢复config.yml且不带注入块Pre-flight
npm run typecheck✅npm test:1038/1039——唯一失败项(resolveClientCommand: codex/claude resolve to themselves)在本沙箱的 pristine master 上同样失败(沙箱装了/usr/bin/codex,环境相关),与本变更无关npm run build✅已知残留边界(已写进代码注释)
真实配置被并发编辑 + mtime 判负 + omp 序列化器丢弃未知键——三者同时成立才会静默丢键,概率极低;常见并发场景由化石兜底。若你后续观察到 omp 持久化会丢自定义键,建议单开一票处理(那属于 omp 侧行为)。
请 review;合并需人工操作。
ranxianglei commentedon Sep 5, 2026
已随 #535 重新设计修复并合并 master(e3abc16,PR #536 + #543):omp/pi/hermes 的 overlay 机制整体废除——
bili omp现直接运行真实~/.omp/agent,URL 重写经BILI_PROVIDER_REWRITESmanifest + 扩展registerProvider/setModelrepin 注入,compaction 取消经session_before_compactcancel 注入,不再生成/重生成 config.yml,也不再存在 overlay→real 合并路径。症状根因(
generated: ["config.yml"]跳过 merge-back + 每次启动无条件重生成)随 overlay 一起消失:会话内保存的全局配置直接落真实 home,下次启动必在。验证:安装版实机冒烟(omp 一次对话经代理 forward,
~/.omp/agentmtime 不变、无agent-bili新建);CI ubuntu/windows 全绿。残留:dsh 仍走旧 overlay(
DSH_HOME=~/.dsh-bili+ settings.yaml 每次重生成),同家族症状在 dsh 上仍可复现——继续在 #535 phase 4 跟踪(伞 issue 保持 open 直到 dsh 迁移完成)。closes #531
fix(launcher): merge omp overlay config.yml edits back into real home (…