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 и т.д.) — кто активен, что было «вчера», кто в сети.

Репозиторий — реализация идеи Star-Office-UI на Node.js / Express: тот же внешний вид и HTTP‑контракт, чтобы существующие агенты почти не менялись; бэкенд рассчитан на долгоживущий сервис, а не один большой скрипт.

Четыре стиля интерфейса: пиксель, мягкий, полночь, бумага — по умолчанию пиксель.

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

Чем отличается этот форк

  • Структура как у сервиса: маршруты, сервисы, конфиг и bootstrap в src/, а не один монолитный файл.
  • Фиксированный toolchain: pnpm и Node ≥ 20 (engines, only-allow, engine-strict, проверка в src/bootstrap/env-check.js).
  • Эксплуатация: корректное завершение по SIGTERM / SIGINT. GET /health, GET /ready после инициализации хранилища.
  • Состояние на диске: основной статус, список агентов и ключи входа в JSON рядом с приложением — удобно бэкапить и монтировать тома.
  • Заметка «за вчера»: читает Markdown из каталога memory/ (GET /yesterday-memo).

Благодарности

  • Исходный проект: ringhyacinth/Star-Office-UI
  • Автор оригинала: Ring Hyacinth (и контрибьюторы)
  • Этот репозиторий: переписывание на Express и структура от wangmiaozero

Быстрый старт

Нужны 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

Пример env:

cp .env.example .env

SKIP_PNPM_CHECK=1 только для случаев без pnpm — не для продакшена.

Docker Compose

docker compose up -d

Откройте: http://127.0.0.1:18791

Полезные команды

Состояние основного агента:

pnpm set-state writing "Черновик документации"

Health / ready:

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

Обзор API

  • GET /health — liveness
  • GET /ready — readiness (после проверок)
  • GET /status — статус основного агента
  • POST /set_state — задать статус
  • GET /agents — список агентов (очистка гостей / офлайн)
  • POST /join-agent — вход гостя
  • POST /agent-push — пуш статуса гостя
  • POST /leave-agent — выход гостя
  • POST /agent-approve / POST /agent-reject — одобрить / отклонить
  • GET /yesterday-memo — заметка из memory/ГГГГ-ММ-ДД.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) Периодический push (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-agent → сохранить agentId → интервальный agent-push → при остановке leave-agent → при 403/404 прекратить push и переподключиться или оповестить.

Лицензия

  • Код: MIT
  • Графика может иметь условия upstream; для коммерции при необходимости замените ассеты.

Звёзды

Если проект полезен — буду благодарен за звезду.


Made with ❤️ by wangmiaozero