2026-02-26 03:13:51 +00:00
# Star Office UI
2026-03-07 03:47:53 +00:00
🌐 Language: **中文** | [English ](./README.en.md ) | [日本語 ](./README.ja.md )
2026-03-04 10:45:41 +00:00
2026-03-07 03:47:53 +00:00

2026-03-03 15:15:18 +00:00
2026-03-07 03:47:53 +00:00
**一个像素风格的 AI 办公室看板** —— 把 AI 助手的工作状态实时可视化,让你直观看到"谁在做什么、昨天做了什么、现在是否在线"。
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
支持多 Agent 协作、中英日三语、AI 生图装修、桌面宠物模式。
与 [OpenClaw ](https://github.com/openclaw/openclaw ) 深度集成时体验最佳,也可以独立部署作为状态看板使用。
2026-03-06 09:51:24 +00:00
2026-03-07 03:47:53 +00:00
> 本项目由 **[Ring Hyacinth](https://x.com/ring_hyacinth)** 与 **[Simon Lee](https://x.com/simonxxoo)** 共同创建( co-created project) , 并与社区开发者( [@Zhaohan-Wang](https://github.com/Zhaohan-Wang)、[@Jah-yee](https://github.com/Jah-yee)、[@liaoandi](https://github.com/liaoandi))一起持续维护和共建。
> 欢迎提交 Issue 和 PR, 也感谢每一位贡献者的支持。
2026-03-03 11:18:38 +00:00
2026-03-01 07:10:55 +00:00
---
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
## ✨ 快速体验
2026-03-06 09:51:24 +00:00
2026-03-07 03:47:53 +00:00
### 方式一:让龙虾帮你部署(推荐给 OpenClaw 用户)
2026-03-06 09:51:24 +00:00
2026-03-07 03:47:53 +00:00
如果你正在使用 [OpenClaw ](https://github.com/openclaw/openclaw ),直接把下面这句话发给你的龙虾:
2026-03-06 09:51:24 +00:00
```text
2026-03-07 03:47:53 +00:00
请按照这个 SKILL.md 帮我完成 Star Office UI 的部署:
2026-03-06 09:51:24 +00:00
https://github.com/ringhyacinth/Star-Office-UI/blob/master/SKILL.md
```
2026-03-07 03:47:53 +00:00
龙虾会自动完成 clone、安装依赖、启动后端、配置状态同步, 并把访问地址发给你。
2026-03-06 09:51:24 +00:00
2026-03-07 03:47:53 +00:00
### 方式二: 30 秒手动部署
2026-03-01 07:45:34 +00:00
2026-03-10 09:27:21 +00:00
> **环境要求: Python 3.10+**(代码使用了 `X | Y` union type 语法,不支持 3.9 及更低版本)
2026-03-01 07:45:34 +00:00
```bash
2026-03-07 03:47:53 +00:00
# 1) 下载仓库
2026-03-01 07:45:34 +00:00
git clone https://github.com/ringhyacinth/Star-Office-UI.git
cd Star-Office-UI
2026-03-10 09:27:21 +00:00
# 2) 安装依赖(需要 Python 3.10+)
2026-03-01 07:45:34 +00:00
python3 -m pip install -r backend/requirements.txt
2026-03-07 03:47:53 +00:00
# 3) 准备状态文件(首次)
2026-03-01 07:45:34 +00:00
cp state.sample.json state.json
2026-03-07 03:47:53 +00:00
# 4) 启动后端
2026-03-01 07:45:34 +00:00
cd backend
python3 app.py
```
2026-03-10 12:04:34 +00:00
打开 **http://127.0.0.1:19000** 然后试试切状态:
2026-03-01 07:45:34 +00:00
```bash
2026-03-07 03:47:53 +00:00
python3 set_state.py writing "正在整理文档"
python3 set_state.py error "发现问题,排查中"
python3 set_state.py idle "待命中"
2026-03-01 07:45:34 +00:00
```
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00

2026-02-26 03:13:51 +00:00
2026-03-06 09:51:24 +00:00
---
2026-03-07 03:47:53 +00:00
## 🤔 适合谁用?
2026-03-06 09:51:24 +00:00
2026-03-07 03:47:53 +00:00
### 有 OpenClaw / AI Agent 的用户
这是**完整体验**。Agent 在工作时自动切换状态,办公室里的像素角色会实时走到对应区域——你只需要打开网页,就能看到 AI 此刻在做什么。
### 没有 OpenClaw 的用户
也完全可以部署。你可以:
- 用 `set_state.py` 或 API 手动 / 脚本推送状态
- 把它当成一个像素风的个人状态页 / 远程办公看板
- 接入任何能发 HTTP 请求的系统来驱动状态
2026-03-06 09:51:24 +00:00
2026-03-01 07:10:55 +00:00
---
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
## 📋 功能一览
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
1. **状态可视化** —— 6 种状态(`idle` / `writing` / `researching` / `executing` / `syncing` / `error` )自动映射到办公室不同区域,动画 + 气泡实时展示
2. **昨日小记** —— 自动从 `memory/*.md` 读取最近一天的工作记录,脱敏后展示为"昨日小记"卡片
3. **多 Agent 协作** —— 通过 join key 邀请其他 Agent 加入你的办公室,实时查看多人状态
4. **中英日三语** —— CN / EN / JP 一键切换,界面文案、气泡、加载提示全部联动
5. **美术资产自定义** —— 侧边栏管理角色 / 场景 / 装饰素材,支持动态帧同步,避免闪烁
6. **AI 生图装修** —— 接入 Gemini API, 用 AI 给办公室换背景;不接入 API 也能正常使用核心功能
7. **移动端适配** —— 手机直接打开即可查看,适合外出时快速瞄一眼
8. **安全加固** —— 侧边栏密码保护、生产环境弱密码拦截、Session Cookie 加固
9. **灵活公网访问** —— 推荐 Cloudflare Tunnel 一键公网化,也可用自有域名 / 反向代理
2026-03-11 03:52:52 +00:00
10. **桌面宠物版** —— 可选的 Electron 桌面封装,把办公室变成透明窗口的桌面宠物(见下方说明)
2026-02-26 03:13:51 +00:00
2026-03-01 07:10:55 +00:00
---
2026-03-01 07:09:00 +00:00
2026-03-07 03:47:53 +00:00
## 🚀 详细部署指南
2026-03-01 07:09:00 +00:00
2026-03-07 03:47:53 +00:00
### 1) 安装依赖
2026-02-26 03:13:51 +00:00
```bash
2026-03-05 16:04:52 +00:00
cd Star-Office-UI
2026-03-01 07:09:00 +00:00
python3 -m pip install -r backend/requirements.txt
2026-02-26 03:13:51 +00:00
```
2026-03-07 03:47:53 +00:00
### 2) 初始化状态文件
2026-02-26 03:13:51 +00:00
2026-03-01 07:09:00 +00:00
```bash
cp state.sample.json state.json
```
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
### 3) 启动后端
2026-02-26 03:13:51 +00:00
```bash
2026-03-01 07:09:00 +00:00
cd backend
python3 app.py
2026-02-26 03:13:51 +00:00
```
2026-03-07 03:47:53 +00:00
打开 `http://127.0.0.1:19000`
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
> ✅ 首次部署可以先保留默认配置;在生产环境中,请复制 `.env.example` 为 `.env` 并设置强随机的 `FLASK_SECRET_KEY` 与 `ASSET_DRAWER_PASS`,避免弱密码和会话泄露。
2026-03-05 18:04:10 +00:00
2026-03-07 03:47:53 +00:00
### 4) 切换状态
2026-02-26 03:13:51 +00:00
```bash
2026-03-07 03:47:53 +00:00
python3 set_state.py writing "正在整理文档"
python3 set_state.py syncing "同步进度中"
python3 set_state.py error "发现问题,排查中"
python3 set_state.py idle "待命中"
2026-02-26 03:13:51 +00:00
```
2026-03-07 03:47:53 +00:00
### 5) 公网访问(可选)
2026-03-01 07:09:00 +00:00
2026-03-05 16:04:52 +00:00
```bash
2026-03-06 09:11:35 +00:00
cloudflared tunnel --url http://127.0.0.1:19000
2026-03-05 16:04:52 +00:00
```
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
拿到 `https://xxx.trycloudflare.com` 链接即可分享。
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
### 6) 验证安装(可选)
2026-03-05 18:04:10 +00:00
```bash
2026-03-06 09:11:35 +00:00
python3 scripts/smoke_test.py --base-url http://127.0.0.1:19000
2026-03-05 18:04:10 +00:00
```
2026-03-07 03:47:53 +00:00
所有检查显示 `OK` 即表示部署成功。
2026-03-05 18:04:10 +00:00
2026-03-01 07:10:55 +00:00
---
2026-02-26 03:13:51 +00:00
2026-03-07 03:47:53 +00:00
## 🦞 OpenClaw 深度集成
2026-03-01 07:10:55 +00:00
2026-03-07 03:47:53 +00:00
> 以下内容面向 [OpenClaw](https://github.com/openclaw/openclaw) 用户。如果你不使用 OpenClaw, 可以跳过这一节。
2026-03-01 07:10:55 +00:00
2026-03-07 03:47:53 +00:00
### 状态自动同步
2026-03-01 07:10:55 +00:00
2026-03-07 03:47:53 +00:00
在你的 `SOUL.md` (或 Agent 规则文件)中加入以下规则,让 Agent 自觉维护状态:
2026-03-01 07:10:55 +00:00
2026-03-05 16:04:52 +00:00
```markdown
2026-03-07 03:47:53 +00:00
## Star Office 状态同步规则
- 接到任务时:先执行 `python3 set_state.py <状态> "<描述>"` 再开始工作
- 完成任务后:执行 `python3 set_state.py idle "待命中"` 再回复
2026-03-05 16:04:52 +00:00
```
2026-03-03 11:18:38 +00:00
2026-03-07 03:47:53 +00:00
**6 种状态 → 3 个区域的映射:**
2026-03-03 11:18:38 +00:00
2026-03-07 03:47:53 +00:00
| 状态 | 办公室区域 | 触发场景 |
|------|-----------|---------|
| `idle` | 🛋 休息区(沙发) | 待命 / 任务完成 |
| `writing` | 💻 工作区(办公桌) | 写代码 / 写文档 |
| `researching` | 💻 工作区 | 搜索 / 调研 |
| `executing` | 💻 工作区 | 执行命令 / 跑任务 |
| `syncing` | 💻 工作区 | 同步数据 / 推送 |
| `error` | 🐛 Bug 区 | 报错 / 异常排查 |
2026-03-01 07:10:55 +00:00
2026-03-07 03:47:53 +00:00
### 邀请其他 Agent 加入办公室
2026-03-01 07:10:55 +00:00
2026-03-07 03:47:53 +00:00
**Step 1: 准备 join key**
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
首次启动后端时,如果当前目录下不存在 `join-keys.json` ,服务会自动根据 `join-keys.sample.json` 生成一个运行时的 `join-keys.json` (内含示例 key, 例如 `ocj_example_team_01` )。你可以在生成后的 `join-keys.json` 中自行添加、修改或删除 key, 每个 key 默认支持最多 3 人同时在线。
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
**Step 2: 让访客 Agent 运行推送脚本**
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
访客只需下载 `office-agent-push.py` ,填写 3 个变量即可:
2026-03-03 10:08:59 +00:00
2026-03-05 16:04:52 +00:00
```python
2026-03-07 03:47:53 +00:00
JOIN_KEY = "ocj_starteam02" # 你分配的 key
AGENT_NAME = "小明的龙虾" # 显示名称
OFFICE_URL = "https://office.hyacinth.im" # 你的办公室地址
2026-03-05 16:04:52 +00:00
```
2026-03-03 10:08:59 +00:00
2026-03-05 16:04:52 +00:00
```bash
python3 office-agent-push.py
```
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
脚本会自动加入办公室并每 15 秒推送一次状态。访客会出现在看板上,根据状态自动走到对应区域。
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
**Step 3( 可选) : 访客安装 Skill**
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
访客也可以把 `frontend/join-office-skill.md` 作为 Skill 使用, Agent 会自动完成配置和推送。
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
> 详细的访客接入说明见 [`frontend/join-office-skill.md`](./frontend/join-office-skill.md)
2026-03-03 10:08:59 +00:00
2026-03-05 16:04:52 +00:00
---
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
## 📡 常用 API
| 端点 | 说明 |
|------|------|
| `GET /health` | 健康检查 |
| `GET /status` | 获取主 Agent 状态 |
| `POST /set_state` | 设置主 Agent 状态 |
| `GET /agents` | 获取多 Agent 列表 |
| `POST /join-agent` | 访客加入办公室 |
| `POST /agent-push` | 访客推送状态 |
| `POST /leave-agent` | 访客离开 |
| `GET /yesterday-memo` | 获取昨日小记 |
| `GET /config/gemini` | 获取 Gemini API 配置 |
| `POST /config/gemini` | 设置 Gemini API 配置 |
| `GET /assets/generate-rpg-background/poll` | 轮询生图进度 |
2026-03-03 11:08:36 +00:00
2026-03-05 16:04:52 +00:00
---
2026-03-03 10:08:59 +00:00
2026-03-07 03:47:53 +00:00
## 🖥 桌面宠物版(可选)
2026-03-03 11:08:36 +00:00
2026-03-11 03:52:52 +00:00
`desktop-pet/` 目录提供了一个基于 **Electron** 的桌面封装版本,可以把像素办公室变成一个透明窗口的桌面宠物。
2026-03-03 10:08:59 +00:00
```bash
2026-03-05 16:04:52 +00:00
cd desktop-pet
npm install
npm run dev
2026-03-03 10:08:59 +00:00
```
2026-03-07 03:47:53 +00:00
- 启动时自动拉起 Python 后端
- 窗口默认指向 `http://127.0.0.1:19000/?desktop=1`
- 支持通过环境变量自定义项目路径和 Python 路径
2026-03-03 11:08:36 +00:00
2026-03-07 03:47:53 +00:00
> ⚠️ 这是一个**可选的实验性功能**,目前主要在 macOS 上开发测试。详见 [`desktop-pet/README.md`](./desktop-pet/README.md)。
2026-03-06 11:54:09 +00:00
>
2026-03-07 03:47:53 +00:00
> 🙏 桌面宠物版由 [@Zhaohan-Wang](https://github.com/Zhaohan-Wang) 独立开发,感谢他的贡献!
2026-03-03 11:08:36 +00:00
2026-03-05 16:04:52 +00:00
---
2026-03-04 09:48:47 +00:00
2026-03-07 03:47:53 +00:00
## 🎨 美术资产与开源许可
2026-03-04 10:45:41 +00:00
2026-03-07 03:47:53 +00:00
### 资产来源
2026-03-04 09:48:47 +00:00
2026-03-07 03:47:53 +00:00
访客角色动画使用了 **LimeZu** 的免费资产:
2026-03-05 16:04:52 +00:00
- [Animated Mini Characters 2 (Platformer) [FREE]](https://limezu.itch.io/animated-mini-characters-2-platform-free)
2026-03-04 09:48:47 +00:00
2026-03-07 03:47:53 +00:00
请在二次发布 / 演示时保留来源说明,并遵守原作者许可条款。
2026-03-04 09:48:47 +00:00
2026-03-07 03:47:53 +00:00
### 许可协议
2026-03-04 10:45:41 +00:00
2026-03-07 03:47:53 +00:00
- **代码 / 逻辑: MIT**(见 [`LICENSE` ](./LICENSE ))
- **美术资产:禁止商用**(仅学习 / 演示 / 交流用途)
2026-03-04 10:45:41 +00:00
2026-03-07 03:47:53 +00:00
> 如需商用,请将所有美术资产替换为你自己的原创素材。
2026-03-04 09:48:47 +00:00
2026-03-05 16:04:52 +00:00
---
2026-03-04 10:45:41 +00:00
2026-03-07 03:47:53 +00:00
## 📝 更新日志
2026-03-05 14:45:33 +00:00
2026-03-07 03:47:53 +00:00
| 日期 | 概要 | 详情 |
|------|------|------|
| 2026-03-06 | 🔌 默认端口调整 — 默认后端端口从 18791 调整为 19000, 以避开 OpenClaw Browser Control 端口冲突;同步更新脚本、桌面壳与文档默认值 | [`docs/CHANGELOG_2026-03.md` ](./docs/CHANGELOG_2026-03.md ) |
| 2026-03-05 | 📱 稳定性修复 — CDN 缓存修复、生图异步化、移动端侧边栏优化、Join Key 过期与并发控制 | [`docs/UPDATE_REPORT_2026-03-05.md` ](./docs/UPDATE_REPORT_2026-03-05.md ) |
| 2026-03-04 | 🔒 P0/P1 安全加固 — 弱密码拦截、后端模块拆分、stale 状态自动回 idle、首屏骨架屏优化 | [`docs/UPDATE_REPORT_2026-03-04_P0_P1.md` ](./docs/UPDATE_REPORT_2026-03-04_P0_P1.md ) |
| 2026-03-03 | 📋 开源发布检查清单完成 | [`docs/OPEN_SOURCE_RELEASE_CHECKLIST.md` ](./docs/OPEN_SOURCE_RELEASE_CHECKLIST.md ) |
| 2026-03-01 | 🎉 **v2 重制发布** — 新增三语支持、资产管理系统、AI 生图装修、美术资产全面替换 | [`docs/FEATURES_NEW_2026-03-01.md` ](./docs/FEATURES_NEW_2026-03-01.md ) |
2026-03-05 14:45:33 +00:00
2026-03-05 16:04:52 +00:00
---
2026-03-05 14:45:33 +00:00
2026-03-07 03:47:53 +00:00
## 📁 项目结构
2026-03-04 10:45:41 +00:00
```text
2026-03-05 16:04:52 +00:00
Star-Office-UI/
2026-03-07 03:47:53 +00:00
├── backend/ # Flask 后端
2026-03-05 16:04:52 +00:00
│ ├── app.py
│ ├── requirements.txt
│ └── run.sh
2026-03-07 03:47:53 +00:00
├── frontend/ # 前端页面与资产
2026-03-05 16:04:52 +00:00
│ ├── index.html
│ ├── join.html
│ ├── invite.html
│ └── layout.js
2026-03-11 03:52:52 +00:00
├── desktop-pet/ # Electron 桌面宠物版(可选)
2026-03-07 03:47:53 +00:00
├── docs/ # 文档与截图
2026-03-05 16:04:52 +00:00
│ └── screenshots/
2026-03-07 03:47:53 +00:00
├── office-agent-push.py # 访客推送脚本
├── set_state.py # 状态切换脚本
├── state.sample.json # 状态文件模板
├── join-keys.sample.json # Join Key 模板(启动时生成 join-keys.json)
2026-03-05 16:04:52 +00:00
├── SKILL.md # OpenClaw Skill
2026-03-07 03:47:53 +00:00
└── LICENSE # MIT 许可
2026-03-04 14:38:53 +00:00
```
2026-03-04 14:38:15 +00:00
2026-03-05 16:04:52 +00:00
---
2026-03-04 14:38:53 +00:00
2026-03-05 16:04:52 +00:00
## ⭐ Star History
2026-03-04 10:45:41 +00:00
2026-03-05 16:04:52 +00:00
[](https://www.star-history.com/?repos=ringhyacinth%2FStar-Office-UI& type=date& legend=top-left)