@@ -724,13 +724,16 @@ def validate_plugin_spec(plugin: PluginSpec) -> None:
724724 )
725725
726726
727+ # TODO: 解决插件名相同可能导致的问题,真有那么一天我们sdk小团体也是好起来了
727728def discover_plugins (plugins_dir : Path ) -> PluginDiscoveryResult :
728729 """扫描目录发现所有插件。"""
729730 plugins_root = plugins_dir .resolve ()
730731 skipped_plugins : dict [str , str ] = {}
731732 issues : list [PluginDiscoveryIssue ] = []
732733 plugins : list [PluginSpec ] = []
733734 seen_names : set [str ] = set ()
735+ # TODO: 改用 dict 记录 name -> plugin_dir 映射,以便在重复时报错时显示冲突路径
736+ seen_name_sources : dict [str , Path ] = {} # plugin_name -> plugin_dir
734737
735738 if not plugins_root .exists ():
736739 return PluginDiscoveryResult ([], {}, [])
@@ -779,18 +782,21 @@ def discover_plugins(plugins_dir: Path) -> PluginDiscoveryResult:
779782 )
780783 continue
781784 if plugin_name in seen_names :
785+ existing_source = seen_name_sources .get (plugin_name , Path ("<unknown>" ))
782786 skipped_plugins [plugin_name ] = "duplicate plugin name"
783787 issues .append (
784788 PluginDiscoveryIssue (
785789 severity = "error" ,
786790 phase = "discovery" ,
787791 plugin_id = plugin_name ,
788792 message = "插件名称重复" ,
789- details = "duplicate plugin name" ,
793+ details = f"冲突的插件目录:{ existing_source } 与 { plugin .plugin_dir } " ,
794+ hint = "请修改其中一个插件的名称后重试" ,
790795 )
791796 )
792797 continue
793798 seen_names .add (plugin_name )
799+ seen_name_sources [plugin_name ] = plugin .plugin_dir
794800 plugins .append (plugin )
795801
796802 return PluginDiscoveryResult (
0 commit comments