5 · 按需拉取插件

除了基座与业务插件模板,其余基础设施都是独立仓库。 原则只有一条:需要什么拉什么——用到哪个能力,才把对应仓库 clone 下来、各自 pnpm install + pnpm run build, 再在 patch 里加一行。

为什么按需

KTH 是「一切皆插件」的装配式底座:每个仓库只提供一种能力,通过 patch 装配进宿主。 用不到的能力(比如你的插件不连数据库)就不用拉,少一份依赖、少一处凭据、少一个构建目标。

四个基础仓库#

infra-configmanagementglobal-plugins/infra-configmanagement.git
infra-database-postgresqlglobal-plugins/infra-database/infra-database-postgresql.git
base-permissionglobal-plugins/base-permission.git
infra-authglobal-plugins/infra-auth.git

前缀统一为 http://123.60.59.128:8888/kunlun/harnessagentvm/。

1. 配置中心 infra-configmanagement#

用途

配置台账 + 控制台。多数插件的硬依赖:消费方通过 ctx.infraConfig 读取台账, 没有它,业务插件不加载。配置生效顺序是「台账优先,代码缺省兜底」。

依赖关系

被所有业务插件依赖;它自己携带引导配置(自持连接池 + SM4 密钥),是整条链上唯一还写在 patch 里的凭据(缺项回退 KTH_CONFIGMANAGEMENT_* 环境变量)。

yaml对应的 patch 行
- id: kth-infra-configmanagement
  name: ../../Infrastructure/infra-configmanagement/content/lib/index.js
  config:
    host: <DB_HOST>        # 占位符,真实值放本地
    port: 5432
    database: <DB_NAME>
    user: <DB_USER>
    password: <DB_PASSWORD>
    secretKey: <SM4_KEY>

2. 数据存储 infra-database-postgresql#

用途

PostgreSQL 连接池注册表 ctx.infraDatabase:它是按应用名建池的注册中心, 本身不带连接参数。

依赖关系

连接参数由消费方从配置台账取(见第 9 章)。因此它的 patch 行没有 config 段——先跑一次配置中心, 把库连接登记进台账,池按需建。

yaml对应的 patch 行
- id: infra-database-postgresql
  name: ../../Infrastructure/infra-database-postgresql/content/lib/index.js

3. 账号权限 base-permission#

用途

账号 / 角色 / 菜单(权限模型)。提供登录与后台管理所需的用户体系, infra-auth 与业务后台都读它的账号表。

依赖关系

依赖配置中心与数据库;被认证(infra-auth)依赖。

yaml对应的 patch 行
- id: kth-base-permission
  name: ../../Infrastructure/base-permission/content/lib/index.js
生产环境务必改口令

后台默认登录账号为 admin / Kunlun2026, 这是 DEMO 初始口令。生产环境必须改成强口令,并删除或禁用默认账号,切勿沿用出厂值。

4. 会话认证 infra-auth#

用途

会话签发与服务端校验 ctx.auth:负责登录态的下发与验证。 读 base-permission 的账号表来核验身份。

依赖关系

依赖 base-permission(账号表)与配置中心;被需要登录态的业务插件依赖。

yaml对应的 patch 行
- id: kth-infra-auth
  name: ../../Infrastructure/infra-auth/content/lib/index.js

依赖关系#

text装配依赖图
  base-permission --------+
                          +--> infra-auth                 会话签发(读账号表)
  configmanagement -------+

  configmanagement -------+--> 所有业务插件             配置台账(缺它不加载)
                          +--> infra-database-postgresql 连接池(按应用名建池)

  顺序:configmanagement -> database -> auth -> base-permission -> 业务插件

对照表:我想用 X → 拉哪些仓库#

我想做的事需要拉取的仓库
只跑一个业务插件页面基座 + 业务插件模板 + infra-configmanagement + infra-database-postgresql
读配置 / 用台账infra-configmanagement
连 PostgreSQLinfra-configmanagement + infra-database-postgresql(连接参数登记进台账)
账号 / 角色 / 菜单上面三个 + base-permission
登录态 / 会话校验上面四个(含 base-permission + infra-auth)

一次克隆四个仓库#

bashclone 基础仓库(与基座同级)
mkdir -p ~/kth && cd ~/kth
BASE=http://123.60.59.128:8888/kunlun/harnessagentvm/global-plugins

# 配置中心(台账,多数插件的硬依赖)
git clone ${BASE}/infra-configmanagement.git
# 数据库连接池注册表
git clone ${BASE}/infra-database/infra-database-postgresql.git
# 账号 / 角色 / 菜单
git clone ${BASE}/base-permission.git
# 会话认证
git clone ${BASE}/infra-auth.git

每个仓库各自构建#

每个仓库各跑一次 pnpm install + pnpm run build,产物在各自的 content/lib/(业务插件是 lib/)。

bash批量构建
for d in infra-configmanagement infra-database-postgresql base-permission infra-auth; do
  echo "==> $d"
  ( cd ~/kth/$d && pnpm install && pnpm run build )
done
改了 src 要重建

宿主加载的是构建产物 lib/。改动任一插件源码后,必须在该仓库重跑 pnpm run build,然后重启宿主才会生效。

下一步

仓库拉齐了,接下来只需在 patch 里放「自己的项目 + 配置中心 + 数据存储」三行即可开工, 见 6 · 最小 patch 与访问。