feat: enhance tool search functionality and streamline tool management in AI agent

This commit is contained in:
mlogclub
2026-04-10 15:40:21 +08:00
parent 4722caab37
commit 31337fa714
5 changed files with 57 additions and 61 deletions
+2 -36
View File
@@ -19,7 +19,6 @@ func newService() *service {
return &service{
runtime: engine.NewService(),
registry: registry.NewRegistry(
tools.NewToolSearchTool(),
tools.NewCreateTicketConfirmTool(),
),
}
@@ -95,7 +94,7 @@ func (s *service) prepareToolsForRun(req *Request) error {
AIAgent: req.AIAgent,
AIConfig: req.AIConfig,
UserMessage: req.UserMessage,
AllowedToolCodes: expandRuntimeAllowedToolCodes(resolveAllowedToolCodes(req.AIAgent, req.SelectedSkill)),
AllowedToolCodes: resolveAllowedToolCodes(req.AIAgent, req.SelectedSkill),
})
if err != nil {
return err
@@ -113,7 +112,7 @@ func (s *service) prepareToolsForResume(req *ResumeRequest) error {
Conversation: req.Conversation,
AIAgent: req.AIAgent,
AIConfig: req.AIConfig,
AllowedToolCodes: expandRuntimeAllowedToolCodes(parseAgentAllowedToolCodes(req.AIAgent)),
AllowedToolCodes: parseAgentAllowedToolCodes(req.AIAgent),
})
if err != nil {
return err
@@ -277,36 +276,3 @@ func resolveAllowedToolCodes(aiAgent *models.AIAgent, skill *models.SkillDefinit
return ret
}
}
func expandRuntimeAllowedToolCodes(items []string) []string {
ret := make([]string, 0, len(items)+1)
hasMCPTool := false
for _, item := range items {
item = strings.TrimSpace(item)
if item == "" {
continue
}
ret = append(ret, item)
serverCode, toolName := toolx.SplitMCPToolCode(item)
if serverCode != "" && toolName != "" {
hasMCPTool = true
}
}
if hasMCPTool {
ret = appendIfMissingString(ret, toolx.BuiltinToolSearchToolCode)
}
return ret
}
func appendIfMissingString(items []string, value string) []string {
value = strings.TrimSpace(value)
if value == "" {
return items
}
for _, item := range items {
if strings.TrimSpace(item) == value {
return items
}
}
return append(items, value)
}