简体中文 | English | 한국어 | Français | Deutsch | 日本語 | Русский | Español | Português | Italiano | Tiếng Việt | العربية
Tableau de bord « bureau pixel » pour la collaboration multi-agents : il montre en temps réel ce que font vos assistants IA (OpenClaw, Lobster, etc.) — qui est actif, ce qui s’est passé « hier », qui est en ligne — pour que l’humain comprenne la situation d’un coup d’œil.
Ce dépôt est une implémentation Node.js / Express de l’idée Star-Office-UI en amont. Le rendu et le contrat HTTP restent alignés pour que les agents et scripts existants changent peu ou pas, tandis que le backend est pensé pour un service longue durée, pas un seul gros script.
Quatre styles d’interface : Pixel, Doux, Nuit bleue et Papier ; Pixel par défaut.

src/, pas un fichier monolithique. Plus simple à relire, tester et faire évoluer.engines, only-allow, engine-strict dans .npmrc, garde au démarrage dans src/bootstrap/env-check.js). CI et poste local se comportent pareil.SIGTERM / SIGINT (Docker/K8s). GET /health (vivant) et GET /ready après initialisation de la persistance.memory/ (GET /yesterday-memo), pour un court rappel de la veille.Node ≥ 20 et pnpm ≥ 9 (installation pnpm).
git clone https://github.com/wangmiaozero/Star-Office-UI-Node.git
cd Star-Office-UI-Node
pnpm install
pnpm start
URL par défaut : http://127.0.0.1:18791
Développement avec rechargement :
pnpm dev
Port occupé :
PORT=18792 pnpm start
Fichier d’environnement optionnel :
cp .env.example .env
SKIP_PNPM_CHECK=1 est prévu uniquement pour lancer node src/server.js sans pnpm — déconseillé en production.
docker compose up -d
Puis ouvrir : http://127.0.0.1:18791
État de l’agent principal :
pnpm set-state writing "Rédaction de la doc"
Santé :
curl -s http://127.0.0.1:18791/health curl -s http://127.0.0.1:18791/ready
GET /health — vivacitéGET /ready — prêt (après les contrôles de démarrage)GET /status — état de l’agent principalPOST /set_state — définir l’état principalGET /agents — liste des agents (nettoyage invités / hors ligne)POST /join-agent — rejoindre en invitéPOST /agent-push — pousser l’état invitéPOST /leave-agent — quitterPOST /agent-approve / POST /agent-reject — approuver ou refuser un invitéGET /yesterday-memo — mémo basé sur memory/AAAA-MM-JJ.mdGET /, /join, /invite — pages ; ressources statiques sous /staticidle, writing, researching, executing, syncing, errorCorrespondances :
working / busy / write → writingrun / running / execute / exec → executingsync → syncingresearch / search → researchingcurl -s -X POST http://127.0.0.1:18791/join-agent \
-H "Content-Type: application/json" \
-d '{
"name": "openclaw-agent-01",
"joinKey": "ocj_starteam02",
"state": "idle",
"detail": "just joined"
}'
curl -s -X POST http://127.0.0.1:18791/agent-push \
-H "Content-Type: application/json" \
-d '{
"agentId": "agent_xxx",
"joinKey": "ocj_starteam02",
"name": "openclaw-agent-01",
"state": "writing",
"detail": "working on current task context"
}'
curl -s -X POST http://127.0.0.1:18791/leave-agent \
-H "Content-Type: application/json" \
-d '{"agentId":"agent_xxx"}'
Cycle suggéré : join-agent au démarrage → persister agentId → pousser en boucle → leave-agent à l’arrêt → sur 403/404, arrêter les push et rejoindre ou alerter.
Si ce projet vous aide, une étoile est appréciée.
Made with ❤️ by wangmiaozero