# @atlanticus-ai/relay 中文文档

规范地址：https://npmcn.com/package/%40atlanticus-ai/relay/

版本：2\.58\.1
npm 元数据更新时间：2026-11-06T18:15:42.059Z
中文译文更新时间：2026-11-08T10:01:53.910Z
软件包许可：SEE LICENSE IN LICENSE

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

原始 npm 页面：https://www.npmjs.com/package/%40atlanticus-ai/relay
原文对照：https://npmcn.com/package/%40atlanticus-ai/relay/?lang=original
项目主页：https://github.com/kanaan-droid/relay#readme
源码仓库：https://github.com/kanaan-droid/relay

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

- 包体积（解压后）：7.2 MB，161 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24
- 运行依赖：0 个
- 首次发布：2026-10-30T00:29:49.990Z
- 最新版本发布：2026-11-06T18:15:41.837Z
- 近 30 天下载量：1809（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：12（近 12 个月 12 个）

## 中文简介

会话操作系统的所有者门控，代理执行的开发。失败关闭的会话门，仅可附加的书面记录，以及跨多个项目的一个协议。

## 安装

```sh
npm install @atlanticus-ai/relay
```

也可以使用：`pnpm add @atlanticus-ai/relay`、`yarn add @atlanticus-ai/relay`、`bun add @atlanticus-ai/relay`

## README

# 中继

**面向自有,代理执行开发的会话操作系统.** 闭会门故障, a 只有附件的纸迹, 和一个协议贯穿许多项目.

```bash
npm install --save-dev @atlanticus-ai/relay
npx relay init                        # scaffold: slash commands, config, session docs (never overwrites)
npx relay verify-open                 # every open — the first one detects itself, no flag
npx relay selftest                    # did the install work? one line per check, exit 0/1
```

然后每场会议: `npx relay verify-open` 工作 • 工作 • 工作 `npx relay verify-close`。 。 。 .

## 为什么

能够犯罪、推倒和释放的特工需要失败的门 **关闭** 和无法追踪的纸 悄悄跳过。 中继是:会话会按机器检查的交接方式打开,会按秒关闭 门,以及记录实际发生的情况——逐字记录门输出,得分目标,象征性费用——在文件中 住在你的回购, 不是在聊天记录.

**所有者大门是绝对的.** 代理人可以执行、承诺和 _提议_· ; `git push`, (中文(简体) ), `git tag`编辑 撞出一张罚单 每次都是人类的.

## 图标

```
relay verify-open      session-start gate (fail-closed)      relay site         build the static site
relay verify-close     session-close gate                    relay compile      compile paper-trail fragments
relay tokens           token accounting for the handoff      relay doctor --container   container probe
relay session-log      append a session lifecycle record     relay docs-check   documentation debt
relay log              append a dispatch/footer record       relay init         scaffold into a repo
relay cp               copy the handoff block to the clipboard
```

万事俱备 `relay.config.json` 在目标重播. `relay --help` 列出其余部分.

## 版式

-   **[`RELAY-CORE.md`](https://npmcn.com/package/%40atlanticus-ai/relay/RELAY-CORE.md)** ——协议(15-min读;新收养人从这里开始). **船舶 软件包**,所以消费者总是有 版本的协议,它的工具工具.
-   **`kit/`** - 工具学 零项目特定字符串; 每个项目事实来自 `relay.config.json`。 。 。 . 18号节点,一次性依赖`micromatch`) (中文(简体) ).
-   **`db/` • 妇女 `query/` • 妇女 `ui/`** ——可选的中继指数:纸轨的后置投影和a 本地只读仪表板. **未包装** —— 说 `npm install` 帮你拿大门 不是数据库.
-   **`attic/sync-relay.sh <target>`** - 遗留的文件复制销售路径, **移动到 `attic/` 在RL-D014飞机上** 并保持为INERT RackUP(如果迁移失败则为回转),直到现有消费者使用 迁移到软件包中。 它翻译 `npx relay …` 回到出道时销售的脚本路径.

## 运行测试

```
npm test              the full suite — relay-site fixtures, gate smoke, kit fixtures, d13
npm run test:fast     the per-commit subset (never writes or clears the pass stamp)
npm run test:e2e      the browser suite — Playwright, Chromium, two viewports
```

⛔ **`test:fast` 财务报告和审定财务报表 `npm test` 不可互换,差额是印花.** 只有满 运行写入 `test/LAST-PASS.json`,哪个 `verify-close`是因为 `tests_fresh` 声明全文如下: `fast` 单是说一个没有运行的套房 运行 `fast` 在每一次派遣之后 `npm test` 一次,在组织交接之前.

### 浏览器套件

`npm run test:e2e` 正在建设 `ui/`,服务它,并驱动真正的铬. **没有打开数据库** ——每个 `/api/*` 响应从固定到 `test/e2e/mock-api.ts`,严格地比 仅仅避免 `relay_live`。 。 。 .

**每个光谱都运行一次**从 `test/e2e/viewports.ts`数字 :

| 项目 | 大小 | 排程抽屉 |
| --- | --- | --- |
| `1280x800` | 1280×800 (中文(简体) ) | `yields` ——表收缩 ( `lg`(中文(简体) ) |
| `768x800` | 768×800 (中文(简体) ) | `covers` 抽屉坐在桌子上( < `lg`(中文(简体) ) |

⚠️ **这些不是"桌面和移动".** 他们就是店主核实的景点 `F1` 财务报告和审定财务报表 `F2` 红色就是他们屏幕上的红色. **八百块是故意的 简称** 有更高的窗户会藏起 `F2` 完全没有 **添加宽度在此添加 ROW 而不是测试文件**· ; 光谱从不命名一个数字, 它问 `viewportOf()`。 。 。 .

运行一个工程或一个规格 :

```
npx playwright test --project=1280x800
npx playwright test test/e2e/f3-raw-body-never-rendered.spec.ts
```

### 定型——两个目录,区别是负载

| 目录 | 它所持有的 |
| --- | --- |
| `test/fixtures/api/` | **实际能力** - 从现场数据库取出的尸体 |
| `test/e2e/fixtures/` | **手脚** 载荷,每个携带一个 `_note` 在自己的网站上这样说 |

⛔ **不要将发明的有效载荷放入 `test/fixtures/api/`。 。 。 .** 它的名字是关于来源的说法: 其他依赖: `test/no-mjs-references.test.ts` 准确排除该目录 _因为_ 捕获 合法引用已退休的路径,一个被发明的文件将继承它没有获得的豁免.

人工建造的生活 有两个原因之一 都记录在档案中:

-   **无法抓取终点** —— 说 `/api/sessions` 返回时 `500 column "track" does not exist` 时 034号迁移没有应用(所有者大门) `/api/session-prompts` 从未被俘虏;
-   **有效载荷是一个探测器** —— 说 `test/e2e/fixtures/portfolio.json`。 。 。 .

⚠️ **三个快速固定装置 故意携带 `raw_body` 下一个 `text`两人是故意的 不一样.** 这就是我们的前提 `f3-raw-body-never-rendered.spec.ts`: 与无有效载荷对接 `raw_body`"尸体不在页面上" 无论是表面拒绝制造还是 有没有什么可以解释的 `raw_body` 源中的标识符—— a `{...row}` 分布, a 调试 `<pre>` 静态警卫看不见 `test/ui-guardrails.test.ts` 财务报告和审定财务报表 **被这个抓住了 光谱**这种差距是它存在的原因.

⛔ **一个未映射 `/api/*` 路径是一个 `501` 命名路由, 绝不为空 `200`。 。 。 .** 一个空白的成功将 变成"没有数据", 表面看起来健康而空荡荡的 就是绳子的失败 来抓他.

### 中情局

`.github/workflows/ci.yml` 运行两个工作:

-   **`test suite (relay-site + verify-open + d13)`** —— 说 `npm test` 反对邮局服务 `db/fixtures/d13.ts`,然后覆盖鼠标,然后 **`verify-open` 作为取笑的一步** (见 [ADR 0014 (英语)](https://npmcn.com/package/%40atlanticus-ai/relay/docs/adr/0014-ci-runs-the-open-gate-and-declares-what-it-cannot-satisfy.md)) (中文(简体) ). CI的索赔 无法满足在 `relay.config.json` 下级 `verifyOpen.ciSkipAsserts`打印为 `– skipped in CI: <reason>`,并且已经 `na` —— 说 **永远 `pass`**。 。 。 .
-   **`e2e (chromium, 1280x800 + 768x800)`** - 浏览器套房,在自己的工作,和它 **门**: 无 `|| true`。 。 。 .

### 发布检查( 部署门)

在建立脚本之前,每个存档的发送和返回都会被扫描以获取秘密,并击中 **拒绝部署** 它命名了文件 和规则和 **从不匹配**它探测并 拒绝;它从来不编辑文件。 门就在里面 `query/build-corpus.ts`,这是上半期 联 合 国 `vercel.json`是因为 `buildCommand`,因此一个非零出入口在UI建成前就停止了建设.

配置为 `relay.config.json` → `publishCheck`自己运行它 `node query/build-corpus.ts --census`。 。 。 .

⛔ **如果 Publish Check 拒绝部署, 则指令是 [`docs/PUBLISH-CHECK.md`](https://npmcn.com/package/%40atlanticus-ai/relay/docs/PUBLISH-CHECK.md)** —— 说 拒绝输出结束于该路径, 因为一个控制器没有人记得如何操作 绕行( e)`DN9-D104`) (中文(简体) ).

## 此重播是中继管理

它带着自己的 `relay.config.json`, (中文(简体) ), `ROADMAP.md`, (中文(简体) ), `WAYS-OF-WORKING.md` 财务报告和审定财务报表 `docs/sessions/` 纸张 自己开着货箱的门:

```
npx relay verify-open         # the same command a consumer runs — the bin resolves locally either way
npx relay verify-close
npm test
```

这里的会话编号是 `RL-D<n>-P<seq>`。 。 。 . **遗产 `RELAY-D*` 编号 : `CF-D*` 编号在 `CHANGELOG.md` 不一样, 历史系列** 看到了吗 `WAYS-OF-WORKING.md` § 2.1. 从 [`WAYS-OF-WORKING.md`](https://npmcn.com/package/%40atlanticus-ai/relay/WAYS-OF-WORKING.md) 财务报告和审定财务报表 [`docs/sessions/SESSION-HANDOFF.md`](https://npmcn.com/package/%40atlanticus-ai/relay/docs/sessions/SESSION-HANDOFF.md)。 。 。 .

> ⚠️ **永远不要跑 `attic/sync-relay.sh` 对抗这回贷.** 供应商 `kit/` 改为 a _消费者_; 此还原 这是 **来源**。指在这里它会覆盖 `kit/` 给消费者盖上印章 `relayVersion`。 。 。 . **脚本 REFUSES 代码中的自目标** (单位:千美元)`TD-RELAY-SYNC-SELF-GUARD`,运出RL-D008——此 先前曾说没有警卫,RL-D008号已停止真实,后经更正 RL-D014 (英语). 拒绝请求的理由是: `attic/` 路径在 `test/distribution.test.mjs`。 。 。 . 长期义务 **(原始内容存档于2012-10-12). SO-KIT-IS-SOURCE** 曾经 **于RL-D015停用** 一次两个消费者 _日记_ (HZ + CF,当时存在的唯一两个) npm - 时间 **上面的禁令没有改变 密码内警卫会留下**;结束的是 重新确认 每一个接近的仪式 一个机制 没有人再使用。 剧本本身已存档, 未删除.

## 项目供应商

```
./attic/sync-relay.sh --dry-run ~/path/to/project    # preview
./attic/sync-relay.sh ~/path/to/project              # apply (target must be clean)
```

那就确保目标 `relay.config.json` 有所需的密钥( 参见 `kit/CLAUDE.md.skeleton` 财务报告和审定财务报表 `RELAY-CORE.md § Config`: `projectPrefix`, (中文(简体) ), `ownerName` (必须), `docsCheck`等 (中文(简体) ).

## 中继站(静态站台发电机)

打开项目 `ROADMAP.md` + 键 `docs/relay/` 会话文物进入静态站点. opt- in: 添加一个 `site` 块到目标 `relay.config.json`。 。 。 . **没有 `site` 块 – 脚本退出 0 与 "没有配置",没有写**,因此在每一个没有要求的项目中都是惰性的.

```bash
npx relay site                        # or: make site
npx serve docs/site                   # generator does NOT serve — preview separately
```

设计简况、配置图和 `ROADMAP.md` 解析器期望的公约 : **[`docs/relay-site.md`](https://npmcn.com/package/%40atlanticus-ai/relay/docs/relay-site.md)**。测试: `./test/run-tests.sh` (合成固定;无) 真实的项目被触动).

## 依赖关系

该套装由 **文件副本**,而不是由软件包管理器安装——所以目标回波收到 脚本 _无_ 得到他们进口的东西. `kit-dependencies.json` 声明空白 :

| 依赖性 | 需要满足 | 如果缺少 |
| --- | --- | --- |
| 节点 `>=18` | 所有套件脚本 | 无害环境管理+高层等待; `fetch`编号 :`AbortController` 内 `verify-close.mjs` |
| `micromatch` `^4.0.8` (单位:千美元)**运行时间**(中文(简体) ) | `kit/docs-check.mjs` | `docs:check` 完全无法运行——在检查执行前导入抛出 |

`sync-relay.sh` 读取此文件并检查目标 : 命令任何未实现的。 这个 **只报告** ——它从不安装,也从不编辑目标 `package.json`。在目标repo中添加依赖是repo所有者的决定,而不是同步 剧本.

进口的装备是 `node:` 内建.

**两个频道分类 `micromatch` 不同,两者都是正确的.** A 类 **供应商** 消费者 收到可读文件 `kit/docs-check.mjs`输入 `micromatch` 在模块载荷时—— 用于该通道 这是真的 **运行时间** 要求,这是什么 `kit-dependencies.json` 声明 这个 **已出版 npm 软件包** 搭载的船 `micromatch` **内含**,因此在 全部; 这里 `micromatch` 是一个构建时的工具,并坐在那里 `devDependencies`。所公布的柏油球 第三方依赖人数 **零**。 。 。 .

## 分发和许可证

中继器在 a 下分配 **版权——所有保留的权利**。见 [`LICENSE`](https://npmcn.com/package/%40atlanticus-ai/relay/LICENSE)。 。 。 . 没错 **没有** 打开源和 `ISC` 显示在 `package.json` 在v1.6.11之前 (a) 从未与许可证文本相匹配的占位符.

> 当前 `LICENSE` 文本为 a **草案** 有待律师对商标和许可证进行审查 (RL-D010) (英语). 一定要在第一次公测前清理 `npm publish`。 。 。 .

已发布的软件包是 **捆绑和精密结构** 生产 `npm run build` 从 `kit/` 输入 `dist/`未分配来源 **源地图从未被发布** —— 说 `build.mjs` 套装 `sourcemap: false` 和测试套房失败,如果 `.map` 文件或一个 `sourceMappingURL` 字符串到达输出 。 源图可以传送整个可读源, 并默默地撤销它 .

一些文件飞船 **可设计读取**,每个原因(见 `VERBATIM` 内 `build.mjs`: `RELAY-CORE.md` (议定书的用意是阅读) `commands/*.md`, (中文(简体) ), `CLAUDE.md.skeleton`, (中文(简体) ), `Makefile.template` 财务报告和审定财务报表 `settings.presets.json` ——全部内容 `relay init` 写入 __ 储存库,可读之处是产品而不是泄漏.

**软件包在安装时间——永远没有在您的机器上运行代码.** 没有 `postinstall`,没有 `preinstall`, (中文(简体) ), `install`, (中文(简体) ), `prepare` 或者说 `prepublish` 也一样. `relay init` 写入 `.claude/`,则 代理商接受其指示,所以必须保持 **输入命令**: 软件包 作为副作用编辑代理指令 `npm install` 能够改变特工在 无关的依赖突起。 测试套房声称每个安装时间钩都不存在.

**`prepublishOnly` 这是有意的例外,它不是同一类.** 它运行 `node build.mjs && npm test` 编辑 **出版社** 机器期间 `npm publish` 从来没有 消费者的,甚至没有在公布的焦油丸的行刑路径中出现. 它的存在是因为 "记得在出版前运行建筑"是手动步骤 保护不同 运输当前代码和 stale `dist/`,这种形状的人工步骤已经 在此失败( 版本文件同步事件) 。 机械化,不能忘记 见 [`docs/npm-deprecation-policy.md`](https://npmcn.com/package/%40atlanticus-ai/relay/docs/npm-deprecation-policy.md) § 完整的生命周期钩 安装时间/publisher- side 拆分.

### 如果一个坏版本的船

惩罚吧 **转发**,从不落后——看 [`docs/npm-deprecation-policy.md`](https://npmcn.com/package/%40atlanticus-ai/relay/docs/npm-deprecation-policy.md)。 。 。 . npm 限制72小时后未出版, 未出版的每个已解决的安装中断 到那个版本。 不好的出版是用 **补丁释放** 加号 `npm deprecate` 坏事发生 版本,不是通过撤回.

## 常见问题

### @atlanticus-ai/relay 是什么？

会话操作系统的所有者门控，代理执行的开发。失败关闭的会话门，仅可附加的书面记录，以及跨多个项目的一个协议。

### 如何安装 @atlanticus-ai/relay？

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

### @atlanticus-ai/relay 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/atlanticus-ai\_\_relay 是否存在。

### @atlanticus-ai/relay 支持 ESM 还是 CommonJS？

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

### @atlanticus-ai/relay 需要什么版本的 Node\.js？

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

### @atlanticus-ai/relay 可以商用吗？

@atlanticus-ai/relay 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中，请阅读该文件确认可否商用。以上为概括，不构成法律意见，请以许可原文为准。

### @atlanticus-ai/relay 的下载量有多少？

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

### @atlanticus-ai/relay 还在维护吗？

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

