[BUG]: Cannot access the open-computer desktop after “open-computer.cmd up agent” on Windows 10

在 Windows 10 上执行 open-computer.cmd up agent 后,SSH 能连上虚拟机,但访问桌面端 http://localhost:9800 报 ERR_CONNECTION_RESET ,通常是因为虚拟机内运行的 interface-service 启动时崩溃,导致

快速结论:在 Windows 10 上执行 open-computer.cmd up agent 后,SSH 能连上虚拟机,但访问桌面端 http://localhost:9800 报 ERR_CONNECTION_RESET,通常是因为虚拟机内运行的 interface-service 启动时崩溃,导致 9800 端口没有任何进程监听。优先检查该服务是否因缺少 express 模块而启动失败。

适用环境:AnythingLLM 的 open-computer agent;Windows 10 宿主机;VM 内为 Debian(内核 6.12.95+deb13-amd64);Node.js v22.23.1;通过 SSH 端口 2222 访问,桌面端口 9800。

最快修复方案:把 agent 切回 prod(非 dev)模式重建:open-computer destroy agent 后执行 open-computer create agent。

注意事项:Issue 中说明这属于环境相关问题,dev 模式的依赖要求后续会在文档中说明。如果重建后的全新非 dev agent 仍无法在 9800 提供桌面,作者建议带上新 agent 的 journalctl -u open-computer.service -b 输出重新开启 Issue。

问题场景

用户在 Windows 10 宿主机上运行 AnythingLLM 的 open-computer 工具,执行 open-computer.cmd up agent(或日志中显示的 open-computer up agent)启动 agent。启动完成后,使用 ssh -p 2222 agent@localhost 可以正常登录 Debian 虚拟机,但用 Chrome 访问桌面端 http://localhost:9800 时无法打开页面。

报错原文

This site can’t be reached
The connection was reset.
ERR_CONNECTION_RESET

Problems Found: The device or resource (localhost) is not setup to accept connections on port "9800"

[node] app crashed - waiting for file changes before starting...
Error: Cannot find module 'express'
code: 'MODULE_NOT_FOUND',
requireStack: [ '/opt/open-computer/interface-service/index.js' ]

原因分析

根据 Issue 讨论,最可能的原因是:虚拟机在运行原始源码 /opt/open-computer/interface-service/index.js,而不是正常构建产物 interface-service.cjs。这份源码只有在 dev 模式下才会进入虚拟机——在 Windows x64 上,up/create --dev 会通过 SCP 把本地 services/ 目录复制进虚拟机,日志中那批 restarting due to changes 就是这次复制。

如果宿主机上从未在 services/interface-service 目录执行过 npm install,就没有 node_modules,interface service 启动时因找不到 express 模块而崩溃,于是 9800 端口后面没有任何服务监听,浏览器连接被重置并报 ERR_CONNECTION_RESET。此外,这些文件一旦被复制,就会留在 agent 磁盘上,之后即使是非 dev 的 up 也会继续使用它们。

环境排查

  • 确认宿主机是 Windows 10 x64,且使用的命令是 up 还是 up --dev。
  • 确认虚拟机内 Node.js 版本(Issue 中为 v22.23.1)以及 open-computer.service 的运行状态。
  • 在 VM 内执行 sudo lsof -i -P -n | grep LISTEN,确认 9800 端口是否有进程监听。
  • 执行 sudo systemctl status open-computer 与 journalctl -u open-computer.service -b,查看是否出现 Cannot find module 'express'、MODULE_NOT_FOUND 或 app crashed。
  • 确认宿主机 services/interface-service 目录下是否存在 node_modules(是否跑过 npm install)。
  • 确认是否曾用 dev 模式启动过 agent,导致源码残留。

解决步骤

  1. 优先尝试(推荐,prod 模式):销毁并重建 agent,使其使用正常构建产物而不是残留的 dev 源码。
    open-computer destroy agent
    open-computer create agent
  2. 如果确实需要 dev 模式:先在宿主机安装服务依赖,再用 --dev 启动。
    cd services\interface-service
    npm install
    cd ....
    open-computer up agent --dev
  3. 重建或重新启动后,等待服务完成初始化,再访问 http://localhost:9800。
  4. 若问题依旧,从新 agent 收集日志:journalctl -u open-computer.service -b,并向项目反馈。

验证方法

重建后的 agent 启动完成后,在 VM 内运行 sudo lsof -i -P -n | grep LISTEN,应能看到有进程在 9800 端口监听;同时在 Windows 10 宿主机用 Chrome 访问 http://localhost:9800,不再出现 ERR_CONNECTION_RESET,桌面可以正常打开。若仍报相同错误,则说明需要按上一步收集日志进一步排查。

参考来源

Mintplex-Labs/anything-llm #6487

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 25650

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注