skill_exec 执行结束后,_collect_final_result 调用 _prepare_outputs 时少传了一个参数:
files, manifest = await run_tool._prepare_outputs(
ctx, exec_session.ws, fake_run_input
)
当前方法签名是:
async def _prepare_outputs(self, ctx, ws, workspace_runtime, input_data):
因此会抛出:
TypeError: SkillRunTool._prepare_outputs() missing 1 required positional argument: 'input_data'
这个异常被 except Exception 捕获后,仅记录 warning,并降级为 files=[], manifest=None。命令本身仍可正常执行,stdout 和 exit code 也正常,但通过 output_files / outputs 指定的文件无法收集,返回结果的 warnings 中也没有提示。结果随后被标记为 finalized,轮询不会重试收集。
影响范围是 skill_exec 的输出文件收集;只读取终端输出的任务通常没有可见影响,skill_run 不受此问题影响。
从 Git 历史看,614b07d(2026-05-26)为 _prepare_outputs 增加了 workspace_runtime 参数,同时更新了 skill_run 的调用,但遗漏了这里。
目前 test_skill_exec.py 没有覆盖执行结束后的文件收集流程,其中 _prepare_outputs 也使用了不校验签名的普通 AsyncMock。
建议将执行时获取的 workspace_runtime 经 _start_session 保存到 _ExecSession,收集结果时传入,并补充验证非空输出文件的回归测试。
skill_exec执行结束后,_collect_final_result调用_prepare_outputs时少传了一个参数:当前方法签名是:
因此会抛出:
这个异常被
except Exception捕获后,仅记录 warning,并降级为files=[], manifest=None。命令本身仍可正常执行,stdout 和 exit code 也正常,但通过output_files/outputs指定的文件无法收集,返回结果的warnings中也没有提示。结果随后被标记为finalized,轮询不会重试收集。影响范围是
skill_exec的输出文件收集;只读取终端输出的任务通常没有可见影响,skill_run不受此问题影响。从 Git 历史看,
614b07d(2026-05-26)为_prepare_outputs增加了workspace_runtime参数,同时更新了skill_run的调用,但遗漏了这里。目前
test_skill_exec.py没有覆盖执行结束后的文件收集流程,其中_prepare_outputs也使用了不校验签名的普通AsyncMock。建议将执行时获取的
workspace_runtime经_start_session保存到_ExecSession,收集结果时传入,并补充验证非空输出文件的回归测试。