mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-04 00:03:59 +00:00
refactor: migrate built-in plugins to SDK-only interface
- Six-phase plan complete: webui/cli/healthcheck/pluginmgr/clawhubadapter now interact with the kernel exclusively via internal/sdk interfaces; all Configure() calls and package-level global injection removed - buildSDK in internal/plugin/registry.go is the single assembly point - Add internal/sdk/events.go exporting event types/constants - Fix ProviderManager cooldown sharing: LuaAdaptedProvider.Name() now returns the source name instead of lua_<adapter>, so multiple sources sharing an adapter (single script load via shared VM AdapterCache) no longer share failure-cooldown state - Verified: build/vet/tests green, deployed to homeagent.service with full plugin capability testing via local OpenAI-compatible mock
This commit is contained in:
@ -10,7 +10,6 @@ import (
|
||||
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge"
|
||||
"gitcode.com/JianFeeeee/HomeAgent/internal/memory"
|
||||
doc "gitcode.com/JianFeeeee/HomeAgent/internal/memory/document"
|
||||
"gitcode.com/JianFeeeee/HomeAgent/internal/plugin"
|
||||
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk"
|
||||
)
|
||||
|
||||
@ -34,16 +33,28 @@ func (tc *toolCapture) RegisterTool(name string, def sdk.ToolDef, handler sdk.To
|
||||
func (tc *toolCapture) RegisterStage(stage sdk.Stage, handler sdk.StageHandler) {}
|
||||
func (tc *toolCapture) RegisterAPI(name string) error { return nil }
|
||||
|
||||
func setupPlugin() (*Plugin, *toolCapture, error) {
|
||||
sh := agentCore.NewStageHost()
|
||||
iom := agentIO.NewIOManager()
|
||||
pr := plugin.NewRegistry()
|
||||
func newTestSDK(cfg sdk.SDKConfig) *sdk.PluginSDK {
|
||||
if cfg.Settings == nil {
|
||||
cfg.Settings = sdk.NewSettings("healthcheck", nil)
|
||||
}
|
||||
if cfg.Tool == nil {
|
||||
cfg.Tool = sdk.NewTool(agentCore.NewStageHost(), agentIO.NewIOManager())
|
||||
}
|
||||
return sdk.New("healthcheck", cfg)
|
||||
}
|
||||
|
||||
Configure(sh, iom, pr, nil, nil, nil, nil, nil)
|
||||
p := New("healthcheck")
|
||||
func setupPlugin() (*Plugin, *toolCapture, error) {
|
||||
return setupPluginWith(sdk.SDKConfig{})
|
||||
}
|
||||
|
||||
func setupPluginWith(cfg sdk.SDKConfig) (*Plugin, *toolCapture, error) {
|
||||
tc := newToolCapture()
|
||||
sdk := sdk.New("healthcheck", sdk.SDKConfig{RegTool: tc.RegisterTool, RegStage: tc.RegisterStage, RegAPI: tc.RegisterAPI})
|
||||
if err := p.Start(sdk); err != nil {
|
||||
cfg.RegTool = tc.RegisterTool
|
||||
cfg.RegStage = tc.RegisterStage
|
||||
cfg.RegAPI = tc.RegisterAPI
|
||||
p := New("healthcheck")
|
||||
s := newTestSDK(cfg)
|
||||
if err := p.Start(s); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
return p, tc, nil
|
||||
@ -185,15 +196,8 @@ func TestHealthcheckWithMemory(t *testing.T) {
|
||||
}
|
||||
defer memDB.Close()
|
||||
|
||||
sh := agentCore.NewStageHost()
|
||||
iom := agentIO.NewIOManager()
|
||||
pr := plugin.NewRegistry()
|
||||
|
||||
Configure(sh, iom, pr, memDB, nil, nil, nil, nil)
|
||||
p := New("healthcheck")
|
||||
tc := newToolCapture()
|
||||
sdk := sdk.New("healthcheck", sdk.SDKConfig{RegTool: tc.RegisterTool, RegStage: tc.RegisterStage, RegAPI: tc.RegisterAPI})
|
||||
if err := p.Start(sdk); err != nil {
|
||||
_, tc, err := setupPluginWith(sdk.SDKConfig{Memory: sdk.NewGraphMemory(memDB)})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@ -228,15 +232,8 @@ func TestHealthcheckWithKnowledge(t *testing.T) {
|
||||
}
|
||||
defer ks.Stop()
|
||||
|
||||
sh := agentCore.NewStageHost()
|
||||
iom := agentIO.NewIOManager()
|
||||
pr := plugin.NewRegistry()
|
||||
|
||||
Configure(sh, iom, pr, nil, ks, nil, nil, nil)
|
||||
p := New("healthcheck")
|
||||
tc := newToolCapture()
|
||||
sdk := sdk.New("healthcheck", sdk.SDKConfig{RegTool: tc.RegisterTool, RegStage: tc.RegisterStage, RegAPI: tc.RegisterAPI})
|
||||
if err := p.Start(sdk); err != nil {
|
||||
_, tc, err := setupPluginWith(sdk.SDKConfig{Knowledge: sdk.NewKnowledge(ks)})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@ -282,15 +279,8 @@ func TestHealthcheckWithDocStore(t *testing.T) {
|
||||
}
|
||||
defer ds.Stop()
|
||||
|
||||
sh := agentCore.NewStageHost()
|
||||
iom := agentIO.NewIOManager()
|
||||
pr := plugin.NewRegistry()
|
||||
|
||||
Configure(sh, iom, pr, nil, nil, ds, nil, nil)
|
||||
p := New("healthcheck")
|
||||
tc := newToolCapture()
|
||||
sdk := sdk.New("healthcheck", sdk.SDKConfig{RegTool: tc.RegisterTool, RegStage: tc.RegisterStage, RegAPI: tc.RegisterAPI})
|
||||
if err := p.Start(sdk); err != nil {
|
||||
_, tc, err := setupPluginWith(sdk.SDKConfig{DocMemory: sdk.NewDocMemory(ds)})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@ -340,11 +330,4 @@ func TestLLMReportCollection(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfigureNilStageHost(t *testing.T) {
|
||||
Configure(nil, nil, nil, nil, nil, nil, nil, nil)
|
||||
if hcStageHost != nil {
|
||||
t.Fatal("expected hcStageHost to be nil")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user