# @aeolus-fleet/squadrons 中文文档

规范地址：https://npmcn.com/package/%40aeolus-fleet/squadrons/

版本：0\.36\.0
npm 元数据更新时间：2026-11-01T10:53:35.807Z
中文译文更新时间：2026-11-06T05:28:21.993Z
软件包许可：Apache-2\.0

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40aeolus-fleet/squadrons
原文对照：https://npmcn.com/package/%40aeolus-fleet/squadrons/?lang=original
项目主页：https://github.com/ThomasHendrickx/aeolus-fleet-squadrons#readme
源码仓库：https://github.com/ThomasHendrickx/aeolus-fleet-squadrons

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.6 MB，380 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=26
- 运行依赖：9 个
- 首次发布：2026-10-03T08:00:30.686Z
- 最新版本发布：2026-11-01T10:53:35.437Z
- 近 30 天下载量：4756（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：43（近 12 个月 43 个）

## 中文简介

Aeolus中队:由具有角色和交接权的特务组成的分队,在git文件中被定义.

## 安装

```sh
npm install @aeolus-fleet/squadrons
```

也可以使用：`pnpm add @aeolus-fleet/squadrons`、`yarn add @aeolus-fleet/squadrons`、`bun add @aeolus-fleet/squadrons`

## README

# @aeolus-fleet/ squadrons (英语)

从蓝图文档中以"git"的形式组成分队并引导他们:角色,交接,每个成员的健康. 见第0017号决定。 可选:舰队只与单舰合作. Aeolus对中队一无所知;中队是舰队的一艘船 `fleet:read`, (中文(简体) ), `fleet:manage`, (中文(简体) ), `labels:define` 财务报告和审定财务报表 `labels:assign`,它的管理船, 并且只能通过它的公共API到达舰队.

至今为止:它自己的流程和数据库,操作员作为管理船在控制台上的连接,从git(docs/squadrons.md),组成中队的模板和蓝图目录,每个旗舰的报到(docs/squadrons.md,"验入"), `/api/health` 财务报告和审定财务报表 `/api/version`。 。 。 .

中队在每个编队或帆船中队的旗舰上接收. 会员的入场签注与其所陈述的型号保持并用其角色(即时签注,包机签注,入场签注间隔,交接为选取者);其站上签注,中队出行后即出行. 旗舰只支持中队的讯息:任何来自外部或成员的其他讯息,均被确认并保存(`squadrons.messages`),从不转发,而argo在其收件箱中被告知,所以没有消息消失或隐去. 阿尔戈的一丁点就会被打成乒乓球 旗舰只在处理后再将每发货按住,再处理一次(在坠机后或失事后)会给出同样的答案并没有任何改变两次. 当旗舰被放出时,中队会停止接收并告诉Argo.

## 生命周期

### 中队状态

-   **编组**:它的旗舰和成员受委托;还没有每个成员都到站.
-   **航海**:每个成员都在站;中队工作.
-   **站起来**:其成员完成工作并逐一退休.
-   **解散**:每个成员和旗舰退役. 最终的状态;中队,其成员和旗舰所保存的信息作为历史保留.

| 从 | 改为: | 何时 |
| --- | --- | --- |
| (无) | 编组 | 操作员从蓝图版本组成中队,或船舶通过消息组成一中队([由船舶组成](https://npmcn.com/package/docs/squadrons.md#forming-by-a-ship)(中文(简体) ) |
| 编组 | 航海 | 每个成员都第一次登台 |
| 航海 | 站起来 | 操作员把它放下,或者它组成船或航道 |
| 站起来 | 解散 | 每个成员都退休了 中队都退休了 |
| 平起起平起平起地来 | 解散 | 操作员强迫停站 |

-   形成没有超时。 一个从未检查过中队阵容的队员;武力退下就是出路.
-   帆船一次到达,一直停留到中队倒下. 下站(出站后出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出站出.
-   没有解散行动:解散只能是站立到底.

### 会员国

-   **不在车站**:其目前的机组人员尚未确认其在报到时的作用.
-   **在车站上**:其现任机组确认了其作用;其健康按时,迟到或沉默.
-   **站起来**: 它的中队站倒了,旗舰送去它站倒了,或者中队取消了它的船员请求,一个三军将释放它的船员. 它的健康状况显示,一旦它的船员请求被取消,就站住.
-   **退休人员**:中队退役了它的舰只.

| 从 | 改为: | 何时 |
| --- | --- | --- |
| (无) | 不在车站 | 组建或增加佣金 |
| 不在车站 | 在车站上 | 其机组人员检查并确认其作用(在站) |
| 在车站上 | 不在车站 | 它的船等待船员(释放)或新的船员持有,直到船员检查 |
| 在车站上 | 站起来 | 它的中队退下:旗舰送来它起立 |
| 任何退休的,但退休的 | 站起来 | 操作员带机组请求删除一个成员:中队删除请求 |
| 站起来 | 退休人员 | 它发送了停机,没有公开交付 舰队没有 船员的要求, 或操作员拆除它 船员被释放 |
| 不在车站 | 退休人员 | 其中队倒下:一员从不站站不动活 |
| 任何退休的,但退休的 | 退休人员 | 操作员把它取出,或者强迫停站 |

**卫生** 来源于每个成员的上份报告(`report`:一次检查间隔后迟到,三次之后沉默. 在首次报告之前,钟从上站开始运行。 船员要求中队撤走的队员会站起,直到其舰只退役. 健康只是观察:沉默或错过报到者永远不会退休或阻止成员.

### 别动

操作员将帆船中队或它的成型船或阿尔戈通过信息([由船舶组成](https://npmcn.com/package/docs/squadrons.md#forming-by-a-ship)) (中文(简体) ). 它站了下来,没有新成员.

1.  从未到站的队员不工作:中队在机组人员提出要求时(第4步)被释放后立即退役.
2.  旗舰派来其他队员 `application/vnd.aeolus.squadron.stand-down+json`数字 : `{ "squadron" }`,每个一次.
3.  成员在收到通知时即予以确认,如同任何交货一样:收货方式为收货,从未收货。 它完成开放工作,然后派出旗舰 `application/vnd.aeolus.squadron.stood-down+json`数字 : `{ "squadron" }`,与 `inReplyTo` 给指示它退下的消息.
4.  旗舰知道一个被其发送者击倒,一个中队成员站倒; `inReplyTo` 只会通知你 它在处理一个站台时处理它:它记录它,然后敲它. 因此,不公开交货的成员将退休;仍然持有某些货物的成员将在首次重新检查时退休(每30秒一次),但并不持有任何货物。 有船员请求(#343)的成员先被移除请求,因此不再有三重奏者再次启动,在三重奏者释放出船员后,在第一次重新扫描时被退役.
5.  每位队员退役后,中队将旗舰退役并解散中队.

一个在中队待命时报到的成员 会收到角色信息 `"standingDown": true`:它完成了公开的工作,并像第3步那样,发出站住的信号 `inReplyTo` 设定到角色信息。 一个成员从未退休之前,它发送站立式:一个站立式的站立式站立式站立式站立式站出不来,或者一个从未回答过的问题,让任何人退休. 操作员移除该成员或迫使该成员退出。 旗舰接收到中队解散前,因此在成员完成任务时,任何信息都不会隐去.

发送已停放是 Aeolus 插件的部分: 当一个已停放的插件到达时, 或者一个角色信息说 `"standingDown": true`,成员完成它的工作,并向它的旗舰发出站住的信号.

### 强制停止

操作员强迫一个阵形、帆船或站起中队。 中队将尚未退役的每个队员退役,再由旗舰立即退役,中队解散. 每位退休者都放弃直接交货,就像任何退休者一样。 只有这种明确的操作者行动才能使一个未退出的成员退休.

### 中队服役时的成员

-   **添加**,只在"赛艇:中队"从中队自己的快照(同版模板版)中委托一名角色成员,并配有"组建"的机械原样(编队尝试,一能键,坠机后恢复). 其机组线路,发射便条和被钉型号均答一次. 其船员设置和参数值在形成时([文档/平面图](https://npmcn.com/package/docs/squadrons.md#crew-settings)),在命名工作空间时有船员请求. 它像任何成员一样进场检查,直到到达时才到站;中队继续出行.
-   **删除**,而"帆船"或"站起":一个有船员请求的成员将其取出并站起,直到其三人组释放其船员;中队在之后的第一次重新扫描时将舰只退役. 中队立即将任何其他成员的舰只退役. 其直接交付与任何退休者一样被放弃;按其类型交付给该角色的另一名成员。 一个角色的最后一个成员被允许去除,然后交接该角色在发送时失败("没有这种类型的船只").
-   **新机组线路** (单位:千美元)`squadrons.newCrewLine`:在保持会员报到的同时给予成员新会次的方式. 中队如果有会话组员将其放出,获得新的起动快取,并用中队id,其发射说明和被钉住的型号回答其船员行(每个插件吊带一个,聊天客户端一个,docs/squadrons.md"船员行"),一次. 新的船员像任何成员一样检查.

### 旗舰的讯息

旗舰从本舰队员中办理入列,上站和站站等手续,并接通其中队和编队舰艇之间的接力和站站([由船舶组成](https://npmcn.com/package/docs/squadrons.md#forming-by-a-ship)) (中文(简体) ). 任何来自外部或成员的其他信息均予以确认并保存在中队网页上(`squadrons.messages`. . . . . . . . . . . . . . 阿尔戈的一丁点就会被打成乒乓球 每次交货只有在处理完毕后才会发生故障,处理一次再次出现的情况不会改变两次。 当旗舰除被其中队解散外被放出或退役后,中队停止接收其中并告诉argo一次.

### 未处理

-   一艘船在其中队之外(操作员释放、重新配置或退役控制台上的一名队员)更换后仍列为成员;只有它的健康和船员状况表明这一点。 未告知中队(#105,在第一真正的中队出航后).
-   控制台的Recrew给一个成员一个没有中队ID的机组线路,因此其新机组从不检查: `squadrons.newCrewLine` 是让一位成员参加新会议的方式.
-   一个被释放的旗舰不再被船员使用:登入它就会遭到不答.
-   虽然中队没有连通,但已经接收到的旗舰继续使用自己的船员代号,但是没有新的中队开始接收,也没有停止前进.

## 运行

1.  给中队自己的数据库并设置环境. 没有管理船和秘密:操作员连接控制台的中队.

| 变量 | 需求 | 什麽 |
| --- | --- | --- |
| `DATABASE_URL` | 对 | 中队自有的Postgres数据库(英语:`postgres://...`; 它可能共享舰队的 Postgres 服务器 |
| `FLEET_URL` | 对 | 舰队的公共URL;中队称其舰只API at `<FLEET_URL>/api/v1` 检查控制台的会话 不是秘密,是固定在这里,所以没有呼叫者可以指向另一舰队 |
| `HOST`, (中文(简体) ), `PORT` | 没有 | 在听的地方; `127.0.0.1:4100` 默认 |
| `LOG_LEVEL` | 没有 | `info` 默认 |
| `INSTALLATION_TOKEN` | 没有 | 主机服务向中队的安装程序赠送了代号,至少32个字符(docs/squadrons.md,"Switched per fleet"). 取消:它们不存在,每个舰队都得到服务,因为自备中队需要 |
| `SQUADRONS_PER_FLEET`, (中文(简体) ), `SQUADRONS_PER_FORMING_SHIP`, (中文(简体) ), `MEMBERS_PER_SQUADRON` | 没有 | 中队对形成的限制,每个中队至少有1个整数(docs/squadrons.md,"Limits"). 取消设置: 无限制 |

模板寄存器不是这个配置的一部分:操作员将其添加到控制台,在设置(docs/squadrons.md,"Template寄存器")下. 中队通过GitHub的API读取 `api.github.com` 而不保存文件,所以主机不需要 `git` 没有磁盘给他们.

2.  `aeolus-squadrons start` 使用进程锁定,移动数据库并提供服务。 每艘舰队中队都服务于其船员保留证其舰队仍然取走的舰队,每艘被坠毁所截断的舰队编队,或者在编队失败时被拒绝的舰队退役的舰队,都会被退役;其他任何舰队都没有连接. 一艘舰队退役后再次拒绝的舰只被后期旗舰再试. 在一次被拒绝的退休者通过5次恢复后,尝试停止退休,并在一条明确的信息中告诉阿尔戈,命名了舰队及其船只. 计数幸存了重启;拒绝或丢失的通知会再次在相同的等同键下发送,直至被接受. `aeolus-squadrons migrate` 独自迁徙.
3.  每个分舰队的接线员在他们的控制台上连接:设置,连接中队. 网络应用的服务器委托管理船(`squadrons`,与 `fleet:read`, (中文(简体) ), `fleet:commission`, (中文(简体) ), `fleet:manage`, (中文(简体) ), `labels:define`, (中文(简体) ), `labels:assign`, (中文(简体) ), `fleet:on-behalf` 财务报告和审定财务报表 `scopes:declare`把它的秘密交给中队 `connection.connect`,服务器到服务器;中队注册为服务器,只保留机组符. 秘密从未显示或存储.

直到它与运营商的舰队相连, `catalogue.*`, (中文(简体) ), `repositories.*` 财务报告和审定财务报表 `squadrons.*` 回答PRECONDITION FAILED;而中队则为那支舰队停用,但每一个程序都例外 `connection.status` 答案福布顿。 当操作员放出管理舰时,中队会放下该舰队的船员代号并不再与之相接: 连接中队,同名按钮,为同名舰发布新的起动提示.

每个数据库有一个中队程序运行:在同一数据库上第二个开始拒绝并说,所以在启动新程序前停止旧程序(滚动部署不能重叠). 锁定连接失败的进程停止 .

从早期版本升级:中队将模板寄存器的克隆保存在一个 `aeolus-squadrons` 文件夹,在系统临时文件夹中`/tmp/aeolus-squadrons`)在0.12.0之前,并在用户的缓存文件夹中(`~/.cache/aeolus-squadrons`,或低于 `SQUADRONS_CACHE_DIR`在0.12.0中,中队不再使用它们或 `SQUADRONS_CACHE_DIR`,而不删减它们:自己删减它们,因为它们可能拥有私人的储存库.

## 路径

| 路径 | 什麽 |
| --- | --- |
| `/api/health` | 上及其数据库可达: `{ "status": "ok" }`,或503与 `{ "status": "unavailable" }`其安装或机队情况不详 |
| `/api/version` | `{ "squadrons": "<version>" }`,它运行的版本 没有其他。 没有认证, 没有舰队数据 |
| `/trpc` | 中队API,为网络应用的服务器. 每一个程序,但安装需要 控制台会话曲奇 `FLEET_URL`哪个中队跟舰队的 `console.session`并且只对操作员的舰队工作 该舰队的观众会议(第00-22号决定) `fleet:read` 只读 `connection.status`, (中文(简体) ), `catalogue.list`, (中文(简体) ), `squadrons.list` 财务报告和审定财务报表 `squadrons.messages`;所有其他程序都需要 `fleet:manage` 并拒绝它 Forbidden: `connection.status` (单位:千美元)`enabled`中队是否为舰队服务,是否与舰队相接,如是哪艘船,以及它最后被连接的那艘船, `connection.connect` (单位:千美元)`{ shipId, secret }`: 登记为该船,并保存船员证;为错误的秘密,拒绝为另一船队的船舶或没有该船队的船舶连接 `fleet:read` 财务报告和审定财务报表 `fleet:manage`, (中文(简体) ), `repositories.list` (每个模板存储器) `name`, (中文(简体) ), `url`, (中文(简体) ), `path`, (中文(简体) ), `hasToken` 财务报告和审定财务报表 `lastFetch` (单位:千美元)`{ at, error }`最古老的,绝无任何迹象, `repositories.add` (单位:千美元)`{ url, path?, token? }`,以 `repositories.list` 显示; BAD REQAST 用于 URL 或路径 docs/ squadrons.md, “Template project”, 不允许, CONFLICT 用于添加名称 , `repositories.remove` (单位:千美元)`{ name }`(不在那里时不见), `catalogue.list` (每个标有标签的模板和蓝图版本,每个版本都有其 `file`,它在其承诺的寄存器内的路径,并且每个版本和版本标记都留下了它的理由: `problems`,每个 `{ repository, kind, name, version, message }`, (中文(简体) ), `kind` 状态 `template`, (中文(简体) ), `blueprint` 或者说 `tag`, (中文(简体) ), `catalogue.refresh` (比对现在的每个模板寄存器;当其他中队取取取器在docs/squadrons.md,"Template寄存器"), `squadrons.messages` (单位:千美元)`{ squadronId }`:其旗舰所保存的信息, `squadrons.standDown` (单位:千美元)`{ squadronId }`:站起一帆船中队,见"生命周期";NOT FOUND为舰队没有的中队,CONFLICT为不是"帆船"的中队, `squadrons.forceStandDown` (单位:千美元)`{ squadronId }`:强迫停放,见"生命周期";CONFLICT指一个中队已经解散了,BAD GATEWAY当舰队没有退役,并强迫再次完成", `squadrons.addMember` (单位:千美元)`{ squadronId, role }`:将一名角色加入一个赛艇中队,参见"生命周期";回答其机组线路(每个插件吊带一个,聊天客户端一个,docs/squadrons.md"Crew lines"),每个机组与中队ID,其发射说明和被钉住的型号,一次; CONFLICT为非赛艇中队,BAD REQULET为它没有的角色, `squadrons.removeMember` (单位:千美元)`{ squadronId, shipId }`:立即将一个帆船或起降中队成员退役,见"生命周期";"CONFLICT"指另一个州的一中队,"NOT FOUND"指非成员的一艘船",", `squadrons.newCrewLine` (单位:千美元)`{ squadronId, shipId }`:如果船员搭乘并回答新的船员线路(每个插件吊带一个,聊天客户端一个,Docs/squadrons.md"船员线路"),则释放该成员的船舶,每条船都带有中队代号,其发射说明和被钉住的型号,一次,见"生命周期";退休成员使用CONFLICT), `squadrons.form` (单位:千美元)`{ blueprint: { repository, name, version }, squadronId? }`:委托旗舰,以中队命名并由中队乘员组成,成员,每名队员在编队尝试的"一能"键下,所以在没有第二艘船的情况下再次询问一个失落的答案,而舰只得到一个新的起动快取;回答每个队员的乘员行(每个插件吊带一个并给一个聊天客户端一个,Docs/squadrons.md"乘员行"),每人用中队代号,以及其模板的起动说明和被固定的型号,一次)和 `squadrons.list` (舰队的中队,他们的州和成员,每个成员都有其模板接针的模型,它在报到时所说的模型以及它们是否不同,它的报到间隔,它的健康状况,以及舰队所显示的船员:状态,最后一次见到,以及从它被摄入时起;舰队不回答一个成员回答BAD GATEWAY). 安装程序将安装令牌输入 `x-aeolus-installation-token` 相反(NOT FOUND,没有配置,UAUTAID授权用于缺失或错误的;他们所做的是在Docs/squadrons.md,"Switched per flash"中: `installation.setEnabled` (单位:千美元)`{ requestId, fleetId, enabled }`回复 `{ fleetId, enabled }`, (中文(简体) ), `installation.get` (单位:千美元)`{ fleetId }`回复 `{ enabled, connected }`和 `installation.delete` (单位:千美元)`{ requestId, fleetId }`回复 `{}`; BAD GATEWAY,而舰队则不回答其宣布的规则被撤回的问题; 重放的请求id回答其第一个答案,一个用于另一个请求CONFLICT. 失败答案 `Internal error` 仅; 日志保存完整 |

## 常见问题

### @aeolus-fleet/squadrons 是什么？

Aeolus中队:由具有角色和交接权的特务组成的分队,在git文件中被定义\.

### 如何安装 @aeolus-fleet/squadrons？

在项目目录运行 npm install @aeolus-fleet/squadrons，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 aeolus-squadrons，可以用 npx aeolus-squadrons 直接运行。

### @aeolus-fleet/squadrons 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @aeolus-fleet/squadrons 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @aeolus-fleet/squadrons 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=26。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @aeolus-fleet/squadrons 可以商用吗？

@aeolus-fleet/squadrons 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @aeolus-fleet/squadrons 的下载量有多少？

根据 npm 官方下载统计，@aeolus-fleet/squadrons 在 2026/10/05 – 2026/11/03 这 30 天内被下载 4,756 次，日均约 159 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @aeolus-fleet/squadrons 还在维护吗？

最新版本 0\.36\.0 发布于 2026/11/01（6 天前）；至今共发布 43 个版本，其中过去 12 个月发布了 43 个；首次发布于 2026/10/03。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

