# @cloudhal/cli 中文文档

规范地址：https://npmcn.com/package/%40cloudhal/cli/

版本：0\.6\.5
npm 元数据更新时间：2026-11-08T22:24:35.586Z
中文译文更新时间：2026-11-10T03:48:20.875Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40cloudhal/cli
原文对照：https://npmcn.com/package/%40cloudhal/cli/?lang=original
项目主页：https://cloudhal.dev/
源码仓库：https://github.com/cloudhal-dev/cloudhal

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

- 包体积（解压后）：14.4 MB，973 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=24
- 运行依赖：12 个
- peer 依赖：astro ^7\.4\.0
- 首次发布：2026-10-20T10:50:41.161Z
- 最新版本发布：2026-11-08T22:24:35.252Z
- 近 30 天下载量：3959（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：26（近 12 个月 26 个）

## 中文简介

云藻——在当地建立、运行和建造云藻遗址

## 安装

```sh
npm install @cloudhal/cli
```

也可以使用：`pnpm add @cloudhal/cli`、`yarn add @cloudhal/cli`、`bun add @cloudhal/cli`

## README

# @cloudhal/cli (英语)

每个命令和旗帜都在 `cloudhal --help` 生成 [CLI 参考](https://cloudhal.dev/docs/reference/cli)。你最常使用的是:

```
cloudhal init <dir> [--name <name>]          create a site project with a seeded local store
cloudhal dev                                 live preview (drafts visible)
cloudhal studio                              API + Studio UI (+ /mcp) for this project
cloudhal mcp [--mode plan|manual|edits|auto] MCP server over stdio for this project
cloudhal deploy                              site + admin Workers on Cloudflare
cloudhal push / cloudhal pull                local site ↔ deployment
cloudhal export / cloudhal import            one site ↔ a .cloudhal file
```

**工作室建设.** 出版的CLI船工作室预建. 逃出单簧管, `cloudhal deploy` 上传 `apps/studio/dist` 并首先检查它是否是当前:当它缺失时,或当它消失时,即当它消失时,即当它消失时 `index.html` 大于最新文件 `apps/studio/src`, (中文(简体) ), `apps/studio/index.html` 或者说 `packages/ui/src`它运行 `pnpm --filter @cloudhal/studio build`与 `--no-build-studio` 它从不建和失败 在缺失或陈旧的建筑取而代之.

### 附表(RFC-0008)

释放、禁运和期满、时区、自动化、预定代理人的食谱和自由计划说明: [附表](https://npmcn.com/package/docs/guides/schedules.md)。 。 。 .

**上云佛来.** `cloudhal deploy` 给管理员一个扣子, **每分钟** (单位:千美元)`* * * * *`:调度器的勾子,该勾子还运行了分析器的滚动和在小时水印后的评论工作(在:17). 它总是宣布SQLite背书 `SchedulerClock` 持久对象(有约束力) `SCHEDULER_CLOCK`迁移 `v1`)和设置 `CLOUDHAL_SCHEDULER`数字 :

-   `cron` (默认):触发勾;
-   `alarm`:当Cloudflare因为账户的克龙触发器被用光而拒绝触发器(Workers Free允许5)时,部署没有它而继续进行,而持久对象的提醒键被取代. 选择保留在 `.cloudhal/deploy/state.json`· ; `--scheduler cron` 再试一次扳机, `--scheduler alarm` 选择前方的时钟。 部署 `CLOUDHAL_ANALYTICS_CRON=off` 或者说 `CLOUDHAL_COMMENTS_CRON=off` 移动到 `alarm` 失去这些变量.

每个管理员请求也是后站:当心跳落后了2分多时,会在后台运行一滴. 移徙 `0017_schedules` 执行管理员的第一个要求.

**侍卫.**

-   `deploy` 拒绝部署下级调度的代码(`cloudhal.schedulesLevel` 联 合 国 `@cloudhal/core-ts`)在部署上,有开放的发布或封口的页面和条目:更古老的代码忽略了持有和关口. `--force-downgrade` 超过它.
-   `push` 当部署有公开发布时拒绝(其被绑定的版本指向图表中一个推取替换); `--cancel-schedules` 先取消他们.
-   `push` 携带内容,而不是发布:一旦部署发布, `push --replace` 保持其已出版的快照(在 Studio中被批准出版或回滚),因此它永远无法将出品移回更古老的版本. 在 Studio 中发布所推动的内容 。 从未公布的部署会像第一次部署那样,占用你的本地部署.

**预算及自动化开关.** 每个部署都写着 `CLOUDHAL_TICK_BUDGET` 财务报告和审定财务报表 `CLOUDHAL_AUTOMATIONS` 管理者:

-   `CLOUDHAL_TICK_BUDGET=free` (默认: 40 个陈述和每勾选一个释放)或 `paid` (900份陈述和最多50份释放): `cloudhal deploy --plan paid` 或者说 `cloudhal.json` `"schedules": { "plan": "paid" }`。该计划在 `.cloudhal/deploy/state.json`· ; `--plan free` 回头看 Wrangler的登录无法读取账户的计划,所以部署说明它使用的是哪个预算.
-   `CLOUDHAL_AUTOMATIONS=off` 与 `"schedules": { "automations": false }` (次数) `on`:自动化停止;放行和出关继续. 在节点上, `cloudhal dev`, (中文(简体) ), `studio`, (中文(简体) ), `mcp` 财务报告和审定财务报表 `schedules run-due` 荣誉 `CLOUDHAL_AUTOMATIONS=off` 从环境.

**图标 :**

-   `cloudhal schedules status [--remote]`: 调度器的模式和状态( t)`running`, (中文(简体) ), `late`, (中文(简体) ), `stopped`, (中文(简体) ), `unknown`),后一勾和下一唤醒,代码的调度级别,每个站点的开放发布和封口页面和条目.
-   `cloudhal schedules list [--remote] [--limit <n>]`:网站发布内容有其状态,时间和物品数量.
-   `cloudhal schedules run-due [--remote]`: 现在一滴。 一个没有长期运行的 Cloudhal 进程的自控服务器 每分钟从系统的凹槽运行它.

`--remote` 使用部署符和运算符路径 `/api/admin/schedules/status|run-due` 财务报告和审定财务报表 `/api/admin/sites/:siteId/schedules/releases`。 。 。 .

**当地人.** `cloudhal dev`, (中文(简体) ), `cloudhal studio` 财务报告和审定财务报表 `cloudhal mcp` 在最多60秒的计时器上运行相同的勾选,在启动时会有一个补选勾选;在一个项目上运行的几个是安全的.

### 读者评论(RFC-0007)

设置、节制、代理、垃圾邮件保护、隐私、消除和现成的隐私段落(英语和土耳其语): [读者评论](https://npmcn.com/package/docs/guides/comments.md)。 。 。 .

评论意见是: **可用** 除非 `cloudhal.json` 说不同,和 **关闭每个网站** 直到有人在工作室打开 部署从未以出其不意的方式增加评论表.

**`cloudhal.json` → `comments`数字 :**

| 密钥 | 默认 | 含义 |
| --- | --- | --- |
| `available` | `true` (也是当块缺失时) | `false` 从部署中删除注释:没有端点,没有脚本,没有小时评论工作. `cloudhal init` 写入 `{ "available": true }`。 。 。 . |
| `rateLimit` | `false` | `true` 或者说 `{ "limit": 10, "namespaceId": "…" }`:限制工人比率的约束(`COMMENTS_RL`该网站工人限制每个客户在隔离区提交文件(`limit` 每60 s, 默认 10; 命名空间 id 来源于部署名称, 除非设定). 在每同位素和D1限制的上方,没有这个限制就可以工作. |

**上云佛来.** `cloudhal deploy`数字 :

-   生成 `CLOUDHAL_COMMENTS_KEY` 一次进入 `.cloudhal/deploy/secrets.json` (0600),并把它给 **两者** 工人通过 `--secrets-file`;它从未被打印或写入一个配置. 失去它使得存储的电子邮件和Turnstile的秘密无法读取;
-   套装 `CLOUDHAL_COMMENTS_AVAILABLE` 管理工人;
-   运行排程器分钟勾选的小时评论工作( 后面有一个小时水印) , 即使解析器关闭了; 没有自由的克龙槽, 勾选就是 `SchedulerClock` 提醒( e)[时间表](https://npmcn.com/package/%40cloudhal/cli/#readme-schedules-rfc-0008)(三);
-   套装 `CLOUDHAL_SITE_HOSTS` 用于自定义域,并带有 `comments.rateLimit`,添加 `COMMENTS_RL`· ;
-   当可用性改变时, 清理网站的缓存一次 .

移徙 `0016_comments` 执行管理员的第一个要求。 现有部署人员收到对其下次部署的评论,但每个地点仍不部署.

**数据位置.** 一个D1数据库的管辖范围在创建时被选择,并且无法更改:

-   首个 `cloudhal deploy` a. 在终端中询问“自动”或“欧盟管辖权”;
-   `--jurisdiction eu` 预先决定(CI);
-   没有旗帜的非交互性首次部署使用自动位置并说如何选择;
-   一旦数据库存在 旗帜改变什么, 部署是这样说的;
-   移动、导出注释、在新的 `--name` 与 `--jurisdiction eu`,然后导入.

**图标 :**

-   `cloudhal comments status [--remote]`:是否备有注释并有密钥,网站的开关,收藏和保护,按状态计数,最古老的待评论,今天所储存的按日封顶的提交,以及最后一分钟的清洗请求的清洗队列(工人缓存允许5).
-   `cloudhal comments export [--remote] [--with-personal-data --out <file>]`: JSON 线条(一个标题,然后一个) `Comment` 每行,最古老的先行),用于 stdout 或 `--out`。 。 。 . `--with-personal-data` 附加带有电子邮件和需要的评论行 `--out`,然后只写所有者.
-   `cloudhal comments import --in <file> [--remote]`: 由id和进口原产地分批分出50行.
    -   每个记录必须给目标站点命名一篇文章,所以先将站点推倒.
    -   网站来自目标,状态保存,电子邮件再次被加密在目标密钥下.
    -   父母后来到来的答复,再审一次.
    -   拒绝的行以行号列出,命令出站口为1.

`--remote` 使用部署符和运算符路径 `/api/admin/sites/:siteId/comments/status|export|import`;每次通话都作为操作员审计.

**当地人.** `cloudhal dev` 获取对项目 SQLite 的评论。 关键是 `CLOUDHAL_COMMENTS_KEY` 从环境,或 `.cloudhal/comments.key` (原始内容存档于2010-06-10). random, created on first use, 0600. `cloudhal studio` 财务报告和审定财务报表 `cloudhal mcp` 使用同一个商店。 节点没有克龙,因此他们的排程勾选在它的水印后运行了每小时的评论活(保留,被删除的文章的评论,线程被时间所关闭,旧盐类),它们会清空当地的清洗队列(没有边缘缓存).

### 站点分析(RFC-0006)

所收集的、从未收集的、唯一访问者模式、保留和现成的隐私政策段落(英文和土耳其文): [网站分析和隐私](https://npmcn.com/package/docs/guides/analytics-privacy.md)。 。 。 .

每个出版的网页都包含一个第一党的脚本(`/_cloudhal/p.<hash>.js`,在1 KB gzipped 下,该页面视图将显示 `POST /__cloudhal/e` 在现场工人。 工人检查它,解决一个已公布的节点的路径,并将事件写给工人分析引擎(WAE). 管理员通过Analytics SQL绑定(无API令牌)来读取WAE,并保持D1的每日总计. 在本地和节点上,同一型号运行在该项目的SQLite上.

**`cloudhal.json` → `analytics`** (部署默认值; Studio中每个站点的设置覆盖它们):

| 密钥 | 默认 | 含义 |
| --- | --- | --- |
| `enabled` | 当块在那里时 | `false` 关闭整个部署的分析:没有绑定,没有克龙,没有脚本. 没有街区,分析就停了. `cloudhal init` 写入 `{ "enabled": true }`。 。 。 . |
| `uniqueVisitors` | `false` | 每日售出游客散列(选入;见指南). |
| `vitalsOneIn` | `5` | N 页面浏览 1 的核心网络维度 : `0` (关闭), `1`, (中文(简体) ), `2`, (中文(简体) ), `5`, (中文(简体) ), `10`, (中文(简体) ), `20`。 。 。 . |
| `queryBudget` | `8000` | 协调世界时每天未标记的WAE查询;通过它,直播数字暂停到协调世界时午夜,完整的天数仍然来自D1. |
| `rawRetentionDays` | `90` | SQLite保存的原始事件(仅当地和节点;WAE保存了3个月). |
| `dev` | `false` | 记录 `cloudhal dev` 当地交通(这是你自己的). |
| `rateLimit` | `false` | `true` 或者说 `{ "limit": 120, "namespaceId": "…" }`: 增加限制工人比率的约束(`ANALYTICS_RL`限制每个客户在隔离区之间的信标(`limit` 每60 s, 默认为 120; 命名空间 id 来源于部署名称, 除非设定). 在每同位素限制之外; " 自由工人 " 是否提供约束是未经证实的. |

```json
{ "siteId": "site_…", "analytics": { "enabled": true, "vitalsOneIn": 5 } }
```

**上云佛来.** 有了分析, `cloudhal deploy` 添加:

-   wAE 数据集 `<deployment>_events` (有约束力) `ANALYTICS`; Cloudflare 创建了第一个写入的数据集)和 vars `CLOUDHAL_ANALYTICS=on`, (中文(简体) ), `CLOUDHAL_ANALYTICS_DEFAULTS` 和,有一个自定义域, `CLOUDHAL_SITE_HOSTS`· ;
-   对管理工人,分析SQL绑定(`ANALYTICS_SQL`), vars (英语) `CLOUDHAL_ANALYTICS_DATASET`, (中文(简体) ), `CLOUDHAL_ANALYTICS_BUDGET` 财务报告和审定财务报表 `CLOUDHAL_ANALYTICS_DEFAULTS`,以及排程器分钟勾的小时滚动(后有水印于:17),将完成的天数卷入D1,删除旧的日用盐并应用保留.

这需要 **扳手 4.145 或更新** (单位:千美元) `analytics` 配置密钥); 部署停止, 并说,当项目wrangler更老的时候。 移徙 `0014_analytics` 执行管理员的第一个要求。 当解析器打开或关闭时, 部署会清理网站的缓存, 这样一来, 页面就会增加或丢失脚本标签 。 工人自由允许每个账户有5个克龙触发器:当没有一个可自由使用时,行政工人在没有一个可自由使用时部署,并且 `SchedulerClock` 持久对象的提醒运行了勾选,所以每天的总和仍然按期滚动([时间表](https://npmcn.com/package/%40cloudhal/cli/#readme-schedules-rfc-0008)) (中文(简体) ).

**打开它进行现有的部署.** 分析前的项目没有 `analytics` 键。 下一次互动 `cloudhal deploy` 问一次(“打开无饼干分析器 `cloudhal.json`;非交互部署(CI)保持解析并打印如何打开. 要决定前面,加 `"analytics": { "enabled": true }` (或 `false`)和部署. 将剧本添加到现场会改变其隐私政策必须表达的内容,所以首先更新([指南](https://npmcn.com/package/docs/guides/analytics-privacy.md#a-paragraph-for-your-privacy-policy)) (中文(简体) ). 在分析无法获得之前创建的代理密钥 `analytics:read` 自动; 在 Studio 代理页面上允许每个密钥 .

**限额和费用** (Cloudflare的公布号码截至2026-10;WAE尚未开出账单,其支付价格公布):

|  | 免费工人 | 付薪工人(每月5美元) |
| --- | --- | --- |
| 工人要求 | 每日100 000次,包括缓存点击数 | 包括10 M/月,然后每百万美元0.30美元 |
| WAE写道: | 100 000/日(每日) | 包括10 M/月,然后每百万美元2.5美元 |
| WAE 查询 | 10 000/日(每日) | 1个M/月,然后每百万美元1.0美元 |
| 写入 D1 行 | 100 000/日(每天200-2 200次) | 见 [D1定价](https://developers.cloudflare.com/d1/platform/pricing/) |
| 克龙触发器 | 每个账户5个(Cloudhal使用一个,或一个持久对象提醒) | 见 [工人限制](https://developers.cloudflare.com/workers/platform/limits/) |

每个页面视图都增加了一个工人请求(信标),加上每个被抽样的要害视图;脚本本身是一个自由的静态资产. 粗略的大小,假设每页有3个缓存资产请求:每天有1 000个浏览器的网站使用Free约5%的请求;每天有2万个浏览器使用或不分析器使用的自由账户超过其极限(Free每天有约25,000个浏览器没有分析器,19,000个浏览器关闭);每天有200,000个浏览器需要付费,总共每月约11-12个,其中约2.20个是分析器。 在Free上,工作室警告昨天的交通接近极限时(在站点设置中设置"Cloudflare plan" QQ分析). 分析SQL绑定是否适用于自由工人,其查询是否计入每天一万个,目前尚未核实([RFC-0006 (英语)](https://npmcn.com/package/docs/rfcs/0006-site-analytics.md) 步骤0:如果没有,访问仍然被记录下来,而 Studio说它现在还不能读取.

**图标 :**

-   `cloudhal analytics status [--remote]`: 有效的设置,存储和阅读器,最后一个滚动日,查询预算和昨天的请求估计; `--remote` 询问部署(部署符号).
-   `cloudhal analytics rollup [--days <n>] [--remote] [--redo]`:计算完成天数的每日总数. `--remote --days 90` 在WAE的部署(持续3个月)中回填每个请求的几个工地日,直到没有等待. `--redo` 重算已完成的天数( 仅本地) .
-   `cloudhal analytics seed [--days <n>] [--views <n>]`:确定性演示流量(默认为30天,每天约120个视图)超过已出版的页面,只在本地的SQLite;从不触及部署.
-   `cloudhal analytics export [--from <date> --to <date>] [--remote] [--out <file>]`: 每日总计为 CSV( 默认: 最近30天) 。 每名访客都没有出口.

当地, `cloudhal studio` 读取工程的 SQLite (`analytics_events`),在起步时和小时时滚动完成的天数,并推倒比起起起步时间长的原始事件 `rawRetentionDays`· ; `cloudhal mcp` 为分析工具读取相同的数据. `cloudhal dev` 仅使用 `analytics.dev`。 。 。 .

### 移动标记到术语(RFC-0002)

`cloudhal migrate tags-to-terms` 移动已贬值 `ContentEntry.tags` 将当地网站纳入 `tag` 分类学. 它首先对网站进行剖析(`before tags-to-terms`;其id是迁移 id),创建默认 `category` 财务报告和审定财务报表 `tag` 缺失的分类学(`category` 现有站点不需要),每分出一个活性标记,分批重写200个条目并再次快照(`tags-to-terms`) (中文(简体) ). 中断运行恢复; 第二次运行毫无作用 。 在你出版之前,没有活的. `--dry-run` 报告将发生什么变化; `--revert <id>` 恢复自此以来一直未编辑的条目的标记,然后删除已创建的不再使用的术语和分类.

### 更改打字字段(RFC-0041)

`cloudhal fields` 修改收藏的已键入字段以及定义的简单编辑拒绝的值项(`field_change_needs_operation`:

```bash
cloudhal fields rename events speaker presenter --dry-run   # report only; also lists theme files reading fields.speaker
cloudhal fields rename events speaker presenter
cloudhal fields retype events seats number [--clear]          # closed conversion table; --clear drops values it cannot convert
cloudhal fields retype events format select --options talk,workshop=Workshop [--multiple]
cloudhal fields localize events notes off                     # translations' own copies go; the original's value is read
cloudhal fields remove events notes
cloudhal fields revert events <operationId>
```

每一次运行先对网站进行快照(`before rename_field events.speaker`;其id是操作 id,用 `migration` 标记使每个阅读器保持一致, 重写条目在被监视的200个批次, 重新放下标记和快照。 最新译名随时更新。 一个中断的运行恢复 `cloudhal fields continue <collection> <id>`;每次收集一次操作. `--remote` 使用部署符牌运行它。 只修改了图表草稿:在您发布之前,没有活的.

### 场地档案(RFC-0039)

备份,移动一个没有部署的站点,内容保存在git,模板,文件的布局及其安全检查: [网站档案](https://npmcn.com/package/docs/guides/site-archives.md)。 。 。 .

```bash
cloudhal export [--out <file>] [--site <id>] [--no-media] [--latest-only]   # one site as a .cloudhal file
cloudhal import <file> [--replace] [--dry-run]                             # verified in full before anything is written
cloudhal import --revert <snapshot-id> [--dry-run]                         # undo a --replace
```

档案馆保存着网站的图表,快照,媒体和取出分类账,从不使用用户账号,评论,分析或秘密;其历史名称做出了每次更改. 进口保存了网站的ID. 何时 `--replace` 更改项目所在的站点, 它首先保存该站点作为一个 `before import <file>` 快照并打印 `cloudhal import --revert <id>` 带它回来。 对于另一个站点的归档,它会切换 `cloudhal.json`是因为 `siteId`离开旧址 在商店.

### 部署到云浮(ADR-0012)

`cloudhal deploy` 用途 **** 扳手登录( r)`npx wrangler login`,或 `CLOUDFLARE_API_TOKEN`) Cloudhal从未读过这些证书. 它创建了D1数据库和R2桶,如果需要的话(有一个寿命周期规则,在下方的快照包过期) `bundles/` 30天后, RFC-0010 将部署秘密生成一次 `.cloudhal/deploy/secrets.json` (0600 — 远离基特),建造和部署 **工地工人** (按需部署,有边缘) **行政人员** (Studio, API, auth, MCP),并在第一次部署上推动了您的本地站点.

**从 Git (工人建筑).** 与 `WORKERS_CI=1`,云花板设置在 [工人建筑](https://developers.cloudflare.com/workers/ci-cd/builds/), (中文(简体) ), `cloudhal deploy` 是从新克隆人那里找到的 它从罪犯那里取出名字 `wrangler.jsonc`,当检查无结果时种子启动站点,保留工人的秘密,不打印设置链接。 这就是部署到Cloudflare按钮的运行: [文件/指南/部署按钮](https://npmcn.com/package/docs/guides/deploy-button.md)。 。 。 .

**自定义域.** `cloudhal domain set news.example.com --studio studio.example.com` 记录主机名 `cloudhal.json`下一个 `cloudhal deploy` 把他们送到工人那里 [自定义域](https://developers.cloudflare.com/workers/configuration/routing/custom-domains/) (该区必须在同一Cloudflare账户中——Cloudflare创建了DNS记录和证书),并使得该站点成为其在部署上的主要主机名. `domain set` 让它在本地的店里做主,所以 `cloudhal dev`, (中文(简体) ), `render` 财务报告和审定财务报表 `build` 在任何部署之前,将其写入峡谷链接、站点图和图像。 工人们的地址还在继续工作. `cloudhal domain remove` 并调遣它. `--redirect www.news.example.com` (repeatable) 添加以 301 回复网站域名,路径和查询保存的hosts: 下一条向站点工人部署的路线作为自定义域名,因此 Cloudflare 创建了他们的 DNS 记录和证书. `cloudhal domain remove redirects` 丢掉他们.

**电子邮件(RFC-0011).** 添加 `"mail": { "from": "studio@example.com", "fromName": "Example Studio" }` 改为 `cloudhal.json` 下一个 `cloudhal deploy` 给管理员一个 [云浮电子邮件服务](https://developers.cloudflare.com/email-service/) `send_email` 绑在地址上 然后,邀请可以被电子邮件,工作人员可以从登录屏幕上重置被遗忘的密码。 先登入电子邮件服务中地址的域名. 发送给任何接收者需要的工人(包括每月3 000个电子邮件);在免费电子邮件服务中,仅向您账户的核实地址发送邮件。 当地, `cloudhal studio` 在终端中打印这些邮件而不是发送.

**大赦国际(RFC-0016).** 添加 `"ai": {}` 改为 `cloudhal.json` 下一个 `cloudhal deploy` 绑定 [大赦国际](https://developers.cloudflare.com/workers-ai/) 给管理员 不需要钥匙,它每天开1万个免费神经元的帐单。 每个网站的主人然后在 Studio QQ Sets QQ AI中打开AI,选择模型并设定每日限制. 可选 [AI 网关](https://developers.cloudflare.com/ai-gateway/) 添加日志和缓存,并用存储在网关中的密钥到达其他提供者的模型. 当地, `cloudhal studio` 到达工人AI 超过REST,当 `CLOUDFLARE_ACCOUNT_ID` 财务报告和审定财务报表 `CLOUDHAL_AI_TOKEN` (与工人AI权限的标志)设定在环境中.

**操作和硬化.** 两个工人都向工人日志发送日志,并编辑了查询字符串. 单位 `cloudhal.json`数字 :

-   `"observability": { "logs": 0.25, "traces": 0.05 }` 工人追踪记录和开关样本(默认关闭);
-   `"placement": "smart"` 尝试在管理员上聪明的放置 .

静态建筑将网站内容-安全政策输入 `dist/_headers`。 。 。 . [文档/指南/云浮-硬化](https://npmcn.com/package/docs/guides/cloudflare-hardening.md) 涵盖成本、如何衡量智能置放以及自定义域的WAF基线:自由管理规则和限制利率规则.

之后的部署是真理的来源——特工们在那里编辑. `cloudhal push` 拒绝覆盖远程更改的内容; `cloudhal pull` 把它带回家. `--dry-run` 将两个工人与真正的扳手捆绑在一起,没有账户.

出版和回滚从不重建任何东西:网站工人遵循已出版的快照指针,管理员工人清理其缓存. 预览链接( N)`?cloudhal-preview=…`)在真实站点上显示草稿.

`cloudhal mcp` 您在 Claude 代码/ cursor / 任何 MCP 客户端中注册的内容 :

```json
{ "mcpServers": { "cloudhal": { "command": "cloudhal", "args": ["mcp"], "cwd": "/path/to/site" } } }
```

本地开发者拥有该项目,所以默认范围是 `*`; 发布、回滚和删除仍停留在客户端内等待批准(或手拿回a) `confirmToken` 当客户无法诱导时). `--scopes site:read,content:write` 缩小客户端可能做的事情。 技能来自 `<project>/skills` 或捆绑 `skills/official`。 。 。 .

所有东西都离线了: `.cloudhal/` 持有 `data.db` (SQLite)和 (中文(简体) ) `blobs/`。 。 。 . `cloudhal.json` 记录网站编号.

在单列波内部,本站作为TypeScript运行于节点24上(类型剥离): `node packages/cli/bin/cloudhal.ts init examples/my-site`. 根据 `examples/` 与工作空间相关, `workspace:*` 依赖性被重写为已出版的版本.

`cloudhal dev` 无法运行在 Vitest 工人内部( 当 Astro 关闭其 dev 中间软件时) `VITEST` ); e2e 测试将本作子进程产出.

## 常见问题

### @cloudhal/cli 是什么？

云藻——在当地建立、运行和建造云藻遗址

### 如何安装 @cloudhal/cli？

在项目目录运行 npm install @cloudhal/cli，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：astro（^7\.4\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。它还提供命令行工具 cloudhal，可以用 npx cloudhal 直接运行。

### @cloudhal/cli 支持 TypeScript 吗？

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

### @cloudhal/cli 支持 ESM 还是 CommonJS？

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

### @cloudhal/cli 需要什么版本的 Node\.js？

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

### @cloudhal/cli 可以商用吗？

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

### @cloudhal/cli 的下载量有多少？

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

### @cloudhal/cli 还在维护吗？

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

