# @arbol-ai/cli 中文文档

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

版本：3\.43\.0
npm 元数据更新时间：2026-11-06T21:25:37.094Z
中文译文更新时间：2026-11-06T13:49:54.730Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：3.9 MB，4 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=26
- 运行依赖：4 个
- 首次发布：2026-10-18T20:59:33.527Z
- 最新版本发布：2026-11-06T21:25:36.826Z
- 近 30 天下载量：10951（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：69（近 12 个月 69 个）

## 中文简介

Arbol CLI:来自您终端的Arbol API,其命令由 Cloudflare Forge 从公共OpenAPI 生成.

## 安装

```sh
npm install @arbol-ai/cli
```

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

## README

# @arbol-ai/ cli (英语)

`arbol`你终端的Arbol API。 它的命令是由 [云浮堡垒](https://github.com/cloudflare/forge) 从平台的公开OpenAPI, [`https://api.getarbol.com/openapi.json`](https://api.getarbol.com/openapi.json),每个请求 穿过 [`@arbol-ai/sdk`](https://www.npmjs.com/package/@arbol-ai/sdk)。它的版本是铸造, 从2.1.0起(见 [释放](https://npmcn.com/package/%40arbol-ai/cli/#readme-releases)(三); `arbol --version` 也命名 API 发布命令 产生者,如 `arbol 2.1.0 (Arbol API 1.20261019.4056)`。 。 。 .

```sh
npm install --global @arbol-ai/cli
arbol --version
```

它需要26号节点或更新 `fetch` 财务报告和审定财务报表 `Temporal` sDK的用途。 同样的命令更新了它. 一个 `arbol` 安装在 Npm 上的 CLI 之前, 或是先关闭安装 : `npm uninstall --global @getarbol/cli`,或删除 `~/.local/bin/arbol` 财务报告和审定财务报表 `~/.local/share/arbol`。 。 。 .

## 简介

一个剖面图是给Arbol打电话的一种命名方式:登录,或API密钥. 命令使用配置文件 `--profile` 名字,另一个 `ARBOL_PROFILE` 名称, 否则默认配置文件; `arbol auth use <profile>` 变动 默认.

```sh
arbol auth login                                  # a login, saved as the default profile
arbol auth login --profile clinic                 # another login, for another account or organization
arbol auth api-key --profile ci < /secure/path/arbol-key
arbol auth profiles                               # * marks the default
arbol auth use ci
arbol visoft connections list --profile clinic
ARBOL_PROFILE=ci arbol sura appointments lookup
```

给一个命令的 API 密钥, 通过 `--api-key-stdin` 或者说 `ARBOL_API_KEY`,胜过每个 配置文件, 如 `GH_TOKEN` 对 `gh`:脚本,服务器和CI可以运行而不保存任何东西. 何时 `arbol auth login` 无 `--profile` 以他人身份,或以他人身份,或以他人身份, 而不是默认配置文件,它询问登录到哪里:一个新的配置文件(它建议从 (b) 以“组织”代替“概况”,或以“概况”代替“概况”或“概况”(“概况”)`arbol auth switch` 移动 他们之间。 在剧本中,它一无所获,就要求 `--profile` 换句话说. `--profile <name>` 总是保存该配置文件中的登录 .

`arbol auth status` 使用证书的指纹,以及登录时其组织; `arbol auth logout` 签名登录, 或忘记配置文件的 API 密钥( 密钥本身有效, 直到它生效) 在Arbol账户中被撤销.

## 登录

```sh
arbol auth login
arbol sura appointments lookup --help
arbol agenda appointments list --limit 25
arbol auth switch [<name|org_…>]
arbol auth status
arbol auth logout
```

CLI只知道API的起源(`https://api.getarbol.com`,或者一个 `ARBOL_API_URL` 名称, 就像MCP客户端所做的:

1.  `/.well-known/oauth-protected-resource` (RFC 9728) 名称 授权服务器,它自己的元数据名称是它的端点和密钥.
2.  `/.well-known/oauth-client/arbol-cli` (RFC 7591客户端元数据) 命名 CLI 的公共客户端( 否) ),循环地址返回登录地址,以及需要请求的范围.

登录后打开系统浏览器(Authorization Code with S256 PKCE和回回调, `http://127.0.0.1:43817/callback`) (中文(简体) ). 当您属于多个组织时,登录页会问 在你签了字后,哪一个. `arbol auth switch` 列出您所属的组织 : 在切换前,其他任何标志通过单个签注再次输入,它要求没有密码. `arbol auth switch <name|org_…>` 在不要求脚本的情况下做同样的事情。 本届会议是为 组织已核实的ID标志名称.

要求的瞄准镜是API发布的每一个许可, 因为一个符号的权威是它的 范围与角色权限相交; `ARBOL_SCOPES` 替换它们。 请求一个 范围并不赋予它.

CLI验证状态,nice和S256PKCE以及ID标志的签名和组织. `--no-browser` 打印用于手动打开的 URL,但仍使用此机的回回调.

## 保存会话和密钥的地方

`~/.arbol/config.json` (mode 0600) 持有简介和默认, 没有秘密。 每个登录 会话和每个保存的 API 密钥都是一个密封文件 `~/.arbol/` (模式0700目录,0600) 档案:AES-256-GCM 在操作系统保存的每人和机器一个随机键下。 简介、发行商、, 客户端,受众,API,用户和组织分区会话,每个文件都与其名称相接. 没有简单的背书.

| 监督办 | 钥匙 |
| --- | --- |
| 马科斯 | 关键链项 “Arbol CLI”(`com.getarbol.cli`, (中文(简体) ), `session-key`),保存于 `/usr/bin/security` |
| 链接 | 特勤局,通过 `secret-tool` (包装) `libsecret-tools`(中文(简体) ) |
| 窗口 | `~/.arbol/session-key.dpapi`,由 DPAPI 为 Windows 用户保护 |

操作系统每个命令都要求一个密钥, 当密钥创建时只写一次; a 刷新只重写被封存的文件 。 在 macOS 上, Keychain 信任创建项目的程序 . 来自Homebrew, nvm 或 fnm 的节点是临时签名的,所以使用从节点发出的键链的 CLI 要求 每次更新节点后再次登录密码 . `/usr/bin/security` 由苹果公司签名并保持信任, 就像它为 `gh`因此,CLI从来没有问。 喜欢 `gh`,任何您可以读取密钥的程序 通过它;另一个用户、备份或被窃磁盘不能。 密钥从未出现在命令行中 .

每个新鮮點被锁定到各个过程. 在旋转交换前,密钥环记录 正在进行中标记。 丢失的响应或崩溃需要新的登录, 绝不是盲目重试 前一个刷新符号 。 烂透了 `.lock` 在确认程序已崩溃后才删除 进程已停止;然后再次登录。 即使远程吊销失败, 也会删除本地证书 并报告这种不确定性。 它不会假装已经发行的代币 立即消失.

## 机器和操作输入

在Arbol账户中为一个组织创建并显示一次 API 密钥 。 密钥永远不会被接受 作为命令行参数 : `arbol auth api-key` 从stdin上读取(或要求它而不显示) 检查它与API并封存它; `--api-key-stdin` 财务报告和审定财务报表 `ARBOL_API_KEY` 将一个用于一个 单命令而不保存它。 一个被拒绝的密钥永远不会回到登录状态 .

```sh
ARBOL_API_KEY="$(cat /secure/path/arbol-key)" arbol visoft connections list
arbol sura appointments lookup --api-key-stdin < /secure/path/arbol-key
```

命令为 `arbol <service> <resource> <verb> [id]`,行动的公共名称。 服务就是服务 单词:其出版的id没有连字符,所以 `salud-total.affiliations.lookup` 实值 `arbol saludtotal affiliations lookup` (和 `policia-colombia` 实值 `policiacolombia`) (中文(简体) ). 已公布的编号 仍然工作在您以前打过字的地方 (`arbol salud-total …`) (中文(简体) ). `arbol <service>` 列出服务的命令; `--help` 打印其字段后,每个字段接受的值 默认和示例. `--dry-run` 打印命令发送的请求(方法、 URL 和正文) 不读证书 或发送任何东西。 删除请求在终端上确认; a 脚本通过 `--yes`。 。 。 .

每个输入字段都是一面旗 (`--integration-id sura`),或整个输入来自 `--input file.json` (单位:千美元)`--input -` 读取 stdin; 旗帜覆盖其字段; 与 `--api-key-stdin`,使用一个 存档). CLI在发送前根据操作的精确计划验证输入. 这个 响应的数据被打印为 JSON ; 失败会打印它的代码和请求 ID, 并且, 对于写 没有答案,结果未知, 并退出非零。 即使401年之后 也没有再审过 或 403; 在重复之前核对不确定的文字.

`ARBOL_API_URL` 选择新配置和 API 密钥的可信非生产部署 ; 必须是 HTTPS 源代码。 签了字的一切都从里面发现了 配置保存它创建时的 API .

## 发展

```sh
bun install
bun run forge       # build the pinned Cloudflare Forge with cargo into .forge/ (once; needs Rust)
bun run openapi     # download https://api.getarbol.com/openapi.json
bun run generate    # src/generated/ from openapi.json with the plugin in generation/plugins/cli.ts
bun run verify      # typecheck and dist/; tests require an explicit human request
```

`src/generated/` 是插件的输出, 未经编辑; 其它所有在 `src/` 这是CLI本身. `openapi.json` 在一代人的时间下下载,但未执行 `src/generated/generation.json` 用于释放、Forge 承诺和插件的记录.

## 释放

API的发布通过三个寄存器,每个寄存器由它之前的寄存器开始:

1.  **项目-arbol-出入口** 在 `https://api.getarbol.com/openapi.json` 发送 `openapi-release` 到项目 -arbol -sdk -js.
2.  **项目- arbol- sdk- js** 重新生成 `@arbol-ai/sdk` 从它,出版它到npm和发送 `sdk-release` 这里: `{ "version": "<SDK version>", "openapi": { "release": "...", "sha256": "..." } }`。 。 。 .
3.  **给**, (中文(简体) ), [生成](https://npmcn.com/package/%40arbol-ai/cli/.github/workflows/generate.yml) openAPI 内容改变时发布 : sHA -256 其犬科JSON没有 `info.version` (按键排序,无空白;见 [`generation/openapi-hash.ts`](https://npmcn.com/package/%40arbol-ai/cli/generation/openapi-hash.ts),相同的散列 sdk -js计算),比较 与 `openapiContentSha256` 主语 `src/generated/generation.json`。当 `@arbol-ai/sdk` 针头不是主针 否则,运行停止 没有承诺或 发表。 解开指针 `@arbol-ai/sdk` 准确的说,再生 `src/generated/`,何时 `bun run verify` 通行证承诺 `Release Arbol API <release> with @arbol-ai/sdk <version>` 主要项目和 运行 [发布](https://npmcn.com/package/%40arbol-ai/cli/.github/workflows/publish.yml) 承诺 `bump: minor`。 。 。 .

SDK 生成针是版本 `sdk-release` 名称。 每6小时,用手,生成运行 同样的检查和针头最高 `@arbol-ai/sdk` 其发表 `package.json` 说它是产生的 从相同的OpenAPI内容(`arbol.openapi.sha256`虽无,但以警告而止, 因为SDK是先发布的 它的推力使用组织GitHub App的安装符 (Arbol瓶:变量) `ARBOL_BOT_APP_ID` 和秘密 `ARBOL_BOT_PRIVATE_KEY`),故犯罪不断 检查像任何其他.

版本是 semver, 由 Publish 从 npm 上的最高版本计算 (单位:千美元)[`generation/release.ts`](https://npmcn.com/package/%40arbol-ai/cli/generation/release.ts):

-   Generate的释放使未成年人长大:2.1.0,然后是2.2.0. 第一个2.x释放是2.1.0;在此之前 版本为构建日期和时间(`1.YYYYMMDD.HHMMSS`) (中文(简体) ).
-   OpenAPI 不携带的对 CLI 自身代码的更改,通过运行 Publish 发布 手放在主线上。 内容 `bump` 输入 `patch` (默认), `minor` 或者说 `major`。 。 。 .

发表 `package.json` 记录 OpenAPI 命令来自: `"arbol": { "openapi": { "release": "<info.version>", "sha256": "<content hash>" } }`npm 接收 与组织的软件包 `NPM_TOKEN`。软件包访问在源寄存器时保持公开 这是私人的。 Npm不支持私有源寄存器, 从而禁用证明.

## 迁移到CLI 3

CLI 3使用SDK 5和目前的公有所有者合同. SURA 指定为使用 `arbol sura appointments lookup`;议程预订发现有单独的 `booking-locations`, (中文(简体) ), `booking-offerings`, (中文(简体) ), `booking-requirements`, (中文(简体) ), `booking-slots` 财务报告和审定财务报表 `nearest-booking-slots` 资源。 账户用途 `account organization get` 财务报告和审定财务报表 `account organization update`。命名的资源标识符和 JSON 请求 字段遵循每个命令的帮助.

这是针对不兼容命令和要求更改的故意大放出. 自动生成不检测相容性或选择主版本; 在发布前审查所有者合同的变更.

## 许可证

[Apache 许可证 2.0](https://npmcn.com/package/%40arbol-ai/cli/LICENSE)

## 验证

`bun run verify` 检查类型并构建 CLI 不执行测试。 测试是 手动: 运行 `bun run test` 或者说 `bun run verify:with-tests` 只有在人类要求的时候 运行。 自动校验,生成和发布使用静态路径.

## 工作人员联系管理

经授权的工作人员用户可以管理与 `arbol account connections create`, (中文(简体) ), `update <connectionId>`, (中文(简体) ), `delete <connectionId>`, (中文(简体) ), `discover` 财务报告和审定财务报表 `refresh-tools <connectionId>`,使用 `--input` 为主人的严格JSON身体。 这些隐藏的REST命令使用捕获的账户合同,而不是公共的SDK或MCP认证录入. API需要真正的用户和 `account:connections:operate`; 本地拒绝一个 API- key 配置文件 。 请求发送一次,在重复之前必须检查一份不确定的书面. `--dry-run` 是本地的,不认证或保存证书.

证书捆绑由Account Vault封存. e-Oficlinic在解剖学上既采用登录阶段,又采用源公司/站点/IPS选择;Sanitas采用其门户登录和文件类型。 永远不要在仓库或 shell 历史中放置真实的证书 。 刷新这些合同 从干净的业主退房 `bun scripts/update-account-operator-contracts.ts <account-repository>`。抓取的文件记录所有者的承诺和来源散列.

## 常见问题

### @arbol-ai/cli 是什么？

Arbol CLI:来自您终端的Arbol API,其命令由 Cloudflare Forge 从公共OpenAPI 生成\.

### 如何安装 @arbol-ai/cli？

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

### @arbol-ai/cli 支持 TypeScript 吗？

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

### @arbol-ai/cli 支持 ESM 还是 CommonJS？

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

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

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

### @arbol-ai/cli 可以商用吗？

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

### @arbol-ai/cli 的下载量有多少？

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

### @arbol-ai/cli 还在维护吗？

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

