logo
0
0
WeChat Login
wangmiao<tuziling84@gmail.com>
fix

简体中文 | English | 한국어 | Français | Deutsch | 日本語 | Русский | Español | Português | Italiano | Tiếng Việt | العربية

Star Office UI Node

License Node pnpm GitHub stars

Un panel tipo oficina pixel para colaboración multiagente: muestra en tiempo real qué hacen tus asistentes de IA (OpenClaw, Lobster, etc.) — quién está activo, qué pasó «ayer» y quién está en línea — para que las personas entiendan la situación de un vistazo.

Este repositorio es una implementación Node.js / Express de la idea Star-Office-UI original. Mantiene la misma apariencia y contrato HTTP para que agentes y scripts existentes casi no cambien, mientras el backend está pensado para servicios de larga ejecución, no un único script monolítico.

El proyecto ofrece cuatro estilos: Pixel, Soft, Night Blue y Paper; el predeterminado es Pixel.

像素风格 柔和风格 夜青风格 纸本风格

Qué distingue a este fork

  • Código orientado a servicio: rutas, servicios, configuración y arranque bajo src/, no un solo archivo gigante. Más fácil de revisar, probar y extender.
  • La cadena de herramientas importa: se exigen pnpm y Node ≥ 20 (engines, only-allow, engine-strict en .npmrc, comprobación en src/bootstrap/env-check.js). CI y onboarding se comportan igual en todas partes.
  • Operación: el servidor HTTP hace apagado ordenado con SIGTERM / SIGINT (adecuado para Docker/K8s). GET /health para liveness y GET /ready tras inicializar la persistencia.
  • Estado en disco: estado principal, lista de agentes y claves de unión en JSON junto a la app — sencillo de respaldar, comparar y montar con volúmenes en compose.
  • Memo de ayer: lee Markdown de un directorio hermano memory/ (véase GET /yesterday-memo), convirtiendo diarios en un breve «qué hicimos la última vez».

Los créditos del proyecto original están abajo; después se explica cómo ejecutar e integrar.

Créditos

Gracias por publicar en abierto el concepto de oficina pixel, los recursos y el diseño de interacción.

Inicio rápido

Necesitas Node ≥ 20 y pnpm ≥ 9 (instala pnpm si hace falta).

git clone https://github.com/wangmiaozero/Star-Office-UI-Node.git cd Star-Office-UI-Node pnpm install pnpm start

URL por defecto: http://127.0.0.1:18791

Desarrollo con recarga:

pnpm dev

Si el puerto está ocupado:

PORT=18792 pnpm start

Archivo de entorno opcional:

cp .env.example .env

SKIP_PNPM_CHECK=1 solo está documentado para casos excepcionales en los que debas ejecutar node src/server.js sin pnpm — no se recomienda en producción.

Docker Compose

docker compose up -d

Luego abre: http://127.0.0.1:18791

Comandos habituales

Establecer el estado del agente principal (ayuda CLI):

pnpm set-state writing "Drafting docs"

Salud y preparación:

curl -s http://127.0.0.1:18791/health curl -s http://127.0.0.1:18791/ready

Resumen de la API

  • GET /health — liveness
  • GET /ready — readiness (tras comprobaciones de arranque)
  • GET /status — estado del agente principal
  • POST /set_state — establecer estado del agente principal
  • GET /agents — listar agentes (se aplica limpieza de invitados / lógica offline)
  • POST /join-agent — unión de agente invitado
  • POST /agent-push — envío de estado del agente
  • POST /leave-agent — salida del agente
  • POST /agent-approve / POST /agent-reject — aprobar o rechazar invitado
  • GET /yesterday-memo — memo derivado de memory/YYYY-MM-DD.md
  • GET /, /join, /invite — páginas web; recursos estáticos bajo /static

Integración con OpenClaw / Lobster

1) Estados admitidos

  • idle, writing, researching, executing, syncing, error

Mapeo de compatibilidad:

  • working / busy / writewriting
  • run / running / execute / execexecuting
  • syncsyncing
  • research / searchresearching

2) Unirse una vez y guardar agentId

curl -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" }'

3) Enviar estado periódicamente (cada 10–30 s)

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" }'

4) Salir

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:

  1. Llamar a join-agent al arrancar
  2. Persistir agentId localmente
  3. Enviar periódicamente
  4. Llamar a leave-agent en apagado ordenado
  5. Ante 403/404, dejar de enviar y volver a unirse o alertar

Licencia

  • Código: MIT
  • Los recursos gráficos pueden tener términos adicionales del proyecto original; para uso comercial, sustituye por los tuyos donde haga falta.

Historial de estrellas

Si este proyecto te ayuda, se agradece una estrella.


Made with ❤️ by wangmiaozero