mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-01 06:47:29 +00:00
老大要求「把 timer 移到外部插件,移除内核的内置 timer」。本次只做内核侧 的**摘除**,插件本体在外部工程(plugins/timer → .hmap 安装)。 timer 原先由 internal/plugins/timer 的 init() 注册进编译期工厂表。 后果是改一行定时器逻辑要重编整个 homed(87MB)并重启内核——而它恰是 最该独立演进的部件:有自己的持久化状态、触发语义、并发模型,却被绑死 在主进程的发版节奏上。 搬出来后:换实现只需重装插件 + 重启单个插件进程;插件崩了自己被拉起, 不影响 agent 主循环。 1. 删除 internal/plugins/timer(plugin.go + plugin_test.go) 2. internal/plugins/all.go 去掉该 import,并写明**不要加回去**的原因 3. internal/plugins/integration_test.go 的 expectedTools 去掉 timer_set TestIntegrationAllPluginsRegister 的语义是「编译期内置插件是否都注册了工具」, 它走的是本地装配(setupIntegration 只加载 internal/plugins 下的内置包)。 timer 搬走后不再参与这个进程的装配,留在列表里只会造出永远绿不了的假失败。 真正不该省的是验证:外部插件的工具是否真注册成功,靠装完 .hmap 后实调 timer_set / timer_list / timer_cancel 来确认(见交付报告)。 - 配置表:外部插件同用 config_<name> ⇒ config_timer,老值 max_duration / pending_timers 直接读回,老大已设的定时器无需迁移 - 工具名:timer_set / timer_list / timer_cancel 不变,模型侧零感知 - 注入源与通道:source/channel 仍是 "timer" - 注入级别:内置插件可声明 L4,外部插件被夹到 L3;本插件本就要 L3, 故行为等价 StageHost.RegisterTool 对同名工具返回 `already registered`,而插件注册是 批量失败(新实例的工具一个都注不上)。所以必须**先装新内核**(不含内置 timer)再装外部 timer 插件,反之会撞名。 (cherry picked from commit f584776f23c3bfd8fb2892155e6018a1ec57eac0)