refactor: 收拢插件运行时边界并修复设置、记忆与诊断链路 - #216
Merged
Merged
Conversation
删除任务级请求上限和永久熔断,保留每块一次生成与一次格式修复。按成功 Timeline 页保存游标,失败后由后续历史事件重新判断,沿用来源幂等保护部分写入。相关 44 项回归和文档检查已通过。
由 Python 宿主投影控件和展示值,删除 Rust 与前端的重复业务校验。坏字段和动作局部省略,失效依赖只读,合法中文名称和未知展示属性不再拖垮设置页。保留调用身份、传输结构和写入校验,并接入真实插件进程回归。相关 Python、前端及 Rust 设置测试已通过。
模块 URL 按路径段编码,在读取边界解码一次,保留包内路径、模块类型及 generation 和 binding 校验。正式协议处理方法覆盖中文、空格文件名及越界请求回归。 验证:macOS 上 9 项 visual_resources 测试及文档检查通过;未运行真实 WebView 或跨平台 CI。
动作返回完整插件状态时只投影有效控件,单个坏值局部回退并保留原因,未返回的字段不覆盖草稿。动作身份、回调归属及未知写入参数的拒绝逻辑保持有效。 验证:真实隔离插件回归先复现动作执行后整体失败,修复后相关 Python 测试 53 项通过,1 项 Windows 专用测试跳过;文档检查通过。
移除顶层八字段及详情二十四字段的重复截断,沿用总节点、字节和嵌套预算。原始异常文本独立保留,截断标记不重复占用节点,敏感字段的遮盖结果正常计数。修正 SDK 日志示例的 fields 关键字参数。 验证:真实 GPT-SoVITS 失败链、重复清洗、文件落盘及本地 HTTP 遥测回归通过,34 项 Rust 日志测试和原始异常链回归通过。新增遥测测试的退出断言曾因测试持有日志引用失败,补充释放该引用后通过;未修改生产遥测生命周期,未运行跨平台 CI。
直连重定向通过真实 HTTP 夹具验证单次 DNS 解析与私网阻断,保留代理域名透传回归。条件隐藏的非法类型由 Python 宿主局部隔离,移除 Rust 和前端已迁移的重复语义断言。
CI 34965392788 的三项失败来自夹具缺少 Runtime 调用者身份,统一日志返回 LOG_CALLER_REQUIRED 后跳过输出检查与取消。补齐身份、TTS 元数据和 attributes.event 断言,让转换进程等待日志读取确认,取消分支保持运行直至终止。原缺陷本地三项均失败,修复后 Genie 25 通过、3 跳过,全量 Python 1328 通过、41 跳过。
CI 34966222293 读取到已创建但尚未写入的空 PID 文件,异常清理又跳过 HTTP 服务线程,导致 pytest 退出挂起。PID 写完后原子发布;失败时释放 MCP 启动门并保证所有清理分支执行。确定性回归让旧发布方式失败,故障注入验证原始异常和进程线程回收,MCP 四项测试通过。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
改动
插件的单个坏控件或可选视觉模块此前会拖垮整份设置或插件能力,设置动作也会把展示补丁当成完整快照校验。本次将展示规则集中到 Python 宿主,局部隔离无效字段和可选能力,并保留写入、调用身份与资源授权边界。
以 main@0084607 为基线,保留 #212 的角色 Runtime 复用、条件隐藏和搜索服务,#213/#214 的旧数据迁移与 Windows SQLite 修复,以及 #215 的资源上限和气泡提示改动。open-plugin-ecosystem 保持原状,待后续单独整合。
验证
最终提交
420dc59b的 CI 34967797758 全部 7 项通过,包含 Windows、macOS、Linux 原生检查。Python 全量为 1330 passed、41 skipped,前端为 457 passed。本地 docs profile、Rust formatting、git diff --check,以及设置、视觉资源、日志、遥测、角色切换、旧数据迁移相关回归通过。本地角色切换初次报
deterministic_runtime,原因是工作树 Runtime 软链接越出当前受控根;使用工作树内独立 Runtime 后 6 项通过,验证结束已恢复原软链接。未执行真实模型、真实 WebView 窗口和安装包手动验收。
CI 失败与修复
首轮 34965257441 因推送重定向夹具修复自动取消,Python 日志只有取消记录。以下两轮实际失败均保留并修复,未用重跑替代调查。
Genie 诊断夹具
34965392788,attempt 1,Ubuntu/Python 3.12,提交
0faa7bbf:1325 passed、41 skipped、3 failed。失败为test_conversion_events_reach_core_bridge_and_live_converter_log的 finished/failed/cancelled 分支;原始断言为找不到converter active,以及DID NOT RAISE OperationCancelled。夹具直接调用诊断服务,缺少真实 Runtime 提供的调用者身份,统一日志返回
LOG_CALLER_REQUIRED;Genie 的日志隔离吞掉回调错误,测试回调余下的输出检查和取消操作均未执行。夹具还沿用旧顶层事件断言。修复补齐并复位调用者及 TTS 元数据,检查
runtime.message和attributes.event。转换子进程等待明确的日志读取确认后结束,取消分支保持运行直至被终止,去掉固定等待 0.15 秒的竞态。本地原三项确定失败,修复后 Genie 全文件 25 passed、3 skipped,后续两轮 Ubuntu 全量验证均通过这三项。MCP PID 发布与异常清理
34966222293,attempt 1,Ubuntu/Python 3.12,提交
0a5bc6c1:1327 passed、41 skipped、1 failed。test_real_core_mcp_slow_start_is_non_blocking_and_shutdown_has_no_residue读取空 PID 文件,原始错误为ValueError: invalid literal for int() with base 10: '',随后报real chat Core Host required forced cleanup。测试两分钟已结束,但未关闭的非 daemon HTTP 服务线程使进程持续到步骤超时。该夹具与 main 相同,同一用例上一轮曾通过。根因是
write_text先创建文件再写入,读者只等exists()即读取;初始断言失败时还未释放 MCP 启动门,且_stop的异常跳过_stop_provider。修复用同目录临时文件写完后原子发布 PID。异常清理先释放启动门,用嵌套 finally 保证 Core 和 HTTP 服务均执行关闭。新增回归在文件创建但尚未写入时观察读者可见状态,旧实现确定失败(
[True] != [False]);故障注入验证原始异常保留、Core/MCP 子进程和 HTTP 服务线程全部退出。MCP 本地 4 项通过,最终 Ubuntu 全量作业正常退出。没有延长测试或 CI 期限、放宽断言或添加自动重试。