30895cd306
ToolSpec 五个字段加构造期校验(空名字、非映射 parameters),parameters 深拷贝一份存下来 ——不拷贝的话调用方在别处改那个字典会连带改掉模型看见的 schema,而那次修改没有任何地方 记录得到。 ToolRegistry 是不可变值对象:注册顺序保留(工具清单要贴进提示词,而 restrict_to 收到的 常常是 set,照集合顺序输出会让同一份配置在不同进程里渲染出不同提示词);相等按内容判 不按身份判,供 RunRequest 那条一致性校验用;restrict_to 遇到不认识的名字直接报错, 不静默丢弃。 validate 校验的是 JSON Schema 的一个子集(必填键、additionalProperties: false 时的多余键、 顶层 type),子集边界写在 docstring 里。完整校验只能靠第三方库,而公共签名上不许出现 第三方类型。剩下那部分由工具自己报错,那是一条正常观察。 executor() 没写,缺口见 design/0008(待确认,要过人类门)。