by ringhyacinth
A pixel office for your OpenClaw: turn invisible work states into a cozy little space with characters, daily notes, and guest agents. Code under MIT; art assets for non-commercial learning only.
# Add to your Claude Code skills
git clone https://github.com/ringhyacinth/Star-Office-UIGuides for using ai agents skills like Star-Office-UI.
Last scanned: 4/18/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-04-18T05:43:43.962Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}Star-Office-UI is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ringhyacinth. A pixel office for your OpenClaw: turn invisible work states into a cozy little space with characters, daily notes, and guest agents. Code under MIT; art assets for non-commercial learning only. It has 7,399 GitHub stars.
Yes. Star-Office-UI passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/ringhyacinth/Star-Office-UI" and add it to your Claude Code skills directory (see the Installation section above). Star-Office-UI ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
Star-Office-UI is primarily written in HTML. It is open-source under ringhyacinth on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh Star-Office-UI against similar tools.
No comments yet. Be the first to share your thoughts!
本 Skill 面向想快速帮主人搭建"像素办公室看板"的 OpenClaw(龙虾):
你可以先和主人说:
这是一个多人协作的像素办公室仪表盘,你的 AI 助手会根据状态自动走到不同位置,还能看到昨天的工作小记!
在你这台机器执行(按顺序):
# 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 syncing "同步进度中"
# 报错中 → 去 bug 区
python3 set_state.py error "发现问题,正在排查"
# 待命 → 回休息区
python3 set_state.py idle "待命中,随时准备为你服务"
当前默认验证码是:1234。
你需要这样引导主人:
1234,可以先直接体验;修改方式(示例):
export ASSET_DRAWER_PASS="your-strong-pass"
如果是长期运行(systemd / pm2 / 容器),请把该环境变量写入服务配置,而不是只在当前 shell 临时设置。
"搬新家 / 找中介"装修功能需要 Gemini API,但基础看板不需要,不装也能正常使用。
仓库已自带生图脚本(scripts/gemini_image_generate.py),但运行需要独立的 Python 环境。在项目根目录执行:
# 创建 skill 目录结构
mkdir -p ../skills/gemini-image-generate/scripts
# 复制脚本到 skill 目录
cp scripts/gemini_image_generate.py ../skills/gemini-image-generate/scripts/
# 创建独立虚拟环境并安装依赖
python3 -m venv ../skills/gemini-image-generate/.venv
../skills/gemini-image-generate/.venv/bin/pip install google-genai
安装完成后,后端会自动检测到生图环境,"搬新家 / 找中介"按钮即可使用。
引导用户完成这两项配置:
GEMINI_API_KEYGEMINI_MODEL(推荐:nanobanana-pro 或 nanobanana-2)配置方式有两种:
export GEMINI_API_KEY="your-key"并明确告诉用户:
如果页面提示缺少 key,指导用户在侧边栏里直接填写并保存(运行时配置入口)。
推荐先用 Cloudflare Tunnel(最快):
cloudflared tunnel --url http://127.0.0.1:19000
拿到 https://xxx.trycloudflare.com 后发给主人,并补一句:
这是临时公网链接;如果你愿意,后续我可以一步步带你部署到本地域名。
提醒主人:
1234;提醒主人:
如果有其他 OpenClaw 想加入你主人的办公室:
你可以让其他龙虾:
office-agent-push.py(可以直接从你这个仓库拿)join-agent + 周期 agent-pushjoin-keys.json(ocj_starteam01 ~ ocj_starteam08)如果你主人想看到"昨日小记":
memory/YYYY-MM-DD.md代码玩法可以基于 MIT 用,但美术资产(包括角色/场景)禁止商用;如果你要商用,请务必换成你自己的原创美术资产。
用 join key 加入,然后持续推送状态就行;仓库里有
office-agent-push.py可以给其他龙虾用。
writing/researching/executing),再开始工作;本次重制核心请按四条理解:
- 新增中英日三语
- 新增资产管理(全量美术可自定义)
- 接入生图 API(龙虾自动改房间 + 用户手动装修)
- 美术资产替换与优化(含命名与索引重建)
当用户使用"搬新家 / 找中介"时,优先推荐:
其他模型在房间结构保持与风格一致性上可能不稳定。
推荐配置:
GEMINI_API_KEYGEMINI_MODEL=nanobanana-pro(或 nanobanana-2)并提示用户:缺 key 时可在侧边栏内直接填写并保存。
默认验证码为 1234,但生产/公网场景必须改强密码:
export ASSET_DRAWER_PASS="your-strong-pass"
理由:防止外部访问者修改房间布局、装饰和资产配置。
主角状态素材已切换为无版权争议的小猫,不再沿用旧角色版权说明。
保留统一口径:
在帮助主人安装时,需明确提醒:
建议对主人口径:
先把基础看板跑起来;需要"无限换背景/AI 生图装修"再接入自己的 API。
如果主人之前已经下载过旧版,按以下步骤升级:
state.json、自定义资产)。git pull 或重新克隆到新目录)。python3 -m pip install -r backend/requirements.txt。ASSET_DRAWER_PASSGEMINI_API_KEY / GEMINI_MODEL(如需生图)asset-positions.jsonasset-defaults.json/health本次更新以后,至少提醒主人以下变化:
nanobanana-pro / nanobanana-2)。ASSET_DRAWER_PASS 生产环境建议改强密码。本次更新修复了多个影响线上稳定运行的问题:
phaser.js 被缓存为 404 达 2.7 天)。fetchStatus() 中的 JS 语法错误(多余 else 块),解决页面卡 loading 问题。100dvh 适配、overscroll-behavior: contain。expiresAt)和并发上限(maxConcurrent),join-keys.json 不再入库。详细说明见:
docs/UPDATE_REPORT_2026-03-05.md
🌐 Language: 中文 | English | 日本語

一个像素风格的 AI 办公室看板 —— 把 AI 助手的工作状态实时可视化,让你直观看到"谁在做什么、昨天做了什么、现在是否在线"。
支持多 Agent 协作、中英日三语、AI 生图装修、桌面宠物模式。 与 OpenClaw 深度集成时体验最佳,也可以独立部署作为状态看板使用。
本项目由 Ring Hyacinth 与 Simon Lee 共同创建(co-created project),并与社区开发者(@Zhaohan-Wang、@Jah-yee、@liaoandi)一起持续维护和共建。 欢迎提交 Issue 和 PR,也感谢每一位贡献者的支持。
如果你正在使用 OpenClaw,直接把下面这句话发给你的龙虾:
请按照这个 SKILL.md 帮我完成 Star Office UI 的部署:
https://github.com/ringhyacinth/Star-Office-UI/blob/master/SKILL.md
龙虾会自动完成 clone、安装依赖、启动后端、配置状态同步,并把访问地址发给你。
环境要求:Python 3.10+(代码使用了
X | Yunion type 语法,不支持 3.9 及更低版本)
# 1) 下载仓库
git clone https://github.com/ringhyacinth/Star-Office-UI.git
cd Star-Office-UI
# 2) 安装依赖(需要 Python 3.10+)
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 "待命中"

这是完整体验。Agent 在工作时自动切换状态,办公室里的像素角色会实时走到对应区域——你只需要打开网页,就能看到 AI 此刻在做什么。
也完全可以部署。你可以:
set_state.py 或 API 手动 / 脚本推送状态idle / writing / researching / executing / syncing / error)自动映射到办公室不同区域,动画 + 气泡实时展示memory/*.md 读取最近一天的工作记录,脱敏后展示为"昨日小记"卡片cd Star-Office-UI
python3 -m pip install -r backend/requirements.txt
cp state.sample.json state.json
cd backend
python3 app.py
打开 http://127.0.0.1:19000
✅ 首次部署可以先保留默认配置;在生产环境中,请复制
.env.example为.env并设置强随机的FLASK_SECRET_KEY与ASSET_DRAWER_PASS,避免弱密码和会话泄露。
python3 set_state.py writing "正在整理文档"
python3 set_state.py syncing "同步进度中"
python3 set_state.py error "发现问题,排查中"
python3 set_state.py idle "待命中"
cloudflared tunnel --url http://127.0.0.1:19000
拿到 https://xxx.trycloudflare.com 链接即可分享。
python3 scripts/smoke_test.py --base-url http://127.0.0.1:19000
所有检查显示 OK 即表示部署成功。
以下内容面向 OpenClaw 用户。如果你不使用 OpenClaw,可以跳过这一节。
在你的 SOUL.md(或 Agent 规则文件)中加入以下规则,让 Agent 自觉维护状态:
## Star Office 状态同步规则
- 接到任务时:先执行 `python3 set_state.py <状态> "<描述>"` 再开始工作
- 完成任务后:执行 `python3 set_state.py idle "待命中"` 再回复
6 种状态 → 3 个区域的映射:
| 状态 | 办公室区域 | 触发场景 |
|---|---|---|
idle |
🛋 休息区(沙发) | 待命 / 任务完成 |
writing |
💻 工作区(办公桌) | 写代码 / 写文档 |
researching |
💻 工作区 | 搜索 / 调研 |
executing |
💻 工作区 | 执行命令 / 跑任务 |
syncing |
💻 工作区 | 同步数据 / 推送 |
error |
🐛 Bug 区 | 报错 / 异常排查 |
Step 1:准备 join key
首次启动后端时,如果当前目录下不存在 join-keys.json,服务会自动根据 join-keys.sample.json 生成一个运行时的 join-keys.json(内含示例 key,例如 ocj_example_team_01)。你可以在生成后的 join-keys.json 中自行添加、修改或删除 key,每个 key 默认支持最多 3 人同时在线。
Step 2:让访客 Agent 运行推送脚本
访客只需下载 office-agent-push.py,填写 3 个变量即可:
JOIN_KEY = "ocj_starteam02" # 你分配的 key
AGENT_NAME = "小明的龙虾" # 显示名称
OFFICE_URL = "https://office.hyacinth.im" # 你的办公室地址
python3 office-agent-push.py
脚本会自动加入办公室并每 15 秒推送一次状态。访客会出现在看板上,根据状态自动走到对应区域。
Step 3(可选):访客安装 Skill
访客也可以把 frontend/join-office-skill.md 作为 Skill 使用,Agent 会自动完成配置和推送。
详细的访客接入说明见
frontend/join-office-skill.md
| 端点 | 说明 |
|---|---|
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 |
轮询生图进度 |
desktop-pet/ 目录提供了一个基于 Electron 的桌面封装版本,可以把像素办公室变成一个透明窗口的桌面宠物。
cd desktop-pet
npm install
npm run dev
http://127.0.0.1:19000/?desktop=1⚠️ 这是一个可选的实验性功能,目前主要在 macOS 上开发测试。详见
desktop-pet/README.md。🙏 桌面宠物版由 @Zhaohan-Wang 独立开发,感谢他的贡献!
访客角色动画使用了 LimeZu 的免费资产:
请在二次发布 / 演示时保留来源说明,并遵守原作者许可条款。
LICENSE)如需商用,请将所有美术资产替换为你自己的原创素材。
| 日期 | 概要 | 详情 |
|---|---|---|
| 2026-03-06 | 🔌 默认端口调整 — 默认后端端口从 18791 调整为 19000,以避开 OpenClaw Browser Control 端口冲突;同步更新脚本、桌面壳与文档默认值 | docs/CHANGELOG_2026-03.md |
| 2026-03-05 | 📱 稳定性修复 — CDN 缓存修复、生图异步化、移动端侧边栏优化、Join Key 过期与并发控制 | docs/UPDATE_REPORT_2026-03-05.md |
| 2026-03-04 | 🔒 P0/P1 安全加固 — 弱密码拦截、后端模块拆分、stale 状态自动回 idle、首屏骨架屏优化 | docs/UPDATE_REPORT_2026-03-04_P0_P1.md |
| 2026-03-03 | 📋 开源发布检查清单完成 | docs/OPEN_SOURCE_RELEASE_CHECKLIST.md |
| 2026-03-01 | 🎉 v2 重制发布 — 新增三语支持、资产管理系统、AI 生图装修、美术资产全面替换 | docs/FEATURES_NEW_2026-03-01.md |
Star-Office-UI/
├── backend/ # Flask 后端
│ ├── app.py
│ ├── requirements.txt
│ └── run.sh
├── frontend/ # 前端页面与资产
│ ├── index.html
│ ├── join.html
│ ├── invite.html
│ └── layout.js
├── desktop-pet/ # Electron 桌面宠物版(可选)
├── docs/ # 文档与截图
│ └── screenshots/
├── office-agent-push.py # 访客推送脚本
├── set_state.py # 状态切换脚本
├── state.sample.json # 状态文件模板
├── join-keys.sample.json # Join Key 模板(启动时生成 join-keys.json)
├── SKILL.md # OpenClaw Skill
└── LICENSE # MIT 许可