Star-Office-UI
Star-Office-UI 是一款像素风格的 AI 办公室看板系统,旨在解决 AI Agent 工作状态'看不见'的问题。它将抽象的工作状态转化为可视化的场景:
- 休息区(沙发):Agent 待命或任务完成时的状态
- 工作区(办公桌):Agent 正在工作时的状态(写代码、写文档、搜索、执行任务等)
- Bug 区:Agent 遇到错误或异常时的状态
角色会根据当前状态自动移动到对应区域,配合动画和气泡提示,让 AI 的工作变得'可见'和'有趣'。支持多 Agent 协作、中英日三语、AI 生图装修、桌面宠物模式。
核心特性
- 状态可视化:6 种工作状态映射到办公室的 3 个区域,角色自动移动。
- 多 Agent 协作:通过 join key 邀请其他 Agent 加入办公室,实时同步状态。
- 多语言支持:CN / EN / JP 一键切换,界面文案、气泡全部联动。
- AI 生图装修:接入 Gemini API,用 AI 给办公室换背景。
- 桌面宠物模式:基于 Tauri 的桌面封装版本,把办公室变成透明窗口的桌面宠物。
- 安全加固:侧边栏密码保护,生产环境弱密码拦截。
- 昨日小记:自动从
memory/*.md读取最近一天的工作记录展示。 - 灵活公网访问:推荐使用 Cloudflare Tunnel 一键公网化。
快速开始
方式一:手动部署
# 1) 下载仓库
git clone https://github.com/ringhyacinth/Star-Office-UI.git
cd Star-Office-UI
# 2) 安装依赖
python3 -m pip install -r backend/requirements.txt
# 3) 准备状态文件(首次)
cp state.sample.json state.json
# 4) 启动后端
cd backend
python3 app.py
打开 http://127.0.0.1:19000,然后试试切状态:
python3 set_state.py writing "正在整理文档"
python3 set_state.py error "发现问题,排查中"
python3 set_state.py idle "待命中"
技术架构
Star-Office-UI 采用前后端分离的架构设计:
- 后端(backend/):基于 Flask 的后端服务,提供 API 接口和状态管理。
- 前端(frontend/):基于 Phaser 的前端页面,实现像素风格的办公室场景。
- 桌面宠物(desktop-pet/):基于 Tauri 的桌面封装版本。
核心组件:
- 状态管理模块:负责 Agent 状态的存储、更新和同步。
- 多 Agent 协作模块:处理 join key、访客加入、状态推送等。
- 前端渲染引擎:基于 Phaser 的像素风格场景渲染。
- AI 生图模块:集成 Gemini API,实现 AI 生图装修功能。
状态映射机制
| 状态 | 办公室区域 | 触发场景 |
|---|---|---|
idle | 🛋 休息区(沙发) | 待命 / 任务完成 |
writing | 💻 工作区(办公桌) | 写代码 / 写文档 |
researching | 💻 工作区 | 搜索 / 调研 |
executing | 💻 工作区 | 执行命令 / 跑任务 |
syncing | 💻 工作区 | 同步数据 / 推送 |
error | 🐛 Bug 区 | 报错 / 异常排查 |
OpenClaw 集成
在 OpenClaw 的 SOUL.md(或 Agent 规则文件)中加入以下规则:
## Star Office 状态同步规则
- 接到任务时:先执行 `python3 set_state.py <状态> "<描述>"` 再开始工作
- 完成任务后:执行 `python3 set_state.py idle "待命中"` 再回复
项目资源
- GitHub: https://github.com/ringhyacinth/Star-Office-UI
- Issues: https://github.com/ringhyacinth/Star-Office-UI/issues
- SKILL.md: OpenClaw Skill 文档
常用 API
| 端点 | 说明 |
|---|---|
GET /health | 健康检查 |
GET /status | 获取主 Agent 状态 |
POST /set_state | 设置主 Agent 状态 |
GET /agents | 获取多 Agent 列表 |
POST /join-agent | 访客加入办公室 |
POST /agent-push | 访客推送状态 |
GET /yesterday-memo | 获取昨日小记 |
美术资产
访客角色动画使用了 LimeZu 的免费资产:Animated Mini Characters 2 (Platformer) [FREE]。美术资产禁止商用(仅学习/演示/交流用途),代码采用 MIT 许可证。


