INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: 172.19.0.1:48486 - "GET /v1/models HTTP/1.1" 200 OK
INFO: 172.19.0.1:48210 - "GET /v1/models HTTP/1.1" 200 OK
2026-02-22 00:52:47.450 | ERROR | main:runjs:442 - Node.js 执行失败 (退出码: 1)
STDOUT:
STDERR:
/tmp/tmpkchl17ps/script.js:7572
<!DOCTYPE html><!--z7w2ry45GceibJuBrtfvS--><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/docs-static/_next/static/chunks/e55894aa7bea3381.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG"/><script src="/docs-static/_next/static/chunks/cfca51663f0d1c45.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" async=""></script><script src="/docs-static/_next/static/chunks/89479d1628f8c6b3.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" async=""></script><script src="/docs-static/_next/static/chunks/7b65e9bc78ed7c36.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" async=""></script><script src="/docs-static/_next/static/chunks/turbopack-4d30d6798355134f.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" async=""></script><script src="/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" async=""></script><script src="/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><script src="/docs-static/_next/static/chunks/a6dad97d9634a72d.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/docs-static/_next/static/chunks/e55894aa7bea3381.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[697642,[\"/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\",\"/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\"],\"default\"]\n3:I[912999,[\"/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\",\"/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\"],\"default\"]\n4:I[365878,[\"/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\",\"/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[365878,[\"/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\",\"/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\"],\"ViewportBoundary\"]\n9:I[365878,[\"/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\",\"/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\"],\"MetadataBoundary\"]\nb:I[747152,[\"/docs-static/_next/static/chunks/e8f9822427b98619.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\",\"/docs-static/_next/static/chunks/b71bf1c3384ce1ba.js?dpl=dpl_7DWHfqQd6KTpeoN8MMBfjUTZ7xvG\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"z7w2ry45GceibJuBrtfvS\",\"c\":[\"\",\"_not-found\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"html\",null,{\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:style\",\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style\",\"children\":404}],[\"$\",\"div\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style\",\"children\":[\"$\",\"h2\",null,{\"style\":\"$0:f:0:1:0:props:children:1:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style\",\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
^
SyntaxError: Unexpected token '<'
at wrapSafe (node:internal/modules/cjs/loader:1692:18)
at Module._compile (node:internal/modules/cjs/loader:1735:20)
at Object..js (node:internal/modules/cjs/loader:1893:10)
at Module.load (node:internal/modules/cjs/loader:1481:32)
at Module._load (node:internal/modules/cjs/loader:1300:12)
at TracingChannel.traceSync (node:diagnostics_channel:328:14)
at wrapModuleLoad (node:internal/modules/cjs/loader:245:24)
at Module.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:154:5)
at node:internal/main/run_main_module:33:47
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/.venv/lib/python3.12/site-packages/fastapi/routing.py", line 219, in run_endpoint_function
return await dependant.call(**values)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/main.py", line 62, in chat_completions
return await error_wrapper(non_stream_chat_completion, request, chat_generator)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/app/utils.py", line 56, in error_wrapper
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/app/utils.py", line 155, in non_stream_chat_completion
async for chunk in generator:
File "/app/app/utils.py", line 349, in empty_retry_wrapper
async for chunk in generator:
File "/app/main.py", line 254, in cursor_chat
x_is_human = await get_x_is_human(session)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/main.py", line 409, in get_x_is_human
return await runjs(main)
^^^^^^^^^^^^^^^^^
File "/app/app/utils.py", line 97, in async_wrapper
return await loop.run_in_executor(None, sync_func, *args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 59, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/app/main.py", line 443, in runjs
raise subprocess.CalledProcessError(result.returncode, ['node', js_file_path], result.stdout, result.stderr)
subprocess.CalledProcessError: Command '['node', '/tmp/tmplfxs_fep/script.js']' returned non-zero exit status 1.
脚本已损坏。截至2026年2月,它返回的结果如下。