在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

2026-04-09 17:04:42 1点赞 1收藏 1评论

AI 到底能不能真正"操作"电脑

相信很多人和俺一样,用过各种 AI 助手——问答、写作、画图,都能搞定。但总觉得它们还是"漂浮在云端"的工具,离"操作我的电脑"还差十万八千里。

直到俺看到了 OpenRoom——一个把 AI Agent 和浏览器桌面系统结合的开源项目。

它让 AI 真正"长"在了电脑桌面上——能操作应用、能下棋、能播放音乐、还能帮你写代码。这不是概念演示,是真的在操作。

在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

最近看到个很有意思的开源项目:OpenRoom。这是来自MiniMax- AI。它把AI Agent和浏览器桌面系统结合在一起,让我第一次在网页里感受到了"AI操作电脑"的魔力。

项目介绍

在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

简单说,OpenRoom就是一个运行在浏览器里的桌面操作系统。打开网页,你会看到一个macOS风格的桌面,上面摆满了各种应用图标:Music Player、Diary、Chess、Twitter、Email、Album、Gomoku、FreeCell、CyberNews……双击就能打开应用,窗口可以拖拽、缩放,跟真正的桌面系统没什么两样。

但它最厉害的地方不在桌面,而在于——内置的AI助手

AI真的在"操作"电脑

OpenRoom内置了多个应用:五子棋、音乐播放器、个人日记、email、照片管理、新闻聚合等等。

那它还内置了已经设定好的AI助理:赏金猎人Aoi 。系统给她的设定是:自称"Aoi",一个穿越银河的赏金猎人。开场白就是英文名言:"Well, well...Guess who just slipped into your system? Cozy place you've got here. Mind if I stick around for a bit?"(翻译:猜猜谁溜进了你的系统?这地方还挺舒服的。介意我待一会儿吗?)

那咱们在首次打开这个项目的时候,需要配置下API,既然是MiniMax- AI出品的,那这里就直接使用MiniMAX的API来使用了。

咱们先来看到内置应用的体验上,比如五子棋。只需要在Aoi的窗口直接说:陪我下五子棋吧。

在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

桌面上就会自动弹出Gomoku五子棋的应用窗口,并让我选择黑棋或者白棋先手。下面就能直接开始下五子棋。

在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

另外还有音乐播放器,也只需要说一嘴:帮我打开Music Player,播放一首爵士乐。Aoi就会自动打开音乐播放器,并且开始播放音乐。这个音乐播放器做的还是很完整的,左侧有library和playlists两个标签页,曲库里面有五首歌,还有上一首、播放/暂停等等功能。

嘿嘿,你说这些内置的功能没啥意思,有什么高难度或者更好玩的功能么?

OpenRoom直接开发应用

OpenRoom还有个很有意思的功能,你可以在OpenRoom的上层直接开发应用,等于说OpenRoom的底层就是一个完整的封装系统,支持通过 /vibe 命令使用 AI Agent 自动生成应用。

claude -p "/vibe WeatherApp 天气查询应用的描述" --allowedTools "Read,Write,Edit,Bash(...)"

那这里咱们可以直接使用Claude code直接去开发应用,例如这里让它开发个天气查询应用,就能直接输入上面这段代码。

在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

完成后就能直接在咱们的OpenRoom上使用这个应用啦!

部署过程

OpenRoom官方确实提供了Dockerfile,但官方Dockerfile只包含前端静态文件(nginx),缺少后端API服务,直接使用会导致白屏。 我们参考了官方Dockerfile并做了增强:加入了Express后端服务,完整支持 /api/llm-proxy 等接口,能真正正常工作。

这里使用极空间Z4 Pro+性能版演示。

创建以下脚本:

#!/bin/bash set -e echo "==========================================" echo " OpenRoom 极空间一键部署脚本" echo " 增强版:前端+后端API服务" echo "==========================================" # 第一步:创建目录(极空间路径,记得将目录改成自己的路径) mkdir -p /data/openroom-source mkdir -p /data/openroom-deploy/public mkdir -p /data/openroom/config # 第二步:克隆源码(如果还没有) if [ ! -d "/data/openroom-source/.git" ]; then echo "[1/5] 克隆OpenRoom源码..." cd /data/openroom-source git clone https://github.com/MiniMax-AI/OpenRoom.git . else echo "[1/5] 源码已存在,跳过克隆..." cd /data/openroom-source fi # 第三步:构建前端 echo "[2/5] 安装pnpm并构建前端(需要5-15分钟)..." npm install -g pnpm --registry=https://registry.npmmirror.com 2>/dev/null || true cd /data/openroom-source pnpm install --registry=https://registry.npmmirror.com pnpm build # 第四步:创建服务端文件(增强版:带完整后端API) echo "[3/5] 创建服务端文件(增强版后端)..." cp -r /data/openroom-source/apps/webuiapps/dist/* /data/openroom-deploy/public/ cat > /data/openroom-deploy/package.json << 'EOF' { "name": "openroom-server", "version": "1.0.0", "type": "module", "main": "server.js", "dependencies": { "express": "^4.18.2", "cors": "^2.8.5", "body-parser": "^1.20.2", "node-fetch": "^3.3.2" } } EOF cat > /data/openroom-deploy/server.js << 'EOF' import express from 'express'; import cors from 'cors'; import bodyParser from 'body-parser'; import fetch from 'node-fetch'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import fs from 'fs'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const app = express(); const PORT = process.env.PORT || 3000; const LLM_API_URL = process.env.LLM_API_URL || 'https://www.minimaxi.com/v1/chat/completions'; const LLM_API_KEY = process.env.LLM_API_KEY || ''; const configDir = join(process.env.HOME || '/root', '.openroom'); const configPath = join(configDir, 'config.json'); app.use(cors()); app.use(bodyParser.json({ limit: '50mb' })); app.use(express.static(join(__dirname, 'public'))); // LLM Proxy API(核心接口) app.post('/api/llm-proxy', async (req, res) => { try { const response = await fetch(LLM_API_URL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${LLM_API_KEY}` }, body: JSON.stringify(req.body) }); const data = await response.json(); res.status(response.status).json(data); } catch (error) { res.status(500).json({ error: error.message }); } }); // LLM Config API app.get('/api/llm-config', (req, res) => { try { if (fs.existsSync(configPath)) { res.json(JSON.parse(fs.readFileSync(configPath, 'utf-8'))); } else { res.json({}); } } catch (error) { res.status(500).json({ error: error.message }); } }); app.post('/api/llm-config', (req, res) => { try { if (!fs.existsSync(configDir)) { fs.mkdirSync(configDir, { recursive: true }); } fs.writeFileSync(configPath, JSON.stringify(req.body, null, 2)); res.json({ success: true }); } catch (error) { res.status(500).json({ error: error.message }); } }); // Catch-all for SPA app.get('*', (req, res) => { const indexPath = join(__dirname, 'public', 'index.html'); if (fs.existsSync(indexPath)) { res.sendFile(indexPath); } else { res.status(404).send('OpenRoom not built yet.'); } }); app.listen(PORT, '0.0.0.0', () => { console.log(`OpenRoom server running on port ${PORT}`); console.log(`LLM API: ${LLM_API_URL}`); }); EOF cat > /data/openroom-deploy/Dockerfile << 'EOF' FROM node:20-alpine WORKDIR /data/openroom COPY package.json . RUN npm install --registry=https://registry.npmmirror.com COPY . . EXPOSE 3000 CMD ["node", "server.js"] EOF # 第五步:构建并启动 echo "[4/5] 构建Docker镜像(需要3-10分钟)..." cd /data/openroom-deploy docker build -t openroom:latest . echo "[5/5] 启动容器..." docker rm -f openroom 2>/dev/null || true docker run -d --name openroom -p 13050:3000 -v /data/openroom/config:/root/.openroom -e LLM_API_URL="https://www.minimaxi.com/v1/chat/completions" #记得改成自己断点以及秘钥 -e LLM_API_KEY="你的MiniMax API Key" --restart=unless-stopped openroom:latest echo "" echo "==========================================" echo " ✅ 部署完成!" echo " 访问地址:http://你的极空间IP:13050" echo " 配置文件:/data/openroom/config/config.json" echo "==========================================" echo "" echo "下一步:编辑配置文件填入API Key" echo " nano /data/openroom/config/config.json" echo " 示例配置:" echo ' {"llm":{"provider":"openai","model":"MiniMax-Text-01","apiKey":"你的Key","baseUrl":"https://www.minimaxi.com/v1"}}' echo " 然后:docker restart openroom"

运行脚本:

chmod +x deploy_openroom.sh && ./deploy_openroom.sh

创建完成后,使用浏览器打开NAS IP+:13050就能打开openroom webui页面了。

在浏览器里体验了一把"AI版贾维斯"—OpenRoom极空间部署教程

进来后记得修改下openroom的api以及模型服务商。

那么好了,以上就是本篇文章的全部内容

希望对你有所帮助

让我们下篇文章

再见

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
1评论

  • 精彩
  • 最新
  • 学会了,极空间哪里领? [傻笑]

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1
扫一下,分享更方便,购买更轻松