@aurelienbbn/agentlint-plugin-alchemy

中文文档
0.1.4发布于 2026/10/14MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2264

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

中文使用文档
文档目录6 节
  1. 快开始
  2. 规则
  3. 限制
  4. 登记的合同库存
  5. 信用概念
  6. 贷项

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

npm downloads CI license node

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

[尖叫声] 需要引擎 @aurelienbbn/agentlint >=0.3.0 <0.9.0 作为同伴. 证据。 。 。 .

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

快开始

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.

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 在你的绑定,如果它不是.

-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
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 内 [email protected]数字 :

资源替换于保持原地不动
R2.Bucketname 设置或更改, jurisdiction, (中文(简体) ), locationHintname 删除( 已部署名称保留), 未设置 qq jurisdiction: "default", (中文(简体) ), storageClass、域、CORS、生命周期
D1.Databasename 设置或更改, 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: 选项。 堆积如此人能证实 现有状态是如何移动到新商店的.

信用概念

贷项

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

版本与发布记录

@aurelienbbn/agentlint-plugin-alchemy 共发布 5 个版本,首次发布于 2026/09/28;过去 12 个月发布了 5 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.4latest2026/10/1424 天前
0.1.32026/10/1325 天前
0.1.22026/09/301 个月前
0.1.12026/09/301 个月前
0.1.02026/09/281 个月前

关于 @aurelienbbn/agentlint-plugin-alchemy 的常见问题

@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 和提交记录判断。