feat: converge dynamic plugins onto canonical homeagent-sdk

- Separate built-in plugin interface from external plugin interface
- Route dynamic plugin loading through homeagent-sdk/sdk using reflection
- Turn internal/sdk into an enhanced wrapper over canonical SDK types
- Vendor SDK repo snapshot under third_party/homeagent-sdk for stable builds
- Keep internal constructors/adapters for memory, knowledge, llm, settings
- Align dynamic QQ loading with canonical SDK chain
This commit is contained in:
root
2026-07-06 19:27:51 +08:00
parent 753167bee4
commit 8103481254
37 changed files with 4505 additions and 420 deletions

View File

@ -1,38 +1,33 @@
package sdk
import "gitcode.com/JianFeeeee/HomeAgent/internal/knowledge"
import (
sdkext "gitcode.com/JianFeeeee/homeagent-sdk/sdk"
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge"
)
type KnowledgeAPI interface {
Search(query string, topK int) ([]*knowledge.Knowledge, error)
Add(name, content string) error
List() ([]string, error)
}
type KnowledgeAPI = sdkext.KnowledgeAPI
type Knowledge = sdkext.Knowledge
type knowledgeImpl struct {
ks *knowledge.Store
}
type knowledgeImpl struct{ ks *knowledge.Store }
func NewKnowledge(ks *knowledge.Store) KnowledgeAPI {
return &knowledgeImpl{ks: ks}
}
func NewKnowledge(ks *knowledge.Store) KnowledgeAPI { return &knowledgeImpl{ks: ks} }
func (k *knowledgeImpl) Search(query string, topK int) ([]*knowledge.Knowledge, error) {
if k.ks == nil {
return nil, nil
func (k *knowledgeImpl) Search(query string, topK int) ([]*Knowledge, error) {
if k.ks == nil { return nil, nil }
got := k.ks.Search(query, topK)
out := make([]*Knowledge, len(got))
for i, item := range got {
out[i] = &Knowledge{Name: item.Name, Content: item.Content}
}
return k.ks.Search(query, topK), nil
return out, nil
}
func (k *knowledgeImpl) Add(name, content string) error {
if k.ks == nil {
return nil
}
if k.ks == nil { return nil }
return k.ks.Add(name, content)
}
func (k *knowledgeImpl) List() ([]string, error) {
if k.ks == nil {
return nil, nil
}
if k.ks == nil { return nil, nil }
return k.ks.List(), nil
}