# @easybits\.cloud/cli 中文文档

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

版本：0\.22\.1
npm 元数据更新时间：2026-10-27T17:48:07.157Z
中文译文更新时间：2026-11-13T05:28:51.144Z
软件包许可：MIT

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

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

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

- 包体积（解压后）：484 kB，3 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：1 个
- 首次发布：2026-02-25T18:24:29.203Z
- 最新版本发布：2026-10-27T17:48:06.889Z
- 近 30 天下载量：2192（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：35（近 12 个月 35 个）

## 中文简介

EasyBits的官方CLI, AI代理的云 – sandbox, host, 域, 数据库, 代理以及您终端的文件

## 安装

```sh
npm install @easybits.cloud/cli
```

也可以使用：`pnpm add @easybits.cloud/cli`、`yarn add @easybits.cloud/cli`、`bun add @easybits.cloud/cli`

## README

# @easybits.cloud/cli (英语)

官方CLI为 [简单比特](https://www.easybits.cloud/),给AI代理的云: 沙盒、主机、自定义域、 SQL 数据库、 代理和文件. 用于人和编码代理的建筑——每个命令都需要 `--json` 并且退出代码是稳定的.

## 安装

```bash
npm i -g @easybits.cloud/cli        # installs `easybits`
npx -y @easybits.cloud/cli --help   # or run it without installing
```

需要节点22+.

## 登录

```bash
easybits login                       # opens your browser (OAuth2 + PKCE); session renews itself
easybits login --no-browser          # only print the sign-in URL
easybits login - < key.txt           # or save an API key, read from stdin (never in argv)
printenv EB_KEY | easybits login --with-token   # same as -
easybits usage
easybits logout
```

在终端中运行一个没有会话的命令会自动启动登录; 没有终端(代理,CI),它就会出站 `3`. 优先发言: `EASYBITS_API_KEY` env var > (法语) `--token <key>` >浏览器会话 > 保存了 API 密钥. 密钥 : [https://www.easybits.cloud/dash/developer. 互联网档案馆的存檔,存档日期2013-12-02](https://www.easybits.cloud/dash/developer)。 。 。 . 在线人和特工中, `EASYBITS_API_KEY` 不需要登录. `EASYBITS_URL` 指向 CLI 时 另一个服务器( 默认) `https://www.easybits.cloud`· ; `baseUrl` 内 `~/.easybitsrc` 工作也一样.

## 图标

```bash
# Sandboxes (alias: sb)
easybits sandboxes ls
easybits sandboxes create --template node --name scratch --dotenv .env
easybits sandboxes create --size m --ttl 1800 --no-wait   # size s|m|l|xl (plan-gated)
easybits sandboxes get sb_abc123
easybits sandboxes exec sb_abc123 -- npm test
easybits sandboxes logs sb_abc123 --unit myapp --lines 100 --since "10 min ago" --grep ERROR
easybits sandboxes files ls sb_abc123 /data/work
easybits sandboxes files read sb_abc123 /etc/os-release
easybits sandboxes files read sb_abc123 /data/app.db --out app.db   # tope 8 MB: más grande sale con código 1 ("truncated")
easybits sandboxes files write sb_abc123 /data/work/app.js ./app.js
easybits sandboxes files mkdir sb_abc123 /data/work/out
easybits sandboxes files mv sb_abc123 /data/work/a.txt /data/work/out/a.txt
easybits sandboxes files rm sb_abc123 /data/work/tmp -r --yes
easybits sandboxes bg start sb_abc123 --cwd /data/work -- npm run dev   # prints an execId
easybits sandboxes bg ls sb_abc123
easybits sandboxes bg status sb_abc123 exec_123    # status, exit code, its stdout/stderr
easybits sandboxes bg kill sb_abc123 exec_123      # the whole process group
easybits sandboxes git clone sb_abc123 --repo https://github.com/you/app.git --dir /data/work/app --git-token '$secret:GITHUB_TOKEN'
easybits sandboxes git status sb_abc123 --dir /data/work/app
easybits sandboxes git commit sb_abc123 --dir /data/work/app --all -m "fix: checkout"
easybits sandboxes codex login sb_abc123     # Codex on YOUR ChatGPT plan: shows a link + code, you sign in, saved to your vault
easybits sandboxes codex connect sb_def456   # puts that session in another box (installs Codex if missing)
easybits sandboxes codex save sb_abc123      # saves the renewed session back to the vault
easybits sandboxes git push sb_abc123 --dir /data/work/app --git-token '$secret:GITHUB_TOKEN'
easybits sandboxes git pull|checkout|log sb_abc123 --dir /data/work/app …
easybits sandboxes suspend sb_abc123
easybits sandboxes resume sb_abc123
easybits sandboxes snapshot sb_abc123 --name before-upgrade
easybits sandboxes destroy sb_abc123 --yes

# Hosting: permanent machines (alias: deploy)
easybits machines ls
easybits machines launch --repo https://github.com/you/shop.git --tier micro --domain shop.example.com
easybits machines launch --machine shop --archive ./build.tgz --prebuilt -m v2   # redeploy
easybits machines deploy sb_abc123 -m "v1.2"   # publish a release of the current code
easybits deploy sb_abc123 -m "v1.2"            # same thing, shorter
easybits machines releases sb_abc123 --limit 5
easybits machines logs sb_abc123 --lines 100 --grep ERROR
easybits machines rollback sb_abc123 rel_789
easybits machines secrets ls sb_abc123
easybits machines secrets set sb_abc123 --dotenv .env.production   # - reads stdin
easybits machines secrets unset sb_abc123 DATABASE_URL
easybits machines restart shop       # restart the app with the current secrets/runspec (no build)
easybits machines adopt sb_abc123 --name shop-prod --unit app --import-env /app/secrets.env --dry-run   # register a box that already runs; its secrets move to the vault
easybits machines get shop           # tier, size, MXN/month, whether it sleeps
easybits machines tiers              # the catalog: sizes and prices in MXN
easybits machines runspec get shop
easybits machines runspec set shop --data /app/data --start 'node server.js' --port 8080   # merges
easybits machines backups shop       # daily data backups (7 days)
easybits machines backup shop        # one now
easybits machines redeploy shop --tier focus --replace   # resize: new machine from the newest release
easybits machines rm shop --yes      # release: stops billing, last backup, destroys the box
easybits init --port 3000            # GitHub Actions workflow that deploys on every push

# Domains of your account (serve your websites at <slug>.example.com and the root)
easybits domains ls
easybits domains add example.com             # prints the DNS records to create
easybits domains verify example.com          # TXT found → certificate issued
easybits domains dns-auto example.com        # DNS in Mailmask? writes the records for you (--undo restores)
easybits domains apex example.com mi-tienda  # serve a website at example.com and www (--clear removes it)
easybits domains rm example.com --yes

# Domains on a sandbox or machine port (was `easybits domains … <sandbox>`; that still works)
easybits sandboxes domains ls sb_abc123
easybits sandboxes domains add sb_abc123 shop.example.com --port 3000
easybits sandboxes domains verify sb_abc123 shop.example.com   # exit 1 until it is ready
easybits sandboxes domains rm sb_abc123 shop.example.com --yes

# Web (metered in web queries; out of them → exit 1 with the link to buy a pack)
easybits web search dentista polanco --country mx            # organic results: # / title / url
easybits web fetch https://example.com --markdown --main      # body to stdout (--out page.md to save it)
easybits web extract google_maps --input '[{"keyword":"dentista Polanco CDMX","country":"MX"}]' --limit 50 --wait
easybits web extract instagram_profiles --url https://instagram.com/easybits   # async: prints the jobId
easybits web extract-status j_abc123                          # records as JSON lines once done
easybits web crawl https://docs.example.com --max-pages 5 --main

# Webhooks (HMAC-signed POSTs when your files, websites or forms change)
easybits webhooks ls
easybits webhooks create https://example.com/hook --event file.created --event form.submitted   # secret shown ONCE
easybits webhooks update 66f0c2a1b2c3d4e5f6a7b8c9 --event file.created,file.deleted   # --pause / --resume / --url
easybits webhooks rm 66f0c2a1b2c3d4e5f6a7b8c9 --yes

# API keys
easybits keys ls                                    # prefix only
easybits keys create ci-deploy --scopes READ,WRITE --expires 2027-01-31   # prints the key ONCE
easybits keys revoke ci-deploy --yes                # by id, name or prefix

# Account secrets vault (values never come back; used by name: $secret:NAME, --secret NAME)
easybits secrets ls
easybits secrets set --dotenv .env.production   # KEY=VALUE lines; - reads stdin
printf '%s' "$TOKEN" | easybits secrets set GITHUB_TOKEN   # one value from stdin
easybits secrets rm GITHUB_TOKEN --yes

# Your crons: call a public https URL or message one of your agents, repeating (at most every 5 min) or once
easybits crons create "Study reminder" --cron "30 8 * * *" --url https://www.ghosty.studio/api/v2/me/push \
  --method POST --body '{"title":"Study time"}' --secret GHOSTY_PUSH_TOKEN
easybits crons create "Weekly report" --cron "0 9 * * 1" --agent <agentId> --prompt "Send me the sales summary"
easybits crons create "Heads-up" --at 23:00 --url https://my-app.com/api/notice --method POST --dry-run  # once, today 23:00 in --tz
easybits crons create "Heads-up" --in 2h --url https://my-app.com/api/notice --method POST              # once; --until/--times end repeating ones
easybits crons create "Review" --at 23:00 --run "python3 asc.py submit" --file scripts/asc.py \
  --secret-file ASC_P8:~/.appstoreconnect/private_keys/AuthKey_X.p8     # a command in a throwaway box; the .p8 only this cron reads
easybits crons create "Daily signups" --cron "0 9 * * *" --run "python3 count.py" --file count.py \
  --machine my-app                                                       # runs with my-app's env and secrets (its DATABASE_URL), resolved each run
easybits crons get "Review"                                              # what it does, how it notifies you, next run (--json: all of it)
easybits crons runs "Review" --logs --limit 5                            # exit code + stdout/stderr
easybits crons wait "Review" --timeout 2h                                # blocks until it runs; exits with its exit code
easybits crons update "Review" --notify push,email --notify-on always    # push to the Ghosty app / email to you
easybits crons ls
easybits crons update "Study reminder" --cron "0 7 * * 1-5"
easybits crons run "Study reminder"       # id or exact name
easybits crons runs "Study reminder"
easybits crons pause "Study reminder"
easybits crons rm "Study reminder" --yes

# Event inboxes: your own webhook URL; events reach your terminal live or wait for you
easybits inbox create builds              # prints the URL (anyone with it can write)
easybits inbox ls
easybits inbox listen builds              # one JSON line per event, live (Claude Code: run it with Monitor)
easybits inbox read builds                # the unread ones, marked read (--since <seq>: from a cursor)
easybits inbox update builds --retention 30   # rename (--name) or keep events longer; the URL stays
easybits inbox rotate builds --yes        # new URL; the old one stops working (if it leaked)
easybits inbox rm builds --yes

# Platform crons (platform admins only; key with the ADMIN scope)
easybits crons ls --platform
easybits crons runs backup-machines
easybits crons run purge-notifications
easybits crons pause check-hosting
easybits crons resume check-hosting

# Databases
easybits db ls
easybits db create leads
easybits db tables leads             # tables, row counts, columns, permanent vs external links
easybits db photos put catalog --table products --key-column sku --dir photos/   # SKU-123.jpg → row sku=SKU-123
easybits db query leads "SELECT * FROM leads" --json
easybits db rename leads prospects --dry-run   # which agent prompts name it
easybits db rm leads --dry-run                 # tables and rows that would be lost
easybits db rm leads --yes
easybits db attach clave                     # the database your machine opens at /v1/db/clave/

# Agents
easybits agents ls
easybits agents create --template goose --name helper --dotenv .env
easybits agents get helper          # by name or id: record + prompt, MCP, skills, files
easybits agents get helper --fields status,systemPromptMode --json
easybits agents get helper --prompt-out PROMPT.md
easybits agents message helper "hello"
easybits agents message helper "and now?" --session ses_456   # continue a conversation
easybits agents destroy helper --yes

# Configure an agent with a machine (ghosty-lite, goose) — every write takes --dry-run
easybits agents set helper --prompt-file PROMPT.md [--prompt-mode append|replace]
easybits agents files ls|get|put|rm helper [path|local-files…] [--to DIR] [--out FILE]
easybits agents skills ls|get|add|rm helper [slug…] [--dir FOLDER | --file SKILL.md] [--restart]
easybits agents mcp get|set helper [--file servers.json|-]   # set replaces the list and restarts
easybits agents restart helper                  # restart its runtime (new session; skills and MCP load)
easybits agents try helper "who are you?"      # one full turn as text: verify what you set up
easybits agents logs helper --since "10 min ago"
easybits agents doctor helper                   # exits 1 on a problem; status "error" shows why it did not start
easybits agents export helper --out ./helper      # the agent as a folder: agent.yaml + skills/ + files/
easybits apply ./helper --dry-run                 # after editing: the plan (+ ~ - !); --prune also removes
easybits apply ./helper --create --name helper-2  # a new agent from the folder
easybits agents create --like helper --name helper-2 [--copy-files] --dry-run   # clone its setup, never its env
easybits agents create --from helper.json --name helper-3

# Fleet agents (one agent, many conversations: WhatsApp, WABA, Teams, web)
easybits fleet ls
easybits fleet get soporte                          # engine, model, effort, channels, prompt
easybits fleet capabilities soporte --json          # engines, models, tool buckets, MCPs, skills, channels
easybits fleet configure soporte --prompt-file PROMPT.md --model claude-sonnet-5-5 --recycle
easybits fleet message soporte "¿qué horarios tienen?" --config-group web   # prints the reply

# Files, websites, account
easybits files ls
easybits files upload ./report.pdf
easybits files upload ./logo.png --public   # open CDN URL; private by default
easybits files rm FILE_ID --yes
easybits sites ls                    # your site-builder sites (/dash/sitios): kind, engine, URL
easybits sites create --prompt "Landing for my dental clinic"   # web app (TanStack) in its own machine
easybits sites create --prompt "Task tracker with login" --stack next --json
easybits sites create --name "Promo" --kind static              # CDN website instead of a machine
easybits sites model my-clinic                                  # engine + model that build it (● = current)
easybits sites model my-clinic claude-sonnet-5-5                # the model applies to all your sites with that engine
easybits sites theme get my-clinic                              # site by name or id
easybits sites theme set my-clinic --theme dracula              # or --colors theme.json (every token)
easybits websites ls                 # every static website (also documents and agent-published pages)
easybits websites create "My shop" --slug my-shop   # slug optional
easybits websites slug my-shop my-store             # change it; the old URL 301s
easybits websites get my-store                      # slug or id: files, size, URL
easybits websites deploy my-store ./dist            # upload a folder keeping its paths (--dry-run lists it)
easybits websites upload my-store ./hero.jpg --path img/hero.jpg
easybits websites files ls my-store                 # paths inside the site
easybits websites rm my-store                       # type the slug to confirm (--yes without a terminal)
easybits providers                   # storage provider (Tigris by default)
easybits usage

# Documents: pages of HTML you write (page = number 1… or id)
easybits documents ls --search quote
easybits documents create --name "ACME quote" --html cover.html --html prices.html
easybits documents create --name "Carousel" --format ig-feed   # one blank 1080x1350 page
easybits documents get "ACME quote"                # format, URL and pages
easybits documents pages ls "ACME quote"
easybits documents pages get "ACME quote" 2 --out prices.html
easybits documents pages set "ACME quote" 2 prices.html        # - reads stdin
easybits documents add-page "ACME quote" annex.html --after 2
easybits documents rm-page "ACME quote" 3 --yes
easybits documents reorder "ACME quote" 1 3 2
easybits documents deploy "ACME quote"             # public URL (+ PDF)
easybits documents export pdf "ACME quote" --out quote.pdf
easybits documents export png Carousel --out ./slides   # one PNG per page, exact size
easybits documents rm "ACME quote" --yes

# Video: HTML + GSAP scenes with narration, rendered to MP4 (scene = number 1… or id)
easybits video projects create --name "Fall promo" --format square   # portrait 1080x1920 by default
easybits video projects ls
easybits video projects get "Fall promo"           # scenes, music, status, last MP4
easybits video scenes add "Fall promo" intro.html --timeline intro.js --narration "Fall is here"
easybits video scenes ls "Fall promo"
easybits video scenes set "Fall promo" 1 --duration 4 --voice ef_dora
easybits video scenes reorder "Fall promo" 2 1
easybits video scenes rm "Fall promo" 2 --yes
easybits video music set "Fall promo" https://cdn.example.com/bed.mp3   # none removes it
easybits video render "Fall promo" --wait --out promo.mp4   # without --wait: starts and returns
easybits video projects rm "Fall promo" --yes
easybits video ls                                  # AI-generated clips

# MCP, SSH, docs
easybits whoami        # account and where the credential comes from
easybits doctor        # Node, CLI version, credential, API; exits 1 on a problem
easybits mcp config    # MCP config (streamable HTTP)
easybits mcp config --stdio   # MCP config (stdio)
easybits ssh-key       # public key for sandbox SSH
easybits docs cli      # a docs section as markdown (--en for English)
easybits docs --open   # open the docs in your browser
```

**姓名或身份证.** 任何命令需要代理人、沙盒/机器、数据库、网站、文件或视频项目的地方,都可以 传出其名称而不是代号(`easybits sb exec scratch -- ls`, (中文(简体) ), `easybits sb domains ls shop`) (中文(简体) ). 匹配是精确的,对大小写不敏感;如果两个共享名称,则CLI退出2并列出ID.

贝壳完成 : `source <(easybits completion zsh)` (或 `bash`, (中文(简体) ), `fish`) (中文(简体) ).

帮助和信件会随您所在的地址( E)`LANG=es_*` • 西班牙语)或 `--lang es|en`。 。 。 .

每个命令都提供实例: `easybits <command> <subcommand> --help` (或 `easybits help <command> <subcommand>`。一个打字得到一个“你的意思”建议.

**破坏命令** (每个 `rm` 财务报告和审定财务报表 `destroy`数字 : `machines rm`, (中文(简体) ), `db rm`, (中文(简体) ), `agents destroy`, (中文(简体) ), `sandboxes destroy`, (中文(简体) ), `domains rm`, (中文(简体) ), `files rm`...)在终端表演前询问: `[y/N]`,或输入名称/代号 不可逆的(一个数据库、一个剂、一个永久的沙盒)。 没有终端 绝不然,他们也不觉悟 `--json`: 通过 `--yes` 编号 : `-y`,或者他们退出 `2`。 。 。 .

**干线跑.** 写入更改代理件( R)`agents set`, (中文(简体) ), `files put|rm`, (中文(简体) ), `skills add|rm`, (中文(简体) ), `mcp set`, (中文(简体) ), `create`采取 `--dry-run`:他们打印什么会改变,并触摸什么.

**最新进展.** 最多一小时的CLI检查npm, 在终端里,当一个更新的人在stderr上说 版本已退出( 从来没有) `--json`) (中文(简体) ). `EASYBITS_NO_UPDATE_CHECK=1` 或者说 `CI` 关掉.

**秘诀** 在 dotenv 文件或 stdin 上, 绝不在 argv (可见于 `ps` 外壳 历史 : `--dotenv <path>` (单位:千美元)`KEY=VALUE` 线条, `-` = stdin) 开播 `sandboxes create|exec|resume`, (中文(简体) ), `agents create` 财务报告和审定财务报表 `machines secrets set`。 。 。 . `--env K=V` 保留非机密值并获胜 翻过文件。 (没有叫 `--env-file` 因为22号节点拦截了这个旗名

## 443个以上

添加为 `~/.ssh/config`,则 `ssh <sandbox-name>.ghosty`数字 :

```
Host *.ghosty
    ProxyCommand easybits ssh-proxy %h
    User root
```

## 编码代理

-   `--json`: Stdout是 JSON 唯一的错误包括: `{"error":"…","code":3,"hint":"…"}` (单位:千美元)`code` = 退出代码).
-   退出代码 : `0` ok \\fn微软雅黑okay \\fn微软雅黑okay \\fn方正黑体简体\\fs18\\b1\\bord1\\shad1\\3ch2f2f2f}美国海军陆战队 `1` API 错误 `2` 使用错误 ^ `3` 无会话, 过期或拒绝 .
-   个人登录 : `easybits login --json` 指纹 `{"event":"login_url","url":…}` 然后 `{"event":"logged_in","email":…}`。 。 。 .
-   需要破坏命令 `--yes`中,还有 `--json` (无TTY或 `--json` 无提示: 退出 `2` 以精确命令重运行).
-   `sandboxes exec` 无 `--json` 以远程命令代码退出; 与 `--json` 它退出 0 并报告 `exitCode`。 。 。 .
-   技能 : `npx skills add https://easybits.cloud` (包括: `easybits-cli`) (中文(简体) ).

全文 : [https://www.easybits.cloud/docs#cli (中文(简体) )](https://www.easybits.cloud/docs#cli) • 妇女 [https://www.easybits.cloud/en/docs/cli.md](https://www.easybits.cloud/en/docs/cli.md)

## 0.20.0的变化

-   `db attach <name> [--description <text>]`: 在您的账户中添加一个您的机器 已经使用( e)`DATABASE_URL=http://172.20.0.1:8090/v1/db/<name>/`) (中文(简体) ). 没有创建或复制; 从此以后 `db query|tables|ls` 做点什么 这算不上你计划的数据库限额, 财务报告和审定财务报表 `db rm` 只从您的列表中删除它: 机器保存它的数据 。 新建 API : `POST /api/v2/databases { name, attach: true }`。 。 。 .

## 0.17.1的变动

-   `easybits crons ls|runs|run|pause|resume`: EasyBits的预定工作,与 /dash/admin/crons 面板(仅限平台管理员;带有行政管理信息系统范围的密钥).

## 0.17.0的变动

-   `sites create --prompt … [--kind webapp|static] [--stack …] [--template …]` 财务报告和审定财务报表 `sites theme get|set <site> [--theme <id> | --colors <file|->]`;一个网站通过名称或id. 未知的堆栈或模板在调用API前被拒绝.
-   机器设备 : `machines get|restart|tiers`, (中文(简体) ), `machines runspec get|set` (出现; `--file` 拿着 产出 `runspec get --json`, (中文(简体) ), `machines backups|backup`, (中文(简体) ), `machines redeploy` (回收和 调整大小 : `--tier … --replace`和 `machines rm` (释出. `launch --machine --tier` 现在指出 `machines redeploy`。 。 。 .
-   `easybits secrets ls|set|rm`: 您的账户金库( 新 REST) `GET/POST /api/v2/secrets`, (中文(简体) ), `DELETE /api/v2/secrets/:name`) (中文(简体) ). 值来自 dotenv 文件或 stdin,从不 argv.
-   沙盒 : `files rm|mv|mkdir`, (中文(简体) ), `bg start|ls|status|kill` (背景过程)和 `git clone|status|commit|push|pull|checkout|log` (单位:千美元)`--git-token '$secret:NAME'`) (中文(简体) ).
-   `easybits fleet ls|get|capabilities|configure|message`舰队特工 持有你的账户证书.
-   `easybits domains …` 现在管理您的账户域( n)`/api/v2/domains`); 一个沙盒的 已移动到域 `sandboxes domains` (旧形式仍然有效,在stderr上如此说).
-   `easybits web search|fetch|extract|extract-status|crawl`。 。 。 .
-   `easybits webhooks ls|create|update|rm` 财务报告和审定财务报表 `easybits keys ls|create|revoke` (单位:千美元)`keys create` 指纹 一次钥匙). 创造一个钥匙现在需要WRITE 并且不能提供超过你自己的钥匙.
-   `easybits websites get|files ls|upload|deploy|rm` (单位:千美元)`deploy` 上传整个文件夹保存路径).
-   `easybits documents …`: is, get, create( 创建)`--html` 每页或空白 `--format`页 次 is|get| set, ad-page, rm-page, 重排, 部署, 导出 pdf|png, rm. 写出HTML并设定它; 没有AI生成/复制来自CLI.
-   `easybits video …`: 计划 创建 场景 音乐集, 提交(提交)`--wait`, (中文(简体) ), `--out`, (中文(简体) ), `--timeout`和现在.
-   `init` 默认为 `--app-dir /app`一样 `machines launch` (这是 `/srv/app`) (中文(简体) ).
-   更新通知最多每小时检查一次npm(医生说每天检查一次).

## 0.16.0的变动

-   `sites ls`:网站建设者(/dash/sitios)的站点——静态站点和网络应用, 及其公共 URL 的引擎(`--json` (为特工服务)。 不同 从 `websites ls`,其中列出了账户的所有静态网站.

## 0.15.1的变化

-   之后a `--dry-run`,最后一行是真实命令(`To apply: …`没有终点站 已携带 `--yes` 当命令要求确认时.
-   有原因的404 打印出原因; 一个赤裸裸的“找不到” 说它也可能缺失访问权限 (另一个账户的资源)和指向 `easybits whoami`。 。 。 .
-   “新版本”通知检查每个小时npm(每天一次) 缓存比安装的要长 .

## 0.15.0的变化

-   `db rename <db> <new-name> [--skip-prompts] [--dry-run]` (别名) `mv`: 重命名数据库(the id没有改变,所以 `db_*` 工具继续工作),并重写您幽灵-lite中的名称 / {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}鹅特工的提示 {\\fn黑体\\fs22\\bord1\\shad0\\3ahbe\\4ah00\\fscx67\\fscy66\\2chffffff\\3ch808080}从不在里面 `x.com`, (中文(简体) ), `@x`, (中文(简体) ), `x_test` 或在首都. `--dry-run` 列出每个提示和行; 报告失败的提示( 退出 1) 而重命名保留。 新建 API : `PATCH /api/v2/databases/:dbId { name?, description? }`。 。 。 .
-   `db rm --dry-run`:桌子和行数,你会损失.
-   `agents create --prompt/--prompt-file` 应用的提示及其大小.

## 0.14.1的变化

-   `machines launch --machine` 也取个名字,像其他命令一样.

## 0.14.0的变化

-   `machines launch` (别名) `create`, (中文(简体) ), `new`: 创建一个永久的机器,并在其中安装一个应用程序 一步——CLI方面 `launch_app`来源为 `--repo`, (中文(简体) ), `--archive <url|file>` (一个本地文件) 上传到第一个)或 `--machine` (调动到现有的一个员额上). `--tier`, (中文(简体) ), `--prebuilt`, (中文(简体) ), `--start`, (中文(简体) ), `--port`, (中文(简体) ), `--env K=V`, (中文(简体) ), `--secret NAME`, (中文(简体) ), `--data <path>`, (中文(简体) ), `--domain`。 。 。 . 如果没有一个计划,它会打印出退出链接而不是失败.

## 0.13.0的变动

-   目录照片 : `db photos put <db> --table T --key-column sku --dir photos/ [--column C] [--replace] [--dry-run]` 上传相片为永久链接的公共文件并写入 在匹配行中(真实类型由字节表示,JPEG/PNG/WebP,10 MB;每相片上传一幅).
-   `db tables` 显示每个有链接的文本栏中永久的、到期的(签名), 外部或空( e)`--json`数字 : `links`) (中文(简体) ).

## 0.12.0的变化

-   `easybits completion zsh|bash|fish`: TAB 完成命令、子命令、旗帜和名称 您的代理、 沙盒和数据库( 5分钟内) `~/.cache/easybits/`) (中文(简体) ).

## 0.11.0的变动

-   **西班牙语或英语, 跟着您的语言** (单位:千美元)`LANG=es_*` • 西班牙文;否则为英文),或 `--lang es|en` 编号 : `EASYBITS_LANG`帮助、错误、提示和人类输出; `--json` 键和退出 代码永远不会改变。 已知的API消息以同一种语言显示.

## 0.1.0的变动

-   **代理作为文件**数字 : `agents export <agent> [--out DIR|file.yaml|file.json]` 财务报告和审定财务报表 `easybits apply <file|dir> [--agent X] [--create] [--prune] [--dry-run] [--yes]`. 声明 由服务器计算的计划( p)`+ ~ - !`; 删除需要 `--prune`),将机密导出为 `${NAME}` 从您的环境中填充, 保存到 `~/.easybits/backups/`。 。 。 . `create --from <file>` 也接受新文件.
-   `agents create --timeout` 现在 `--ttl` (旧旗还行并说.

## 0.9.0的变化

-   配置来自终端的机器代理(ghosty-lite,鹅),合同与 幽灵工作室 `ghosty` CLI: 爱丽丝 `agents set` (系统即时), `agents files`, (中文(简体) ), `agents skills`, (中文(简体) ), `agents mcp`, (中文(简体) ), `agents restart`, (中文(简体) ), `agents try` (一转为正文), `agents logs`, (中文(简体) ), `agents doctor`。 。 。 .
-   `agents get` 显示提示、 MCP 服务器( 隐藏秘密)、 技能和文件 ; `--fields a,b` 财务报告和审定财务报表 `--prompt-out FILE` (写一个长的提示到一个文件而不是终端).
-   `agents export` 财务报告和审定财务报表 `agents create --like <agent> | --from <export.json>`: 复制代理服务器 设置(模板、即时、MCP、技能、可选文件)。 永远不要它的地盘: 用 `--dotenv`。 。 。 .
-   `agents create --prompt | --prompt-file | --prompt-mode | --mcp-file`。多行提示是 一旦机器被打开( 盒内无法持有新行) , 则写入 .
-   `--dry-run` 每个代理写; `files rm` 财务报告和审定财务报表 `skills rm` 一次采取若干次(一次确认).
-   新设 `easybits doctor`; 关于stderr的每日更新通知; 一个旧版本上的未知旗帜表示要更新.

## 0.8.0的变化

-   一条命名规则( 如 `gh`: `easybits <noun> <verb>`。旧的拼写仍然有效,并印出新的 一个在stderr上(从来没有) `--json`: `easybits config` → `easybits mcp config`· ; `easybits mcp` → `easybits mcp config --stdio`· ; `easybits deploy <machine>` 现在为动词(= `machines deploy`),这样 `deploy ls` → `machines ls`· ; `machines release` → `machines deploy` (它与 `releases`(三); `sandboxes create --timeout` → `--ttl` (单位:千美元)`--timeout` 留在内 `exec`在它封顶命令的地方.
-   `files rm` 是名称( e)`delete` 还在工作,像 `db rm` 财务报告和审定财务报表 `domains rm`。 。 。 .
-   新设 `easybits whoami`:账户电子邮件和证书的来源.

## 0.7.0的变化

-   代理商、沙盒/机器和数据库 **名称** 任何身份证明; `easybits agents get`。 。 。 .

## 0.6.1的变动

-   帮助 : `--yes` 不再列为一面全球旗帜;它生活在每个破坏性命令上 (全球的帮助说,它需要没有终点站或与 `--json`) (中文(简体) ).
-   `easybits init` 建议 `machines secrets set <id> --dotenv …` 改为 `KEY=VALUE` (原始内容存档于2017-09-21). in argv.

## 0.6.0的变化

-   **脚本中断 :** `db rm`, (中文(简体) ), `agents destroy`, (中文(简体) ), `sandboxes destroy`, (中文(简体) ), `domains rm` 财务报告和审定财务报表 `files delete` 现在需要 `--yes` 不在终端运行时( 退出) `2` (否则).
-   `--dotenv <path|->` 用于掩体和秘密; `easybits login -` 编号 : `--with-token` 从 stdin 读取密钥. `login <api-key>` 财务报告和审定财务报表 `secrets set KEY=VALUE` 仍在工作,但不再公布.
-   `easybits db tables <db>`: 有行数和列的表格 (`--json`数字 : `[{name, rows, columns:[{name,type,pk}]}]`) (中文(简体) ).
-   "你的意思是" 对于未知的命令和子命令; `easybits help <command> <subcommand>`。 。 。 .

## 许可证

麻省理工学院

## 常见问题

### @easybits\.cloud/cli 是什么？

EasyBits的官方CLI, AI代理的云 – sandbox, host, 域, 数据库, 代理以及您终端的文件

### 如何安装 @easybits\.cloud/cli？

在项目目录运行 npm install @easybits\.cloud/cli，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 easybits，可以用 npx easybits 直接运行。

### @easybits\.cloud/cli 支持 TypeScript 吗？

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

### @easybits\.cloud/cli 支持 ESM 还是 CommonJS？

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

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

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

### @easybits\.cloud/cli 可以商用吗？

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

### @easybits\.cloud/cli 的下载量有多少？

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

### @easybits\.cloud/cli 还在维护吗？

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

