mirror of
https://gitcode.com/JianFeeeee/homeagent-sdk.git
synced 2026-09-30 14:23:00 +00:00
## 问题
mocksdk(yaegi 解释执行时的替身 SDK)的 ToolDef 只有 6 个字段,
公共 SDK 已有 10 个 —— 缺 RecallPolicy / ParallelSafe / Serial。
★ 危害不在编译期,而在**调试期**:插件作者用 hmapdev 在本地解释执行时,
写了 ParallelSafe:true 照常跑、不报错;直到编译安装后才发现声明根本没
被内核读到。这类不一致不会让任何现有测试失败。
这正是"黑名单不会自动跟上新执行能力"的又一次复现:主 SDK 每加一个声明项,
替身不会自动跟上。
## 修复
① mocksdk/plugin.go 补齐 RecallPolicy / ParallelSafe / Serial 三个字段,
注释写明"主 SDK 先加、mocksdk 没跟上"这段历史,避免后人再漂移。
② 新增 yaegi/mocksdk/parity_test.go:
- TestMockSDKToolDefMatchesSDK 比对**字段名**集合,双向都查
(少字段 = 声明静默失效;多字段 = 替身比本体还多,必有一方理解错了)
- TestMockSDKToolDefTypesMatch 比对**字段类型**,逐个断言
★ 归一化必须抹掉所有空白:gofmt 打印 "interface{}" 而反射给
"interface {}",这是打印格式差异。我第一版没抹空白,
结果每个复合类型都被误报成"类型不符" —— 判据自己制造假警报。
判据放在 tools/hmapdev 模块内(它是独立 module,主模块不包含它),
跑法:cd tools/hmapdev && go test ./yaegi/mocksdk/