mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-04 00:03:59 +00:00
refactor: split agent.go into 12 files + add mcp_restart_server tool
This commit is contained in:
69
internal/agent/core/utils.go
Normal file
69
internal/agent/core/utils.go
Normal file
@ -0,0 +1,69 @@
|
||||
package core
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
"unicode/utf8"
|
||||
|
||||
"gitcode.com/JianFeeeee/HomeAgent/internal/knowledge"
|
||||
)
|
||||
|
||||
func getString(m map[string]interface{}, key string) string {
|
||||
if v, ok := m[key]; ok {
|
||||
if s, ok := v.(string); ok {
|
||||
return s
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func getFloat(m map[string]interface{}, key string) float64 {
|
||||
if v, ok := m[key]; ok {
|
||||
switch n := v.(type) {
|
||||
case float64:
|
||||
return n
|
||||
case int:
|
||||
return float64(n)
|
||||
}
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func truncateStr(s string, max int) string {
|
||||
if utf8.RuneCountInString(s) <= max {
|
||||
return s
|
||||
}
|
||||
var truncated int
|
||||
for i := range s {
|
||||
if truncated >= max {
|
||||
return s[:i] + "..."
|
||||
}
|
||||
truncated++
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
func formatTree(node *knowledge.TreeIndex, depth int) string {
|
||||
var sb strings.Builder
|
||||
indent := strings.Repeat(" ", depth)
|
||||
for _, child := range node.Children {
|
||||
sb.WriteString(fmt.Sprintf("%s%s/\n", indent, child.Name))
|
||||
sb.WriteString(formatTree(child, depth+1))
|
||||
}
|
||||
for _, item := range node.Items {
|
||||
preview := item.Preview
|
||||
if len([]rune(preview)) > 60 {
|
||||
preview = string([]rune(preview)[:60]) + "..."
|
||||
}
|
||||
tags := ""
|
||||
if len(item.Tags) > 0 {
|
||||
tags = " [" + strings.Join(item.Tags, ", ") + "]"
|
||||
}
|
||||
sb.WriteString(fmt.Sprintf("%s· %s%s\n", indent, item.Name, tags))
|
||||
sb.WriteString(fmt.Sprintf("%s %s\n", indent, preview))
|
||||
}
|
||||
if sb.Len() == 0 {
|
||||
sb.WriteString("(空)")
|
||||
}
|
||||
return sb.String()
|
||||
}
|
||||
Reference in New Issue
Block a user