open-index/open-npm huggingface dataset:
npm package: @quick-qui/launcher
Description: 实现的一部分，负责将运行时运行起来。
Latest version: 1.7.1

# @quick-qui/launcher

实现的一部分，负责将运行时运行起来。


## 如何工作

1. [@quick-qui/builder](http://github.com/quickqui/builder) 会负责准备好运行时需要的所有材料。体现为一个目录，称为“成品目录”。
2. 根据成品目录中的配置（./.env 和./implementationModel.json)运行一个[@quick-qui/model-server](https://github.com/quickqui/model-server) 实例。
3. 从 model-server 得到模型。
4. 根据模型（主要是其中的 implementations 部分）启动各个实现。
5. 目前支持的运行时类型是 -
   1. command - 本地可执行命令运行。
   2. docker - docker container 运行。
   3. 🏃🏻npm - 类似于command，只不过不是直接的路径配置，而是通过npm的依赖机制寻找实现的运行路径。


## 如何运行

作为npm依赖，被引入到“成品目录”中，被成品目录中的脚本（一般是node脚本）调用。不会直接运行。
npm package: @quick-qui/model-server
Description: 负责载入、解析、维护和发布模型。 关于模型的各种规则和计算在此执行 （但不在此定义，定义见 [@quick-qui/model-defines](http://github.com/quickqui/model-defines)。）
Latest version: 1.5.0

# @quick-qui/model-server

负责载入、解析、维护和发布模型。
关于模型的各种规则和计算在此执行
（但不在此定义，定义见 [@quick-qui/model-defines](http://github.com/quickqui/model-defines)。）



## 相关概念

1. 模型库（repository） 与模型源、模型文件共同组成模型的描述系统。一个模型库一般对应一个模型空间，也就是一个系统的全部模型描述。一个模型库有一个主要的模型源，可能是文件夹、url 地址等等形式，一个模型源可以包含（include）其他源。每个模型源包含多个模型文件。模型文件按类似于文件夹的形式树形组织，不同文件夹内的模型文件对应不同的命名空间。
1. 模型源（source） （见上条）
1. 模型文件（file） （见上条）
1. 包含（include） - 一个模型源可以包含一个或多个其他源，也就是一个模型库包含多个源。
1. 日志（log） - 载入、解析、合并、编织等活动都有详尽记录。



## 如何工作

1. 作为 node 服务运行起来。
1. 从模型库（repository）地址加载模型源文件。
1. 如果有导入（include），则加载被导入的模型源。
1. 根据源文件的特征载入对应的模型定义。（模型定义为可扩展，详见 [@quick-qui/model-defines](http://github.com/quickqui/model-defines)）
1. 所有的源文件验证（validate）以后解析为模型片段，合并到模型空间中。此处的验证是对源文件和片段的局部验证。
1. 验证，特别是在模型空间范围的合法性。
1. 编织（weave）。
1. 处理完毕的常驻，随时可以查询，除非人为触发刷新（refresh），不会重新载入处理。
1. 处理过程有记录，可以通过接口查询。



## 如何运行

1. 作为node服务单独运行 - `npm start`
2. 作为[@quick-qui/builder](http://github.com/quickqui/builder)的一部分运行，其背后也是通过子进程调用1.的方式。
3. 作为“成品运行时“的一部分运行，其运行方式根据launcher类型的不同而不同。详细见[@quick-qui/launcher](http://github.com/quickqui/launcher)相关说明。



## 所需环境

|            |          |                     |                                                    |
| ---------- | -------- | ------------------- | -------------------------------------------------- |
| MODEL_PATH | 环境变量 | string， 必填。     | 指出模型项目所在的路径。本地路径，可以是相对路径。 |
| PORT       | 环境变量 | int，可选，默认1111 | 服务监听的端口。                                   |
|            |          |                     |                                                    |



## 接口

|                          | URL                      | 方法 | 参数               | 说明                                                               |
| ------------------------ | ------------------------ | ---- | ------------------ | ------------------------------------------------------------------ |
| 获取模型列表             | /models                  | GET  |                    | 🏃（目前没有明确定义模型 id，只能使用“default”作为 id）            |
| 获取模型对象             | /models/:id              | GET  | id:string, 模型 id | 如果返回 404，可能是模型载入不成功，可获取对应的日志查看具体原因。 |
| 获取载入过程日志         | /models/:id/logs         | GET  |                    |                                                                    |
| 获取模型对应的模型源信息 | /models/:id/modelSources | GET  |                    |                                                                    |
| 刷新模型                 | /models/:id/refresh      | POST |                    | 下次 get 的时候会重新运行载入全过程                                |