mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-03-31 08:19:54 +02:00
Update executor.go
This commit is contained in:
@@ -229,34 +229,7 @@ func (e *Executor) buildCommandArgs(toolName string, toolConfig *config.ToolConf
|
||||
}
|
||||
}
|
||||
|
||||
// 对位置参数按位置排序
|
||||
for i := 0; i < len(positionalParams); i++ {
|
||||
for _, param := range positionalParams {
|
||||
// 跳过特殊参数,它们会在后面单独处理
|
||||
if param.Name == "additional_args" || param.Name == "scan_type" {
|
||||
continue
|
||||
}
|
||||
|
||||
if param.Position != nil && *param.Position == i {
|
||||
value := e.getParamValue(args, param)
|
||||
if value == nil {
|
||||
if param.Required {
|
||||
// 必需参数缺失,返回空数组让上层处理错误
|
||||
e.logger.Warn("缺少必需的位置参数",
|
||||
zap.String("tool", toolName),
|
||||
zap.String("param", param.Name),
|
||||
zap.Int("position", *param.Position),
|
||||
)
|
||||
return []string{}
|
||||
}
|
||||
break
|
||||
}
|
||||
cmdArgs = append(cmdArgs, e.formatParamValue(param, value))
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 先处理标志参数(对于大多数命令,标志应该在位置参数之前)
|
||||
// 处理标志参数
|
||||
for _, param := range flagParams {
|
||||
// 跳过特殊参数,它们会在后面单独处理
|
||||
@@ -356,6 +329,40 @@ func (e *Executor) buildCommandArgs(toolName string, toolConfig *config.ToolConf
|
||||
cmdArgs = append(cmdArgs, e.formatParamValue(param, value))
|
||||
}
|
||||
}
|
||||
|
||||
// 然后处理位置参数(位置参数通常在标志参数之后)
|
||||
// 对位置参数按位置排序
|
||||
for i := 0; i < len(positionalParams); i++ {
|
||||
for _, param := range positionalParams {
|
||||
// 跳过特殊参数,它们会在后面单独处理
|
||||
if param.Name == "additional_args" || param.Name == "scan_type" {
|
||||
continue
|
||||
}
|
||||
|
||||
if param.Position != nil && *param.Position == i {
|
||||
value := e.getParamValue(args, param)
|
||||
if value == nil {
|
||||
if param.Required {
|
||||
// 必需参数缺失,返回空数组让上层处理错误
|
||||
e.logger.Warn("缺少必需的位置参数",
|
||||
zap.String("tool", toolName),
|
||||
zap.String("param", param.Name),
|
||||
zap.Int("position", *param.Position),
|
||||
)
|
||||
return []string{}
|
||||
}
|
||||
// 对于非必需参数,如果值为 nil,尝试使用默认值
|
||||
if param.Default != nil {
|
||||
value = param.Default
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
cmdArgs = append(cmdArgs, e.formatParamValue(param, value))
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 特殊处理:additional_args 参数(需要按空格分割成多个参数)
|
||||
if additionalArgs, ok := args["additional_args"].(string); ok && additionalArgs != "" {
|
||||
|
||||
Reference in New Issue
Block a user