简体中文 | English | 한국어 | Français | Deutsch | 日本語 | Русский | Español | Português | Italiano | Tiếng Việt | العربية
Um painel de escritório em pixels para colaboração multiagente: mostra em tempo real o que seus assistentes de IA (OpenClaw, Lobster, etc.) estão fazendo — quem está ativo, o que aconteceu «ontem» e quem está online — para que as pessoas entendam o cenário num relance.
Este repositório é uma implementação Node.js / Express da ideia Star-Office-UI original. Mantém a mesma aparência e contrato HTTP para que agentes e scripts existentes quase não precisem mudar, enquanto o backend é estruturado para serviço de longa duração — não um único script monolítico.
O projeto oferece quatro estilos: Pixel, Soft, Night Blue e Paper; o padrão é Pixel.

src/, em vez de um único arquivo. Mais fácil de revisar, testar e estender.engines, only-allow, engine-strict no .npmrc, verificação em src/bootstrap/env-check.js). CI e onboarding se comportam igual em todo lugar.SIGTERM / SIGINT (adequado para Docker/K8s). GET /health para liveness e GET /ready após inicializar a persistência.memory/ (veja GET /yesterday-memo), transformando diários em um breve «o que fizemos da última vez».Créditos do projeto original abaixo; em seguida, como executar e integrar.
Obrigado por abrir o conceito de escritório em pixels, os assets e o design de interação.
Requer Node ≥ 20 e pnpm ≥ 9 (instale o pnpm se precisar).
git clone https://github.com/wangmiaozero/Star-Office-UI-Node.git
cd Star-Office-UI-Node
pnpm install
pnpm start
URL padrão: http://127.0.0.1:18791
Desenvolvimento com watch:
pnpm dev
Se a porta estiver ocupada:
PORT=18792 pnpm start
Arquivo de ambiente opcional:
cp .env.example .env
SKIP_PNPM_CHECK=1 está documentado apenas para casos extremos em que você precise rodar node src/server.js sem pnpm — não é recomendado em produção.
docker compose up -d
Depois abra: http://127.0.0.1:18791
Definir o estado do agente principal (helper CLI):
pnpm set-state writing "Drafting docs"
Saúde e prontidão:
curl -s http://127.0.0.1:18791/health curl -s http://127.0.0.1:18791/ready
GET /health — livenessGET /ready — readiness (após verificações de inicialização)GET /status — status do agente principalPOST /set_state — definir status do agente principalGET /agents — listar agentes (limpeza de convidados / lógica offline aplicada)POST /join-agent — entrada de agente convidadoPOST /agent-push — envio de status do agentePOST /leave-agent — saída do agentePOST /agent-approve / POST /agent-reject — aprovar ou rejeitar convidadoGET /yesterday-memo — memo derivado de memory/YYYY-MM-DD.mdGET /, /join, /invite — páginas web; assets estáticos em /staticidle, writing, researching, executing, syncing, errorMapeamento de compatibilidade:
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"}'
Ciclo de vida sugerido:
join-agent na inicializaçãoagentId localmenteleave-agent no encerramento gracioso403/404, parar de enviar e entrar de novo ou alertarSe este projeto ajudar você, uma estrela é apreciada.
Made with ❤️ by wangmiaozero