Files
FreeCADWasmDev/docs/current/unattended-efficiency-v15.md
wangdequan 9a7c4f0335 Save FreeCAD Web workspace sources and user validation evidence
IFC native binding remains incomplete; preserve accurate test results.
2026-09-15 22:01:58 +08:00

2.4 KiB
Raw Blame History

无人值守效率优化 v15

本轮基线

docs/current/efficiency-current.md 覆盖最近 20 个周期(4770 附近):

  • provider/stream-wait:262.1 秒,占 29.9%,6 个周期,平均 43.69 秒。
  • agent/initial-decision:238.5 秒,占 27.2%,86 次,平均 2.77 秒。
  • agent/post-read:203.2 秒,占 23.2%,14 次,平均 14.51 秒。
  • agent/idle-stop:74.5 秒,占 8.5%,1 次;对应一次无进展回合的延迟收口。
  • 20 周期中只有 1 个新业务结果,9 个恢复周期,恢复耗时 384.2 秒。

命令和源码读取本身只有 1.2 秒,占 0.1%;瓶颈是外部断流等待和模型在已知无进展状态下重复决策,不是本地搜索或构建。

已实施

  • 断流错误后的无命令等待窗口默认从 45 秒降为 25 秒。活动命令仍不会被打断;环境变量 FREECAD_PROVIDER_NO_PROGRESS_SECONDS 可覆盖。
  • 提供方连续失败退避增加 60 秒上限,避免 80、160、300 秒的无效空档;FREECAD_PROVIDER_BACKOFF_MAX_SECONDS 可覆盖。
  • 模块连续无进展阈值从 6 次降为 3 次,达到阈值后进入模块冷却并重新规划;环境变量 FREECAD_MODULE_NO_PROGRESS_LIMIT 可覆盖但最低为 3。
  • 已有至少 2 次无进展、恢复级别或当前批次静态 readiness 全部缺失时,业务回合最多读取 2 个源码片段、硬上限 4 个,并将空闲收口限制为 45 秒。正常业务回合参数不变。
  • 继续保留“已完成修改立即进入外层构建/验收”的路径和所有可复用业务证据;没有修改或实际结果的回合不会增加完成计数。

验证

  • python3 -m unittest tools/test_scheduler_performance.py tools/test_unattended_scheduler.py tools/test_scheduler_efficiency.py tools/test_scheduler_business_recovery.py:115 项通过。
  • python3 -m py_compile tools/run_freecad_web_scheduler.py tools/scheduler_progress.py:通过。
  • 既有 Draft 四条业务证据复用:首次 4.874 秒,复用 0.221 秒,减少 95.47%;该优化继续有效。

预期运行行为

外部服务正常时,业务实现与验收流程不变。发生断流时,本地会更快进入退避;同一模块连续无进展时会更快冷却并换取下一组业务,避免无人值守空转。后续状态以 show_freecad_web_scheduler.py 的新周期实测为准,不把节省量提前计入业务完成进度。