From 024fd55699f6400b7203a9258b0888596c85edb4 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Thu, 5 Mar 2026 17:34:32 +0800 Subject: [PATCH] bugfix --- skillagent/skillengine.py | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/skillagent/skillengine.py b/skillagent/skillengine.py index e70a104..1285568 100644 --- a/skillagent/skillengine.py +++ b/skillagent/skillengine.py @@ -256,6 +256,7 @@ class IndustrialSkillEngine: await self.write_output(output) if "CALL: " in decision: st = decision[6:] + debug(f'函数调用:{st=}') d = DictObject(**json.loads(st)) env = self.request._run_ns f = env.get(d.function) @@ -263,15 +264,22 @@ class IndustrialSkillEngine: e = Exception(f'function({d.function} is not in env') exception(f'{e}') raise e - ret = '' - if inspect.iscoroutinefunction(f): - ret = await f(self.request, params_kw=d.params) - else: - ret = f(self.request, params_kw=d.params) - await self.write_output({ - "status": "SUCCEEDED", - "content": ret - }) + try: + ret = '' + if inspect.iscoroutinefunction(f): + ret = await f(self.request, params_kw=d.params) + else: + ret = f(self.request, params_kw=d.params) + await self.write_output({ + "status": "SUCCEEDED", + "content": ret + }) + except Exception as e: + exception(f'{e}\n{format_exc()}') + await self.write_output({ + "status": "FAILED", + "error": f'{e}' + }) return if "REPLY: " in decision: sessionkey = getID()