Files
HomeAgent/internal/sdk/knowledge_impl.go
JianFeeeee 4e70b8d5d8 refactor(module): 核心仓 Go module 路径改为 github.com/JianFeeeee/HologramAgent
批 1,不含 SDK 仓与目录改名。

- go.mod 第 1 行 module 路径
- 366 个 .go 文件的完整前缀 github.com/JianFeeeee/HomeAgent 机械替换
  (857 处,仅完整前缀;展示名/注释里的 HomeAgent 字样留给批 5)
- 未改:third_party 目录名、SDK 自身 go.mod module、go.mod replace 目标、
  homed/waiter 可执行名、.hmap 后缀
2026-10-21 12:17:19 +08:00

138 lines
3.1 KiB
Go

package sdk
import (
"fmt"
"github.com/JianFeeeee/HologramAgent/internal/knowledge"
)
type knowledgeImpl struct{ ks *knowledge.Store }
func NewKnowledge(ks *knowledge.Store) KnowledgeAPI { return &knowledgeImpl{ks: ks} }
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, Category: item.Category}
}
return out, nil
}
func (k *knowledgeImpl) Add(name, content string) error {
if k.ks == nil {
return nil
}
return k.ks.Add(name, content)
}
func (k *knowledgeImpl) SearchIn(query, category string, topK int) ([]*Knowledge, error) {
if k.ks == nil {
return nil, nil
}
got := k.ks.SearchIn(query, category, topK)
out := make([]*Knowledge, len(got))
for i, item := range got {
out[i] = &Knowledge{Name: item.Name, Content: item.Content, Category: item.Category}
}
return out, nil
}
func (k *knowledgeImpl) Tree(opt KnowledgeTreeOptions) (*KnowledgeTreeView, error) {
if k.ks == nil {
return nil, nil
}
return k.ks.Tree(knowledge.TreeOptions{
MaxDepth: opt.MaxDepth,
IncludeItems: opt.IncludeItems,
PreviewLimit: opt.PreviewLimit,
}), nil
}
func (k *knowledgeImpl) Subtree(category string, opt KnowledgeTreeOptions) (*KnowledgeTreeView, error) {
if k.ks == nil {
return nil, nil
}
return k.ks.Subtree(category, knowledge.TreeOptions{
MaxDepth: opt.MaxDepth,
IncludeItems: opt.IncludeItems,
PreviewLimit: opt.PreviewLimit,
}), nil
}
// ImportDir 转发到内核 Store。
func (k *knowledgeImpl) ImportDir(opt knowledge.ImportOptions) (knowledge.ImportStats, error) {
if k.ks == nil {
return knowledge.ImportStats{}, fmt.Errorf("knowledge: 知识库不可用")
}
return k.ks.ImportDir(opt)
}
func (k *knowledgeImpl) Categories() ([]string, error) {
if k.ks == nil {
return nil, nil
}
return k.ks.Categories(), nil
}
func (k *knowledgeImpl) CategoryCounts() ([]KnowledgeCategoryCount, error) {
if k.ks == nil {
return nil, nil
}
return k.ks.CategoryCounts(), nil
}
func (k *knowledgeImpl) AddWithMedia(name, content string, media []KnowledgeMediaRef) error {
if k.ks == nil {
return nil
}
return k.ks.AddWithMedia(name, content, media)
}
func (k *knowledgeImpl) AttachMedia(name string, media ...KnowledgeMediaRef) error {
if k.ks == nil {
return nil
}
return k.ks.AttachMedia(name, media...)
}
func (k *knowledgeImpl) ReindexDense() (int, int) {
if k.ks == nil {
return 0, 0
}
return k.ks.ReindexDense()
}
func (k *knowledgeImpl) DenseStats() map[string]interface{} {
if k.ks == nil {
return map[string]interface{}{}
}
return k.ks.DenseStats()
}
func (k *knowledgeImpl) List() ([]string, error) {
if k.ks == nil {
return nil, nil
}
return k.ks.List(), nil
}
func (k *knowledgeImpl) Stats() map[string]interface{} {
if k.ks == nil {
return map[string]interface{}{}
}
return k.ks.Stats()
}
func (k *knowledgeImpl) Remove(name string) error {
if k.ks == nil {
return nil
}
return k.ks.Remove(name)
}
var _ KnowledgeAPI = (*knowledgeImpl)(nil)