feat: refactor tool handling to use ToolSet for improved organization and clarity

This commit is contained in:
mlogclub
2026-04-11 22:46:47 +08:00
parent a8a33ec6e0
commit e6d0fa2ba2
6 changed files with 60 additions and 49 deletions
+22 -6
View File
@@ -11,10 +11,12 @@ import (
"cs-agent/internal/ai/runtime/internal/impl/callbacks"
"cs-agent/internal/ai/runtime/internal/impl/factory"
"cs-agent/internal/ai/runtime/internal/impl/retrievers"
"cs-agent/internal/ai/runtime/registry"
"cs-agent/internal/models"
"cs-agent/internal/pkg/utils"
"github.com/cloudwego/eino/adk"
einotool "github.com/cloudwego/eino/components/tool"
"github.com/cloudwego/eino/schema"
"github.com/google/uuid"
)
@@ -85,7 +87,7 @@ func (s *Service) Run(ctx context.Context, req Request) (*Summary, error) {
summary.ToolCodes = appendIfMissing(summary.ToolCodes, "builtin/tool_search")
toolDefsByModelName["tool_search"] = "builtin/tool_search"
}
for modelName, toolCode := range req.ExtraToolCodes {
for modelName, toolCode := range toolSetStaticToolCodes(req.ToolSet) {
toolCode = strings.TrimSpace(toolCode)
modelName = strings.TrimSpace(modelName)
if toolCode == "" || modelName == "" {
@@ -119,8 +121,8 @@ func (s *Service) Run(ctx context.Context, req Request) (*Summary, error) {
SelectedSkill: req.SelectedSkill,
InstructionToolDefinitions: filteredToolDefs,
DynamicMCPToolDefinitions: filteredToolDefs,
StaticTools: req.ExtraTools,
StaticToolCodes: req.ExtraToolCodes,
StaticTools: toolSetStaticTools(req.ToolSet),
StaticToolCodes: toolSetStaticToolCodes(req.ToolSet),
Collector: collector,
})
if err != nil {
@@ -238,7 +240,7 @@ func (s *Service) Resume(ctx context.Context, req ResumeRequest) (*Summary, erro
summary.ToolCodes = appendIfMissing(summary.ToolCodes, "builtin/tool_search")
toolDefsByModelName["tool_search"] = "builtin/tool_search"
}
for modelName, toolCode := range req.ExtraToolCodes {
for modelName, toolCode := range toolSetStaticToolCodes(req.ToolSet) {
toolCode = strings.TrimSpace(toolCode)
modelName = strings.TrimSpace(modelName)
if toolCode == "" || modelName == "" {
@@ -255,8 +257,8 @@ func (s *Service) Resume(ctx context.Context, req ResumeRequest) (*Summary, erro
AIConfig: req.AIConfig,
InstructionToolDefinitions: toolDefs,
DynamicMCPToolDefinitions: toolDefs,
StaticTools: req.ExtraTools,
StaticToolCodes: req.ExtraToolCodes,
StaticTools: toolSetStaticTools(req.ToolSet),
StaticToolCodes: toolSetStaticToolCodes(req.ToolSet),
Collector: collector,
})
if err != nil {
@@ -543,3 +545,17 @@ func buildKnowledgeContext(items []rag.RetrieveResult) string {
}
return strings.TrimSpace(builder.String())
}
func toolSetStaticTools(toolSet *registry.ToolSet) []einotool.BaseTool {
if toolSet == nil {
return nil
}
return toolSet.StaticTools
}
func toolSetStaticToolCodes(toolSet *registry.ToolSet) map[string]string {
if toolSet == nil {
return nil
}
return toolSet.StaticToolCodes
}
+8 -11
View File
@@ -1,9 +1,8 @@
package engine
import (
"cs-agent/internal/ai/runtime/registry"
"cs-agent/internal/models"
einotool "github.com/cloudwego/eino/components/tool"
)
type Request struct {
@@ -15,18 +14,16 @@ type Request struct {
SkillRouteReason string
SkillRouteTrace string
CheckPointID string
ExtraTools []einotool.BaseTool
ExtraToolCodes map[string]string
ToolSet *registry.ToolSet
}
type ResumeRequest struct {
Conversation *models.Conversation
AIAgent *models.AIAgent
AIConfig *models.AIConfig
CheckPointID string
ResumeData map[string]any
ExtraTools []einotool.BaseTool
ExtraToolCodes map[string]string
Conversation *models.Conversation
AIAgent *models.AIAgent
AIConfig *models.AIConfig
CheckPointID string
ResumeData map[string]any
ToolSet *registry.ToolSet
}
type InterruptContextSummary struct {