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:
root
2026-08-01 12:17:17 +08:00
parent 512777e27d
commit 57712f220b
47 changed files with 1515 additions and 1137 deletions

View File

@ -8,18 +8,12 @@ import (
"sort"
"strings"
"sync"
sdk "gitcode.com/JianFeeeee/HomeAgent/internal/sdk"
)
type Skill struct {
Name string `json:"name"`
Description string `json:"description"`
Version string `json:"version"`
Author string `json:"author,omitempty"`
Entry string `json:"entry,omitempty"`
Source string `json:"source,omitempty"`
Enabled bool `json:"enabled"`
RawContent string `json:"-"`
}
// Skill 已迁入内置 SDK,此处保留别名以兼容现有调用方。
type Skill = sdk.Skill
type Manager struct {
mu sync.RWMutex
@ -195,6 +189,9 @@ func (m *Manager) GetInjectedPrompt() string {
return strings.Join(parts, "\n\n")
}
// Manager 直接满足内置 SDK 的 SkillAPI(复用优先,无需独立适配器)。
var _ sdk.SkillAPI = (*Manager)(nil)
func extractDescription(content string) string {
lines := strings.Split(content, "\n")
for _, line := range lines {