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

픽셀 오피스 대시보드로 멀티 에이전트 협업을 시각화합니다. OpenClaw, Lobster 등 AI 어시스턴트가 무엇을 하는지, 누가 활성 상태인지, “어제” 무엇이 있었는지, 누가 온라인인지 한눈에 볼 수 있습니다.

이 저장소는 상위 Star-Office-UI 아이디어를 Node.js / Express로 구현한 것입니다. 화면과 HTTP 계약을 유지해 기존 에이전트·스크립트 변경을 최소화하고, 백엔드는 장기 실행 서비스에 맞게 구성했습니다.

UI 스타일 4종: 픽셀, 소프트, 미드나잇, 페이퍼 — 기본은 픽셀입니다.

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

이 포크의 특징

  • 서비스형 코드베이스: src/ 아래 라우트·서비스·설정·부트스트랩으로 분리.
  • 도구 체인 고정: pnpmNode ≥ 20 (engines, only-allow, engine-strict, src/bootstrap/env-check.js).
  • 운영 친화: SIGTERM / SIGINT 정상 종료. GET /health, 초기화 후 GET /ready.
  • 디스크 상태: 메인 상태, 에이전트 목록, 조인 키를 JSON으로 보관 — 백업·볼륨 마운트에 적합.
  • 어제 메모: 형제 디렉터리 **memory/**의 Markdown을 읽습니다 (GET /yesterday-memo).

크레딧

빠른 시작

Node ≥ 20, pnpm ≥ 9 (pnpm 설치).

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

기본 URL: http://127.0.0.1:18791

파일 감시 개발:

pnpm dev

포트 충돌 시:

PORT=18792 pnpm start

환경 변수 예:

cp .env.example .env

SKIP_PNPM_CHECK=1은 pnpm 없이 node src/server.js를 돌려야 할 때만 — 프로덕션에는 비권장입니다.

Docker Compose

docker compose up -d

브라우저: http://127.0.0.1:18791

자주 쓰는 명령

메인 에이전트 상태 설정:

pnpm set-state writing "문서 작성 중"

헬스·레디:

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

API 개요

  • GET /health — 생존
  • GET /ready — 준비 완료(시작 검사 후)
  • GET /status — 메인 에이전트 상태
  • POST /set_state — 메인 상태 설정
  • GET /agents — 에이전트 목록(게스트 정리·오프라인 처리)
  • POST /join-agent — 게스트 참가
  • POST /agent-push — 게스트 상태 푸시
  • POST /leave-agent — 게스트 퇴장
  • POST /agent-approve / POST /agent-reject — 승인/거절
  • GET /yesterday-memomemory/YYYY-MM-DD.md 기반 메모
  • GET /, /join, /invite — 웹 페이지; 정적 자원은 /static

OpenClaw / Lobster 연동

1) 지원 상태

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

호환 매핑:

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

2) join 후 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) 주기적 푸시(10~30초)

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) 퇴장

curl -s -X POST http://127.0.0.1:18791/leave-agent \ -H "Content-Type: application/json" \ -d '{"agentId":"agent_xxx"}'

권장 흐름: 시작 시 join-agentagentId 로컬 저장 → 주기 agent-push → 정상 종료 시 leave-agent403/404 시 푸시 중단 후 재참가 또는 알림.

라이선스

  • 코드: MIT
  • 아트 에셋은 상위 저장소 조건을 따를 수 있으며, 상업적 이용 시 필요 시 자체 에셋으로 교체하세요.

스타

도움이 되었다면 스타를 부탁드립니다.


Made with ❤️ by wangmiaozero