这个项目原本以 Wails 桌面应用形态运行,后续需要放入容器环境并通过浏览器访问。改造的重点在于保留原有业务能力,同时把桌面事件、文件访问和本地状态管理迁移到明确的 HTTP 接口。
项目概览
结构上,Go 后端承载静态资源、API、Cookie 会话和 WebSocket 事件推送,React 前端负责管理界面,SQLite 保存配置、会话和运行数据。Docker 构建把前端产物和后端服务打包到同一运行单元。
用途是把原本依赖桌面壳的工具迁移成可部署 WebUI。应用场景包括远程访问、容器化部署、统一管理模型配置和 MCP 工具集。
服务边界
后端改为 Go net/http 服务,负责静态文件托管、API、会话 Cookie 和 WebSocket 推送。桌面端原本隐式持有的状态被拆成配置、运行状态、任务状态三类,分别进入 SQLite、内存结构和后台任务管理器。
认证层采用 Cookie 会话,令牌只在服务端生成与校验。前端调用 API 时无需接触密钥材料,浏览器端只负责展示当前状态和提交操作指令。
前端改造
React 前端保留原有主要页面,但数据获取方式改成同源 API。长耗时任务通过 WebSocket 接收状态更新,页面只做增量刷新,避免轮询带来的额外请求。
部署侧使用 Docker 镜像承载 Go 服务和静态资源。构建阶段生成前端产物,运行阶段只保留单个服务进程,方便在普通服务器和面板环境中托管。
实现原理是把桌面端隐式能力显式化。文件读写、任务状态、MCP 管理和会话认证都变成 HTTP API,浏览器端只保留展示和操作。WebSocket 负责把后台事件推给页面,SQLite 负责把运行配置从进程内状态迁出。