工具反射发现机制与参数签名强转
解密 model_tools.py 调度器与 tools/registry.py 的内省强转自愈
📊 图 3-1-1:ToolRegistry 类图、反射内省与参数类型强制转换 UML 结构图
🛠️ 1. 动态工具发现 (discover_builtin_tools)
系统不需要硬编码任何工具列表,而是在启动时自动扫描 tools/ 文件夹下所有带有装饰器的 Python 文件。该机制位于 tools/registry.py 中:
通过 Python ast.parse() 对文件头部进行静态解析,检查是否存在 registry.register 的调用。如果是,再调用 importlib.import_module() 将其引入。
📊 图 3-1-2:参数签名反射内省与参数转换流程图
⚙️ 2. 类型强转与自愈 (Parameter Coercion)
大模型常会把数值型(如 120)参数以 JSON 字符串形式("120")传递,或者在需要 float 时给出整型。在 model_tools.py 中,类型强转引擎(TypeCoercionEngine)会自动读取目标 Python 函数的 inspect.signature 和类型提示(Type Hints)进行强制类型转换。