feat: 增强插件管理和日志处理,兼容旧版参数,优化 UDS 路径处理

This commit is contained in:
DrSmoothl
2026-03-12 23:34:07 +08:00
parent d14eb48051
commit 6bac2b9331
6 changed files with 90 additions and 28 deletions

View File

@@ -296,8 +296,10 @@ class PluginSupervisor:
# 重新生成 session token防止被终止的旧 Runner 重连
self._rpc_server.reset_session_token()
# 清理旧的组件注册,防止幽灵组件残留
self._clear_runtime_state()
# 注意:不在此处调用 _clear_runtime_state()。
# 旧组件在新 Runner 完成注册前继续提供服务,避免热重载窗口期内
# dispatch_event / execute_workflow 找不到任何组件导致消息静默丢失。
# ComponentRegistry.register_component 对同名组件是覆盖式写入,安全。
# 拉起新 Runner
try:
@@ -315,6 +317,13 @@ class PluginSupervisor:
self._rebuild_runtime_state()
return
# 新 Runner 健康且已完成组件注册,现在清理旧的幽灵组件
# 只移除不再存在于新注册表中的旧插件组件
for old_pid in list(old_registered_plugins.keys()):
if old_pid not in self._registered_plugins:
self._component_registry.remove_components_by_plugin(old_pid)
self._policy.revoke_plugin(old_pid)
# 关停旧 Runner
if old_process and old_process.returncode is None:
try:
@@ -451,6 +460,8 @@ class PluginSupervisor:
try:
self._clear_runtime_state()
# 重新生成 session token防止旧 Runner 僵尸进程用旧 token 重连
self._rpc_server.reset_session_token()
await self._spawn_runner()
except Exception as e:
logger.error(f"Runner 重启失败: {e}", exc_info=True)