Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

steedos-server-moleculerSteedos 服务器分子

Agent Skill

steedos-server-moleculer 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

321

周安装

13

GitHub Stars

1,613

下载量

101
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:steedos-server-moleculer(Steedos 服务器分子)
来源仓库:https://github.com/steedos/steedos-platform
仓库路径:skills/steedos-server-moleculer
安装命令:
npx skills add https://github.com/steedos/steedos-platform --skill steedos-server-moleculer
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/steedos/steedos-platform --skill steedos-server-moleculer

简介

用于查找、检索和筛选相关信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词或任务场景快速定位候选结果。
  • 通过 npx skills add 命令从指定 GitHub 仓库安装使用。
  • 建议确认权限范围和维护状态,避免触发联网或文件读写操作。
  • steedos-server-moleculer 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

Steedos Server Moleculer Integration | Steedos 服务端 Moleculer 集成

Overview | 概述

Steedos Server embeds a Moleculer service broker alongside NestJS. The broker handles microservice communication, metadata events, and cross-service orchestration. It connects to other Steedos services (package loaders, community/enterprise services) via Redis transporter.

Steedos 服务端内嵌 Moleculer 服务代理,处理微服务通信、元数据事件和跨服务编排。

Broker Configuration | 代理配置

Configuration is in src/config/moleculler.config.ts:

{
  namespace: "steedos",
  nodeID: null,                          // Auto-generated
  transporter: process.env.B6_TRANSPORTER,  // Redis URL
  cacher: process.env.B6_CACHER,            // Redis URL
  serializer: "JSON",
  requestTimeout: 0,                     // No timeout
  maxCallLevel: 100,
  heartbeatInterval: 10,
  heartbeatTimeout: 30,

  logger: {
    type: "Console",
    level: process.env.B6_LOG_LEVEL || "warn",
    formatter: "[MO] {timestamp} {level} [{mod}] {msg}",
  },

  registry: {
    strategy: "RoundRobin",
    preferLocal: true,
  },

  retryPolicy: { enabled: false },
  circuitBreaker: { enabled: false },
  bulkhead: { enabled: false },
  metrics: { enabled: false },
  tracing: { enabled: false },
  skipProcessEventRegistration: true,
}

The final config is merged from: moleculerConfig + steedosConfig + envConfigs.

NestJS Integration | NestJS 集成

Using @builder6/moleculer package:

// app.module.ts
MoleculerModule.forRoot(getMoleculerConfig())

// Inject broker in any service
import { InjectBroker } from "@builder6/moleculer";

@Injectable()
export class MyService {
  constructor(@InjectBroker() private broker: ServiceBroker) {}
}

AppMoleculer Service | AppMoleculer 服务

The main Moleculer service is defined in src/app.moleculer.ts:

@Injectable()
export class AppMoleculer extends Service {
  constructor(@InjectBroker() broker: ServiceBroker) {
    super(broker);
    this.parseServiceSchema({
      namespace: "steedos",
      name: "@steedos/server",
      events: { ... }
    });
  }
}

Event Handlers | 事件处理

$packages.changed

Fired when all packages finish loading. Triggers one-time initialization:

  • Sets global.STEEDOS_STARTED = true
  • Configures default language
  • Broadcasts @steedos/server.started
  • Loads tenant from database (first space record)
  • Enables registration if no tenant exists

$services.changed

Monitors service registry for license service:

"$services.changed": async (ctx) => {
  global.HAS_LICENSE_SERVICE = broker.registry.hasService("@steedos/service-license");
}

$metadata.*

Handles all metadata change events and forwards to WebSocket:

"$metadata.*": async (payload) => {
  // Types: apps, objects, object_listviews, object_actions, object_fields
  appGateway.metadataChange({
    type: payload.type,
    action: payload.action,
    _id: payload.data._id || payload.data.id,
    name: payload.data.code || payload.data.name,
    objectName: payload.data.object || payload.data.object_name
  });
}

$broadcast.$notification.users

Routes user notifications to WebSocket:

"$broadcast.$notification.users": async (payload) => {
  appGateway.notificationChange(data.tenantId, data.users, data.message);
}

$broadcast.socket.emit

Generic socket broadcast:

"$broadcast.socket.emit": async (payload) => {
  appGateway.emit(data.eventName, data.eventParams, data.room);
}

@objectRecordEvent.*.*

Record change events → WebSocket room broadcast:

"@objectRecordEvent.*.*": async (payload) => {
  // Emits to room: {spaceId}-record:{objectApiName}:change-{id}
  // Event: s:record:{objectApiName}:change-{id}
}

Service Lifecycle | 服务生命周期

created

During broker creation:

  1. Initialize @steedos/objectql with objectql.broker.init(broker)
  2. Set up global.broker, global.t (i18n), global._ (underscore)
  3. Register SIGTERM/SIGINT handlers for graceful shutdown
  4. Clear all cache entries on startup

started

After broker starts:

  1. Initialize ObjectQL schema: getSteedosSchema(broker)
  2. Detect edition (ce/ee/cloud) from environment
  3. Load edition-specific services:

- Always: @steedos/service-community - Enterprise/Cloud: + @steedos/service-license + @steedos/service-enterprise

Inter-Service Communication | 跨服务通信

broker.call — 同步调用

// Query objects directly (bypasses permissions)
const records = await broker.call("objectql.directFind", {
  objectName: "spaces",
  query: { top: 1, fields: ["_id"], sort: "created desc" }
});

// Broadcast via microservice
await broker.call("b6-microservice.broadcast", {
  name: "socket.emit",
  data: { room, eventName, eventParams }
});

broker.emit — 发布事件

// Emit metadata change
broker.emit("$metadata.objects", {
  type: "objects",
  action: "update",
  data: { _id: "xxx", name: "orders" }
});

// Emit notification
broker.emit("$broadcast.$notification.users", {
  data: { tenantId, users: ["user1"], message: "Task assigned" }
});

// Emit socket subscribe event
broker.emit("$socket.subscribe.room-name", { roomParts, userId, space });

broker.broadcast — 广播

// Server started notification
broker.broadcast("@steedos/server.started");

Package Loader Integration | 软件包加载集成

Steedos packages use @steedos/service-package-loader as a Moleculer mixin. When a package service starts, it emits metadata events that the server picks up:

Package starts → loads YAML metadata → emits $metadata.* events
  → AppMoleculer handles → forwards to WebSocket
  → All packages loaded → emits $packages.changed
  → AppMoleculer initializes tenant + broadcasts server.started

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

33.37%
按下载量换算34

Claude

33.96%
按下载量换算34

Cursor

19.24%
按下载量换算19

Gemini CLI

9.03%
按下载量换算9

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills