@@ -146,7 +146,7 @@ class Agent(LlmAgent):
146146
147147 skills : list [str ] = Field (default_factory = list )
148148
149- skills_mode : Literal ["skills_sandbox" , "aio_sandbox" , "local" ] = "skills_sandbox"
149+ skills_mode : Optional [ Literal ["skills_sandbox" , "aio_sandbox" , "local" ]] = None
150150
151151 example_store : Optional [BaseExampleProvider ] = None
152152
@@ -337,6 +337,63 @@ def load_skills(self):
337337
338338 skills : Dict [str , Skill ] = {}
339339
340+ # Determine skills_mode if not set
341+ if not self .skills_mode :
342+ tool_id = os .getenv ("AGENTKIT_TOOL_ID" )
343+ if not tool_id :
344+ self .skills_mode = "local"
345+ else :
346+ from veadk .utils .volcengine_sign import ve_request
347+ from veadk .auth .veauth .utils import get_credential_from_vefaas_iam
348+
349+ ak = os .getenv ("VOLCENGINE_ACCESS_KEY" )
350+ sk = os .getenv ("VOLCENGINE_SECRET_KEY" )
351+ header = {}
352+
353+ if not (ak and sk ):
354+ logger .debug (
355+ "Get AK/SK from environment variables failed. Try to use credential from Iam."
356+ )
357+ credential = get_credential_from_vefaas_iam ()
358+ ak = credential .access_key_id
359+ sk = credential .secret_access_key
360+ header = {"X-Security-Token" : credential .session_token }
361+ else :
362+ logger .debug ("Successfully get AK/SK from environment variables." )
363+
364+ service = os .getenv ("AGENTKIT_TOOL_SERVICE_CODE" , "agentkit" )
365+ region = os .getenv ("AGENTKIT_TOOL_REGION" , "cn-beijing" )
366+ host = service + "." + region + ".volcengineapi.com"
367+
368+ res = ve_request (
369+ request_body = {"ToolId" : tool_id },
370+ action = "GetTool" ,
371+ ak = ak ,
372+ sk = sk ,
373+ service = service ,
374+ version = "2025-10-30" ,
375+ region = region ,
376+ host = host ,
377+ header = header ,
378+ )
379+ try :
380+ tool_type = res ["Result" ]["ToolType" ]
381+ logger .debug (f"Agentkit tool type={ tool_type } " )
382+ except KeyError :
383+ tool_type = "unknown"
384+ logger .error (f"Failed to get agentkit tool type: { res } " )
385+
386+ if tool_type == "All-in-one" :
387+ self .skills_mode = "aio_sandbox"
388+ elif tool_type == "Skill" :
389+ self .skills_mode = "skills_sandbox"
390+ else :
391+ self .skills_mode = "skills_sandbox"
392+ logger .warning (
393+ "Custom tool detected, default skills_mode is skills_sandbox; set skills_mode to aio_sandbox if you want to run skills with aio_sandbox"
394+ )
395+ logger .info (f"Determined skills_mode: { self .skills_mode } " )
396+
340397 for item in self .skills :
341398 if not item or str (item ).strip () == "" :
342399 continue
0 commit comments