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:
@ -21,43 +21,20 @@ type StatusProvider interface {
|
||||
GetKernelStatus() *KernelStatus
|
||||
}
|
||||
|
||||
// KernelStatus 内核各子系统运行状态的聚合快照。
|
||||
type KernelStatus struct {
|
||||
Uptime string `json:"uptime"`
|
||||
StartTime string `json:"start_time"`
|
||||
|
||||
AgentID string `json:"agent_id"`
|
||||
|
||||
Plugins []PluginInfo `json:"plugins"`
|
||||
Tools []sdk.ToolDef `json:"tools"`
|
||||
Channels []ChannelInfo `json:"channels"`
|
||||
|
||||
Memory MemoryStatus `json:"memory"`
|
||||
Knowledge KnowledgeStatus `json:"knowledge"`
|
||||
Documents DocumentStatus `json:"documents"`
|
||||
TextMemory TextMemoryStatus `json:"text_memory"`
|
||||
Social SocialStatus `json:"social"`
|
||||
Skills SkillsStatus `json:"skills"`
|
||||
|
||||
LLM LLMStatus `json:"llm"`
|
||||
|
||||
Context ContextStatus `json:"context"`
|
||||
|
||||
Runtime RuntimeStatus `json:"runtime"`
|
||||
|
||||
Tracker TrackerStatus `json:"tracker"`
|
||||
}
|
||||
|
||||
type PluginInfo struct {
|
||||
Name string `json:"name"`
|
||||
Loaded bool `json:"loaded"`
|
||||
}
|
||||
|
||||
type ChannelInfo struct {
|
||||
Name string `json:"name"`
|
||||
Type string `json:"type"`
|
||||
Ready bool `json:"ready"`
|
||||
}
|
||||
// 状态 DTO 使用内置 SDK 的中立类型,保证与插件层解耦。
|
||||
type KernelStatus = sdk.KernelStatus
|
||||
type PluginInfo = sdk.PluginInfo
|
||||
type ChannelInfo = sdk.ChannelInfo
|
||||
type MemoryStatus = sdk.MemoryStatus
|
||||
type KnowledgeStatus = sdk.KnowledgeStatus
|
||||
type DocumentStatus = sdk.DocumentStatus
|
||||
type TextMemoryStatus = sdk.TextMemoryStatus
|
||||
type SocialStatus = sdk.SocialStatus
|
||||
type SkillsStatus = sdk.SkillsStatus
|
||||
type LLMStatus = sdk.LLMStatus
|
||||
type ContextStatus = sdk.ContextStatus
|
||||
type RuntimeStatus = sdk.RuntimeStatus
|
||||
type TrackerStatus = sdk.TrackerStatus
|
||||
|
||||
func channelInfoFromIO(ch agentIO.ChannelInfo) ChannelInfo {
|
||||
return ChannelInfo{
|
||||
@ -67,61 +44,6 @@ func channelInfoFromIO(ch agentIO.ChannelInfo) ChannelInfo {
|
||||
}
|
||||
}
|
||||
|
||||
type MemoryStatus struct {
|
||||
Available bool `json:"available"`
|
||||
EntityCount int `json:"entity_count"`
|
||||
RelationCount int `json:"relation_count"`
|
||||
EntityTypes int `json:"entity_types"`
|
||||
}
|
||||
|
||||
type KnowledgeStatus struct {
|
||||
Available bool `json:"available"`
|
||||
ItemCount int `json:"item_count"`
|
||||
Items []string `json:"items,omitempty"`
|
||||
}
|
||||
|
||||
type DocumentStatus struct {
|
||||
Available bool `json:"available"`
|
||||
DocCount int `json:"doc_count"`
|
||||
VectorCount int `json:"vector_count"`
|
||||
}
|
||||
|
||||
type TextMemoryStatus struct {
|
||||
Available bool `json:"available"`
|
||||
FileCount int `json:"file_count"`
|
||||
}
|
||||
|
||||
type SocialStatus struct {
|
||||
Available bool `json:"available"`
|
||||
PersonCount int `json:"person_count"`
|
||||
}
|
||||
|
||||
type SkillsStatus struct {
|
||||
Available bool `json:"available"`
|
||||
SkillList []string `json:"skill_list,omitempty"`
|
||||
}
|
||||
|
||||
type LLMStatus struct {
|
||||
Available bool `json:"available"`
|
||||
Provider string `json:"provider,omitempty"`
|
||||
Sources int `json:"sources,omitempty"`
|
||||
}
|
||||
|
||||
type ContextStatus struct {
|
||||
EventCount int `json:"event_count,omitempty"`
|
||||
}
|
||||
|
||||
type RuntimeStatus struct {
|
||||
Goroutines int `json:"goroutines"`
|
||||
MemoryMB int64 `json:"memory_mb"`
|
||||
GoVersion string `json:"go_version"`
|
||||
}
|
||||
|
||||
type TrackerStatus struct {
|
||||
Available bool `json:"available"`
|
||||
Dir string `json:"dir,omitempty"`
|
||||
}
|
||||
|
||||
// collectKernelStatus 聚合内核各子系统状态快照。
|
||||
// 接收所有子系统引用(均为可选——nil 表示不可用),返回统一的状态报告。
|
||||
func collectKernelStatus(
|
||||
@ -300,3 +222,4 @@ func (a *Agent) GetKernelStatus() *KernelStatus {
|
||||
}
|
||||
|
||||
var _ StatusProvider = (*Agent)(nil)
|
||||
var _ sdk.StatusAPI = (*Agent)(nil)
|
||||
|
||||
Reference in New Issue
Block a user