# @aurelienbbn/agentlint-plugin-alchemy 中文文档

规范地址：https://npmcn.com/package/%40aurelienbbn/agentlint-plugin-alchemy/

版本：0\.1\.4
npm 元数据更新时间：2026-10-14T14:03:37.107Z
中文译文更新时间：2026-11-07T05:37:44.900Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40aurelienbbn/agentlint-plugin-alchemy
原文对照：https://npmcn.com/package/%40aurelienbbn/agentlint-plugin-alchemy/?lang=original
项目主页：https://github.com/aurelienbobenrieth/harness/tree/main/packages/agentlint-plugin-alchemy#readme
源码仓库：https://github.com/aurelienbobenrieth/harness

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

- 包体积（解压后）：171 kB，7 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：^22\.19\.0 \|\| ^24\.11\.0
- 运行依赖：0 个
- peer 依赖：@aurelienbbn/agentlint \>=0\.3\.0 \<0\.9\.0
- 首次发布：2026-09-28T13:38:44.198Z
- 最新版本发布：2026-10-14T14:03:36.450Z
- 近 30 天下载量：2264（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 5 个）

## 中文简介

Alchemy v2(基础设施作为效果)堆栈的自定义代理林特规则.

## 安装

```sh
npm install @aurelienbbn/agentlint-plugin-alchemy
```

也可以使用：`pnpm add @aurelienbbn/agentlint-plugin-alchemy`、`yarn add @aurelienbbn/agentlint-plugin-alchemy`、`bun add @aurelienbbn/agentlint-plugin-alchemy`

## README

# @aurelienbn/ agentlint-plugin-alchemy (英语)

[![npm](https://img.shields.io/npm/v/@aurelienbbn/agentlint-plugin-alchemy)](https://www.npmjs.com/package/@aurelienbbn/agentlint-plugin-alchemy) [![downloads](https://img.shields.io/npm/dm/@aurelienbbn/agentlint-plugin-alchemy)](https://www.npmjs.com/package/@aurelienbbn/agentlint-plugin-alchemy) [![CI](https://github.com/aurelienbobenrieth/harness/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/aurelienbobenrieth/harness/actions/workflows/ci.yml) [![license](https://img.shields.io/npm/l/@aurelienbbn/agentlint-plugin-alchemy)](https://github.com/aurelienbobenrieth/harness/blob/main/packages/agentlint-plugin-alchemy/LICENSE) [![node](https://img.shields.io/node/v/@aurelienbbn/agentlint-plugin-alchemy)](https://github.com/aurelienbobenrieth/harness/blob/main/packages/agentlint-plugin-alchemy/package.json)

**6 Agentlint 为Alchemy v2 sacks进行评论:无静置替换,无静置数据删除,无静置收购.**

> \[尖叫声\] 需要引擎 `@aurelienbbn/agentlint` `>=0.3.0 <0.9.0` 作为同伴. [证据](https://npmcn.com/package/docs/compatibility.md#agentlint-engine)。 。 。 .

> \[注\] 已核对 `alchemy@2.0.0-beta.79`. 释放候选人:还没有消费者校正这些规则。 炼金术在β;替换触发和默认可以在β之间移动.

## 快开始

```sh
agentlint init --preset "@aurelienbbn/agentlint-plugin-alchemy#starterPreset"
agentlint rules test
agentlint rules scan --review
agentlint next --format json
```

`init` 保存已有的配置并打印安装命令;从未安装. **更改规则需要合并基础: 与完整历史对照( C)`fetch-depth: 0`(原始内容存档于2017-03-21). In CI.**

```ts
import { defineConfig } from "@aurelienbbn/agentlint";
import { initConfigExposure, strictPreset } from "@aurelienbbn/agentlint-plugin-alchemy";

export default defineConfig({ extends: [strictPreset], rules: [initConfigExposure] });
```

## 规则

| 规则 | 严格 | 启动 | 权力 | 生命周期 | 着火了 |
| --- | --- | --- | --- | --- | --- |
| `resource-replacement-review` | ✅ | ✅ | 人类 | 变动 | 逻辑 ID 未更改 `renamedFrom`,声明删除,替换道具更改,堆栈重命名 |
| `state-store-change` | ✅ | ✅ | 人类 | 变动 | `state:` 选项 `Alchemy.Stack` 已更改 |
| `removal-policy-change` | ✅ |  | 人类 | 变动 | `RemovalPolicy.retain(...)` 删除或缩小, `destroy()` 添加, `forceDestroy: true` 设定 |
| `removal-policy-review` | ✅ |  | 代理人 | 状态 | R2, D1, KV 声明, 没有删除政策, 或 a `retain` 条件读取 `Stage` |
| `adopt-review` | ✅ |  | 人类 | 状态 | `AdoptPolicy.adopt(...)`, (中文(简体) ), `--adopt` 在软件包中。json 脚本 |
| `init-config-exposure` | 🧪 |  | 代理人 | 状态 | `yield* Config.*("KEY")` 直接装在工人、集装箱或Lambda内 |

在预设中 \\ \\ 选入, 明确注册 。 预设忽略 `**/*.d.ts`,每个规则都是标准修订一,探测器版本一.

答案位于代码之外的人类权威:在部署阶段的数据是否可能去取,云层资源是否由他人拥有可能被接管. `removal-policy-review` 保持代理可接受性,因为可处理性通常可见于代码(缓存、预览、固定); 提升至 `human` 在你的绑定,如果它不是.

```diff
-yield* Cloudflare.R2.Bucket("Bucket");
+yield* Cloudflare.R2.Bucket("Assets"); // ❌ resource-replacement-review: new empty bucket, old one deleted
+yield* Cloudflare.R2.Bucket("Assets").pipe(Alchemy.renamedFrom("Bucket")); // ✅ state row migrates

-yield* Cloudflare.D1.Database("Orders", { primaryLocationHint: "weur" });
+yield* Cloudflare.D1.Database("Orders", { primaryLocationHint: "apac" }); // ❌ D1 plans a replace

-  state: localState(),
+  state: Cloudflare.state(), // ❌ state-store-change: next deploy plans against empty state
```

```ts
Cloudflare.D1.Database("Orders"); // ❌ removal-policy-review: default destroy
Cloudflare.D1.Database("Orders").pipe(RemovalPolicy.retain(stack.stage === "prod")); // ✅

Cloudflare.D1.Database("Db").pipe(RemovalPolicy.retain(Effect.map(Alchemy.Stage, isProd))); // ❌ alchemy#1738

deploy(program).pipe(AdoptPolicy.adopt(true)); // ❌ adopt-review
```

`resource-replacement-review`: 替换触发器和选项

替换触发器, 从每个提供者读取 `diff` 内 `alchemy@2.0.0-beta.79`数字 :

| 资源 | 替换于 | 保持原地不动 |
| --- | --- | --- |
| `R2.Bucket` | `name` 设置或更改, `jurisdiction`, (中文(简体) ), `locationHint` | `name` 删除( 已部署名称保留), 未设置 qq `jurisdiction: "default"`, (中文(简体) ), `storageClass`、域、CORS、生命周期 |
| `D1.Database` | `name` 设置或更改, `jurisdiction`, (中文(简体) ), `primaryLocationHint` 设置或更改 | `name` 或者说 `primaryLocationHint` 已删除, 未设置qq `jurisdiction: "default"`, (中文(简体) ), `readReplication` |
| `KV.Namespace` | 无: `title` 重命名到位 | `title` |

逻辑ID更改与附加的同类型声明配对;已附带无条件声明的已删除声明 `RemovalPolicy.retain()` 保持安静。 在文件之间移动的声明保持沉默.

`defineResourceReplacementReview({ resources })` 替换地图 : `{ "Queues.Queue": { name: "changed" } }`。 。 。 . `"changed"` 对包括去除在内的任何区别起火; `"set"` 只有在后面方设定了不同的值时; `{ trigger, absent }` 比较一个未设置道具为 `absent`。 。 。 .

`removal-policy-change` 财务报告和审定财务报表 `removal-policy-review`: 什么是政策

`removal-policy-change` 比较 `RemovalPolicy.retain(...)` 编号 : `RemovalPolicy.destroy(...)` 整个变化的呼声,所以一个被感动的呼声是静默的,留下的,随其被去除的宣告,则留给 `resource-replacement-review`。 。 。 . `retain()`, (中文(简体) ), `retain(true)` 财务报告和审定财务报表 `destroy(false)` 政策不变 `destroy()`, (中文(简体) ), `destroy(true)` 财务报告和审定财务报表 `retain(false)`; 切换为无条件保留永不起火. `forceDestroy: true` 仅在变更前存在的桶上放火:没有它,R2拒绝去掉一个非空桶.

`removal-policy-review` 接受任何附件 `.pipe(...)` 提及 `retain` (包括援助人员,例如: `retainOnDeployedStage`)或(或) `RemovalPolicy.destroy`。当 `retain` 参数为 `Stage`: 效果表在效果工人内部失效(化学式# 1738, 打开);从 `Alchemy.Stack` 换句话说.

两个都拿 `{ resources }`默认值 `["R2.Bucket", "D1.Database", "KV.Namespace"]`。 。 。 .

`init-config-exposure`: 为何选入

炼金术将每个配置密钥 运行时间的内装值绑入部署的运行时间, `secret_text` 在"云花"上,有部署者的价值。 这是有文件记载的传送秘密的方式,所以大多数发现都是为了:在强制执行之前校正. 手提时间为:`fetch: Effect.gen(...)`)和道具效果保持缄默. `defineInitConfigExposure({ runtimePattern })` 替换构造器模式.

## 限制

-   **语言学,不是语义学.** 更改文本之前/之后读取的规则: 计算逻辑ID比较为表达式, 道具作为变量传递或效果不比较, `Namespace.push` 动作是无形的,a `state` 选项作为标识符只通过同一个文件解决 `const`,而堆栈文件中的正则文字可以混淆扫描仪.
-   **取消命名的导入 .** 资源确认为 `R2.Bucket(`, (中文(简体) ), `D1.Database(`, (中文(简体) ), `KV.Namespace(` 任何命名空间背后; `import { Bucket }` 接下来 `Bucket(...)` 没有.
-   **默认情况下只有Cloudflare三家商店.** 持久对象、队列、超驱动和 AWS 存储需要明确 `resources` 地图.
-   **YAML 没有扫描 .** `--adopt` 在 GitHub 工作流程文件中是隐形的: Agentlint 状态规则 解析 JS, TS 和 JSON 仅.
-   **过渡配置读取是无形的.** 图书馆读取 `Config` 输入时也绑定( 化学式# 1842); 只有直接 `yield* Config.*("KEY")` 火灾.
-   **不是计划.** `alchemy plan` 这些规则确保有人读它.

## 登记的合同库存

从软件包导出 `pnpm catalog`. 规则特定选项和限制在上文和源测试中都有描述.

| 规则/检查 | 触发或审查范围 |
| --- | --- |
| `adopt-review` | 采用政策.adopt (.) 和 `--adopt` 在软件包中.json脚本,它让Alchemy接管了云资源,无法证明它拥有. |
| `init-config-exposure` | 标记每个效果/ Config 密钥在一个 Alchemy runtime init中产生, Alchemy 将它上传到部署的 runtime 作为秘密绑定. |
| `removal-policy-change` | 删除或缩小删除政策的旗帜 。 保留、添加去除政策.destroy,或将强制去除设置在已存在的R2桶上,因此人类确认的数据可能被删除. |
| `removal-policy-review` | 在默认的去除策略上, 旗帜可状态化的Alchemy资源( R2, D1, KV), 并保留读取 Stage 通过 Effect 的条件 . |
| `resource-replacement-review` | 使 Alchemy 替换或删除状态资源的旗帜 diffs: 逻辑ID 更改后未重新命名 From, 声明被删除, 替换- 触发道克被更改, 或者堆栈重新命名 . |
| `state-store-change` | 标记更改 `state:` 选项。 堆积如此人能证实 现有状态是如何移动到新商店的. |

### 信用概念

-   炼金术 采用政策、炼金术/术/用药政策 [https://alchemy.run/cli/取用-资源](https://alchemy.run/cli/adopting-resources) (Apache-2.0项目;概念,独立实施)
-   炼金术取出政策、炼金术取出/铸金术取出/取出政策2.0.0-β.79;和 [https://alchemy.run/基础设施-as-code/资源-生命周期](https://alchemy.run/infrastructure-as-code/resource-lifecycle) (Apache-2.0项目;概念,独立实施)
-   在炼金术/src/Cloudflare/R2/Bucket.ts和D1/Database.ts,2.0.0-β.79(Apache-2.0;替换已读出而未复制的触发器)中,Alchemy 提供者 diff 函数
-   炼金术的更名和资源寿命周期, [https://alchemy.run/ 基础设施-as-code/更名](https://alchemy.run/infrastructure-as-code/renaming) (Apache-2.0项目;概念,独立实施)
-   化学秘诀, [https://alchemy.run/environments/secrets (中文(简体) )](https://alchemy.run/environments/secrets),和炼金术/src/Platform.ts 2.0.0-β.79 计划相相配置绑定(Apache-2.0项目;概念,独立实施)
-   炼金术州立商店的文献, [https://alchemy.run/ state-store 互联网档案馆的存檔,存档日期2013-12-02](https://alchemy.run/state-store) (Apache-2.0项目;概念,独立实施)
-   炼金术/炼金术#1738(效果-形式保留在效果-原生工人体内失败;报告的行为,而不是代码)
-   炼金术/炼金术# 1842( 通过 init 配置绑定的部署证书读取; 已报告的行为,而非代码)

## 贷项

来自Alchemy文档和来源(Apache-2.0)的概念,未经复制而重新执行: [重命名](https://alchemy.run/infrastructure-as-code/renaming), (中文(简体) ), [资源使用周期和清除政策](https://alchemy.run/infrastructure-as-code/resource-lifecycle), (中文(简体) ), [采用资源](https://alchemy.run/cli/adopting-resources), (中文(简体) ), [状态存储](https://alchemy.run/state-store), (中文(简体) ), [机密和配置](https://alchemy.run/environments/secrets),并报告了炼金术/炼金术#1248,#1738和#1842中的行为. `starterPreset` 登机:由Peter O'Malley拆卸而来的概念灵感;没有复制代码或指南.

## 常见问题

### @aurelienbbn/agentlint-plugin-alchemy 是什么？

Alchemy v2\(基础设施作为效果\)堆栈的自定义代理林特规则\.

### 如何安装 @aurelienbbn/agentlint-plugin-alchemy？

在项目目录运行 npm install @aurelienbbn/agentlint-plugin-alchemy，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：@aurelienbbn/agentlint（\>=0\.3\.0 \<0\.9\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @aurelienbbn/agentlint-plugin-alchemy 支持 TypeScript 吗？

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

### @aurelienbbn/agentlint-plugin-alchemy 支持 ESM 还是 CommonJS？

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

### @aurelienbbn/agentlint-plugin-alchemy 需要什么版本的 Node\.js？

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

### @aurelienbbn/agentlint-plugin-alchemy 可以商用吗？

@aurelienbbn/agentlint-plugin-alchemy 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @aurelienbbn/agentlint-plugin-alchemy 的下载量有多少？

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

### @aurelienbbn/agentlint-plugin-alchemy 还在维护吗？

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

