
Unable to call API payload containing alwayson_scripts
快速结论:此问题通常发生在调用 Stable Diffusion WebUI Forge 的 /sdapi/v1/txt2img API 时,alwayson_scripts 中包含的扩展脚本参数列表长度超出预期。优先排查 alwayson_scripts 中各扩展的数组长度是否与 Forge API 期望一致。
问题场景
用户在 Ubuntu 24.10 系统、RTX 2070 环境下,使用 Python 的 requests 库向 Stable Diffusion WebUI Forge (lllyasviel/stable-diffusion-webui-forge) 的 http://127.0.0.1:7860/sdapi/v1/txt2img 端点发送 POST 请求。当请求 payload 中包含 alwayson_scripts 键时,服务器返回 HTTP 500 错误,并报错 list assignment index out of range;删除 alwayson_scripts 后请求成功。
报错原文
# Response: <Response [500]>
# Response JSON:
{'error': 'IndexError', 'detail': '', 'body': '', 'message': 'list assignment index out of range'}
# Terminal error trace (line reference):
# https://github.com/lllyasviel/stable-diffusion-webui-forge/blob/main/modules/api/api.py#L362
原因分析
可能原因是 alwayson_scripts 中的一个或多个扩展脚本在 payload 中提交的列表项数量超过了 Forge API 对该扩展参数的预期。根据 Issue 中的排查结果,这很可能是由于 API payload extension 或其他扩展插件生成的 alwayson_scripts 数据结构格式错误导致的,并非 Forge 核心 API 的问题。当 payload 中只有单个简化测试扩展时,请求可以成功。
环境排查
- 确认使用的 WebUI Forge 版本(是否为近期更新)
- 检查
alwayson_scripts中涉及的所有扩展插件(如 ControlNet 等)是否已更新至最新版本 - 验证扩展插件是否提供 Forge 兼容的 API 端点(可通过访问
http://<your webui url>/docs测试) - 确认 payload.json 中的数组结构是否与扩展插件 API 文档一致
解决步骤
- 精简 alwayson_scripts:从 payload 的
alwayson_scripts中逐一移除扩展,每次只保留一个扩展进行测试,定位出具体哪个扩展导致错误。可优先尝试仅保留一个简单扩展。 - 验证扩展 API 参数:访问
http://<your webui url>/docs,找到GET script-info端点(也可能是 POST 端点),执行测试并下载返回的 .json 文件。检查该 JSON 中的所有扩展及其参数结构,与自己使用的 payload 中的alwayson_scripts结构进行对比。 - 调整 payload:根据从
/docs获取到的正确参数结构,修正alwayson_scripts中对应扩展的列表项长度和顺序。 - 使用 override_settings/alwaysonscripts 字典:如果扩展支持,可考虑将
alwayson_scripts的参数改写到override_settings的alwaysonscripts字典中,而不是直接以数组形式提交。
验证方法
提交修正后的 payload,确认 API 返回 HTTP 200 状态码,并且 response.json() 中不包含 IndexError 错误。为保险起见,可先使用单个简化扩展测试,确保正常返回后再逐步添加其他扩展。


![[bug]: Blue pixels in generated images](https://www.chat-gpts.plus/wp-content/uploads/2026/06/9270-09383567-768x403.jpg)
