mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-11-06 01:07:35 +00:00
feat(sdk): 受限事件总线的内核实现 + clawhubadapter 改用它
- internal/sdk/events.go:实现 pubsdk.EventsAPI
· publishAllowed:白名单精确匹配 或 本插件命名空间 plugin.<name>.<后缀>
· subscribeAllowed:只开只读事件(tools_ready/security_ready/device_ready)
· 载荷出向经 security.PrepareOutbound(明文→@{别名}),入向经 ScrubInbound
· 键数上限 64;越界**报错**不静默
· Source 由 SDK 固定成插件名(插件不能冒名)
- PluginSDK.Events() 访问器
- clawhubadapter 的 skill_detected 改走 s.Events().Publish,不再 import internal/events
⇒ 它为外部化的唯一阻塞项(事件发布)已消除
判据(internal/sdk/events_test.go,6 条):
白名单放行 / 越界拒绝(raw_input、agent_output、update_request、stage、system、
别的插件命名空间、空类型)/ 自己命名空间放行 / 订阅越界拒绝 / 载荷凭据被替换成别名 / 键数上限
This commit is contained in:
@ -179,6 +179,7 @@ type PluginSDK struct {
|
||||
|
||||
iom *agentIO.IOManager
|
||||
eventBus *events.Bus
|
||||
events pubsdk.EventsAPI
|
||||
logger *log.Logger
|
||||
pluginMgr PluginManager
|
||||
|
||||
@ -198,7 +199,13 @@ func (s *PluginSDK) PluginMgr() PluginManager { return s.pluginMgr }
|
||||
|
||||
// 以下访问器遮蔽公共 SDK 的同名方法,返回内置插件可用的全量接口。
|
||||
|
||||
func (s *PluginSDK) Settings() SettingsAPI { return s.settings }
|
||||
func (s *PluginSDK) Settings() SettingsAPI { return s.settings }
|
||||
|
||||
// Events 返回**受限**事件总线(可 nil:未接总线时)。
|
||||
//
|
||||
// 与直接拿 *events.Bus 的区别:只能发布白名单类型或自己的命名空间
|
||||
// (`plugin.<name>.*`),载荷出向经 security 过闸,订阅只开只读事件。
|
||||
func (s *PluginSDK) Events() pubsdk.EventsAPI { return s.events }
|
||||
func (s *PluginSDK) Memory() MemoryAPI { return s.memory }
|
||||
func (s *PluginSDK) TextMemory() TextMemoryAPI { return s.textMem }
|
||||
func (s *PluginSDK) DocMemory() DocMemoryAPI { return s.docMem }
|
||||
@ -383,6 +390,7 @@ func New(name string, cfg SDKConfig) *PluginSDK {
|
||||
|
||||
iom: cfg.IOManager,
|
||||
eventBus: cfg.EventBus,
|
||||
events: newEventsAPI(name, cfg.EventBus),
|
||||
logger: log.Default(),
|
||||
pluginMgr: cfg.PluginMgr,
|
||||
|
||||
|
||||
Reference in New Issue
Block a user