Replies: 2 comments
|
我不是维护者,但在当前
因此不建议把检查直接删掉、把未知事件默认当作可忽略,或仅做 composition-local 注册。这三种快速修法都可能把可见的拒绝变成静默错误重放。 短期规避方式是:第三方插件不要把自有的必需状态写进第一方 Session log,先放到插件自有的持久化存储;当前 reader 拒绝时,支持定位的 backend 会在 长期我认为这个案例很适合推动一个明确的扩展契约,至少要区分两类事件:
对应回归测试也应覆盖完整的 append → flush → 进程重启 → cold load,而不只是内存中的 |
0 replies
|
我也遇到了同类问题,非常希望官方增加插件事件类型注册接口的功能。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
我在开发第三方插件(https://github.com/jiruidai/dsh-meta-orchestrator)时碰到的问题,任何按文档写自定义事件的插件都会踩中。
现象
插件用
SessionEventMap声明合并定义自己的事件类型,再用Session.append写入——运行时一切正常,但重启后这个会话就再也打不开了:assertEventsSupported(session-persistence/coordinator.ts)对白名单KNOWN_SESSION_EVENT_TYPES之外、且未标ignorable的事件直接抛SessionFormatUnsupportedError,拒绝加载整个日志;SessionEventMap成员生成,插件事件天然不在其中;Session.append没有任何途径给事件标ignorable。写入当下没有任何报错;等到重启后尝试恢复这个会话时,加载直接抛
SessionFormatUnsupportedError——整段对话历史无法再打开,也没有任何恢复手段。能修复下吗?
比如给插件事件类型加一个注册面,或者让
append支持ignorable(known-event-types.ts注释里也提到注册面 "deferred until such a consumer exists")。All reactions