# @botiverse/oar-cli 中文文档

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

版本：0\.81\.0
npm 元数据更新时间：2026-10-31T16:56:46.978Z
中文译文更新时间：2026-10-31T17:09:26.345Z
软件包许可：Apache-2\.0

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

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

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

- 包体积（解压后）：182 kB，67 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=24\.0\.0
- 运行依赖：3 个
- 首次发布：2026-08-26T11:59:34.942Z
- 最新版本发布：2026-10-31T16:56:46.595Z
- 已发布版本数：144（近 12 个月 144 个）

## 中文简介

用于使用ar控制和观察代理运行时的命令行接口

## 安装

```sh
npm install @botiverse/oar-cli
```

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

## README

# @botiverse / oar-cli

命令行接口 `@botiverse/oar`． 它安装了 `oar` 无需向仅使用该库的应用程序添加CLI依赖项即可执行。

```bash
npx @botiverse/oar-cli list
oar installation codex
oar orient claude codex --depth account --json
oar usage claude
oar models claude
oar upgrade --check
oar login claude
oar logout claude
oar run claude "What does this repo do?"
```

## 命令

注册的运行时是ar的 `defaultRuntimes`光标，表示进入CLI界面 将自身添加到 `@cursor/sdk` 它依赖于1.1.0和社区 运行时间（Morph先生）来自 `@botiverse/oar/community` （`src/runtimes.ts`）。 带有可选参数的命令 `[runtime]` 覆盖每个注册的运行时 当省略时(或 `all`）. 一个运行时，其探测或 读取失败（超时，网络错误）报告其 `error` 代替 结果，其余的仍然报告，退出码为1。

-   `oar orient [runtime...]`：一个有界快照，带 `--depth local` (默认), `account`，或者 `models`． 本地跳过未经证实的本地认证读者；更深层次的读 可以刷新凭据，运行关键命令和加载可信配置。 `--json` 保存完整的证据； `--customization` 选择本地 空目录中的库存，以及 `--timeout <ms>` 整个的边界 阅读。与每运行时查询命令不同，部分快照退出0；无效的 参数或被拒绝的调用失败。看到 [取向](https://github.com/botiverse/oar/blob/main/docs/spec/orientation.md).
-   `oar list`：已注册的运行时及其功能。
-   `oar installation [runtime]` (别名 `detect`)：探针本地安装 和版本，没有帐户或使用I/O。 `shadowed` 的其他副本 在找到的命令之后的PATH上的命令，它永远不会运行。
-   `oar usage [runtime]`：每个可用安装的帐户使用情况。
-   `oar models [runtime]`：型号，每个可用的安装都可以正常运行 现在（包括登录状态、计划和配置的提供程序）。第一个 运行时后的列是 `id` 传递给 `oar run --model`， `(default)` 标记会话在未设置时运行的模型， `*` 这个 默认工作级别和服务层，以及 `(disabled: reason)` 一个模型 运行时列表，但不会按原样运行。 `--cwd <dir>` 会话将在项目配置中运行的目录列表 可以改变列表；它从这里开始运行，所以只用a 您信任的目录)； `--json` 打印 `ListModelsResult` 每运行时, `--timeout <ms>` 限制每个查询。
-   `oar run <runtime> <prompt>`：在一个新鲜的（或） `--resume`d) 会议并显示其进展； [下面](https://npmcn.com/package/%40botiverse/oar-cli/#readme-oar-run-the-run-and-verify-entrypoint).
-   `oar upgrade [runtime]`升级每个可用的安装 运行时自己的更新程序，一次一个； `--check` 只报告版本 更新程序会安装， `--json` 打印报告； `--timeout <ms>` 限制每个运行时的检查及其更新程序的运行。退出码为1 升级失败或版本未更改，或者运行时可以 不被探查。看到 [运行时更新](https://github.com/botiverse/oar/blob/main/docs/spec/update.md).
-   `oar login <runtime>`：通过运行时自己的登录登录。它打印 登录URL或设备代码，并从stdin中读取粘贴的代码 当运行时请求时，返回它；ctrl - c取消。 `--status` 只有 报告每个运行时（或命名的运行时）是否已登录； `--json` 将事件、提示和结果（或状态报告）打印为JSON； `--timeout <ms>` 限制登录（或每个状态查询）。退出密码是 登录时为0，取消时为130，否则为1。看到 [运行时登录](https://github.com/botiverse/oar/blob/main/docs/spec/login.md).
-   `oar logout <runtime>`：通过运行时自身的注销记录运行时退出。它 打印 `logged out` 当运行时的状态读取登出(或者， 当状态无法判断时，运行时报告成功)；状态仍然读取的环境中的API密钥 `still_logged_in`. `--json` 将结果打印为JSON， `--timeout <ms>` 限制登出。注销时退出码为0，否则为1。
-   `oar mcp`通过工作室的MCP服务子特工，所以特工(claude, codex， 任何MCP客户端)都可以将任务委托给其他运行时： `run` 等待。 代理的, `spawn` / `send` / `wait` 并行工作，和 `runtimes`， `list`， `interrupt` 和 `close` 完成工具集。国旗: `--runtimes <ids>` （逗号分隔；默认为全部）， `--max-running <n>` (默认4), `--max-depth <n>` （默认1：子代理不生成）， `--cwd <dir>` （对于没有命名的子代理）， `--log-dir <dir>` (每 子代理人的记录（如划桨航行日志）。 `run`， `wait` 和 `list` 返回 具有输出模式的结构化对象，以及与文本相同的JSON （[形状](https://github.com/botiverse/oar/blob/main/docs/spec/subagents.md#oar-mcp)）。 子代理以完全权限运行。codex代理启动MCP服务器 一个减少的环境，所以给它 `oar` 条目 `env_vars = ["OAR_SUBAGENT_DEPTH"]` 使嵌套限制保持不变。看到 [子代理](https://github.com/botiverse/oar/blob/main/docs/spec/subagents.md).
-   `oar skills|commands|mcps|tools [runtime]`本地清单，见 [下面](https://npmcn.com/package/%40botiverse/oar-cli/#readme-native-inventories).

## `oar run`：运行和验证入口点

默认情况下 `run` 打印命名会话（id）的起始行 `--resume` 需要; `[resumed <id> …]` 在恢复运行时)和模型中，服务 运行时在打开时报告的层和工作量，当它执行时 `model()` / `serviceTier()` / `effort()` 折叠，从来没有旗帜回响)。 然后打印会话的可读进程 `events()`辅助文本逐字拼接成块 通过 `coalesceText`)，其他事实用括号括起来 （`[compacting: threshold]`， `[compacted]` 或者 `[compaction failed] reason`， `[retry 2/3] reason`， `[waiting for app: type]`， `[task shell started]`）。 回合开始、使用情况、型号、服务层和工作报告、本地用户 消息回显，排队，撤回和丢弃输入，任务更新，工具 输入和进度delta以及桨对应用程序请求的自己的回答打印 没有（完整的映射） `src/progress.ts`):

```
[session 01a0e982-… · model gpt-6-luna · effort low]
[thinking] The user wants...
[Running command] cat package.json
[Ran command] (0.4s)
The repo is a pnpm workspace...
[turn completed]
```

只有在转弯完成时退出代码才为0。第一个Ctrl-C中断 该转弯和出口130；第二个程序立即处理会话。这个 进程在会话被处置后最多一秒钟结束，即使在 运行时留下句柄(`@cursor/sdk` 1.0.35 ~ 1.0.37保持24小时 计时器为每次shell调用移动到后台； `src/exit.ts`）。

国旗:

-   `--model <model>`：运行时本地模型标识符。
-   `--effort <level>`：运行时本地推理工作级别，是 模型的水平 `oar models` （`SessionOptions.effort`）. 运行时 将运行另一个级别，或没有，拒绝打开，和 `run` 出口1 与运行时的单词(`claude applies effort medium … although bogus was requested`）。
-   `--service-tier <tier>`：本地服务层ID from `oar models`，或者 `default` 显式清除一个层。申请和检查在开放，包括 重新开始。食典委使用 `priority` (不是 `fast` 别名)或 `flex`;克劳德列表 `fast` 仅用于支持模型。其他运行时拒绝该选项。
-   `--resume <sessionId>`：恢复上一次运行的runtime-native会话 印刷，与新鲜的溪流(`SessionOptions.resume`）; 搭配一个 不同的 `--model` / `--effort` 在转弯之间切换。
-   `--image <file...>`：发送图片文件时提示(png, jpeg, gif， Webp)作为运行时自己的图像输入(`InputOptions.images`）; 一个运行时 没有图像输入拒绝提示。
-   `--json`：打印会话记录(`RawEvent`s)作为JSON行 进度（一字不差的框架） `native` 有效载荷和桨 `events`（加上运行的请求/响应记录），以及最终的 `{"outcome": ...}` 线。
-   `--record <file>`也可以把run写成an `oar-voyage/3` JSONL登录 两种输出方式；日志总是记录每条记录)。

没有记录的竞选是一件奇闻轶事。当一场赛跑被当作证据时 (验证文档声明，重现bug，检查运行时的活动 行为),通过 `--record` 因此，索赔指向一个任何人都可以阅读的日志：

1.  **运行现场，不要推断。** 关于运行时行为的声明由 运行它，而不是通过阅读代码或记住上次。
2.  **记录证据。** 保存航行日志，并在航海日志中引用 结论，所以“它有效”是以后可以检查的。
3.  **对你看到的进行分类。** 如果现实与文件不符，决定哪一个 移动：运行时改变了，所以修复了文档；还是划桨退步了，所以归档了 Bug和pin与测试(`docs/development.md` 有测试层)。
4.  **报告真实的结果。** 一个失败或流产的转弯是一个发现， 没有什么东西可以重试，直到它看起来干净：退出代码和 运行时的 `turn_ended` 日志中的事件说明了发生了什么。

## 这个 `oar-voyage/3` 格式

`--record` 每行写入一个JSON对象，由 `kind`。这个 定义并拥有格式 `@botiverse/oar`，它将导出该行 建筑商和 `openVoyage` 记录器;其他工具(如 [oar-coxswain](https://github.com/botiverse/oar-coxswain) 驾驶舱)可能会写 或者从消费者的角度来解读。

-   第1行总是标题： `{"kind":"header","format":"oar-voyage/3","runtime","model?","effort?","serviceTier?","cwd","sessionId","startedAt","recorder"}` （`model`， `effort` 和 `serviceTier` 当未请求时省略； `recorder` 写出作者的名字，例如： `oar-cli/<version>`）。
-   `{"kind":"record","record":{...}}`:一个 `RawEvent` 逐字,没有 过滤或重新时间戳。人工输入已经在流中作为 `request` 记录，所以没有单独的提交行；这个 `seq` 在 每条记录都是顺序。
-   `{"kind":"end","at","reason"}`：永远是最后一行；没有它的木头 是截断的捕获。

所有时间戳都是同一时钟上的Unix纪元毫秒 记录的 `receivedAt`． 行按照到达顺序同步写入，所以 崩溃运行仍然会留下一个可读的前缀。

## 本地库存

```sh
oar skills codex --cwd /path/to/project
oar commands pi --cwd /path/to/project
oar mcps claude --cwd /path/to/project --timeout 15000
oar tools pi
```

每个命令打印JSON。 `--cwd` 默认为当前工作目录； `--timeout <ms>` 每个运行时的边界。这些都是独立发现 查询：没有检查现有的代理，也没有发送模型提示 本机启动可以加载扩展并连接已配置的MCP服务器。检查 `kind`， `view` 和 `partial` 在显示结果之前： `mcp-only` 不包括 内置工具，不支持的查询不是空列表，以及挂起的或 失败的MCP连接可以产生部分目录。看到 [库存合同](https://github.com/botiverse/oar/blob/main/docs/spec/inventory.md).

## 常见问题

### @botiverse/oar-cli 是什么？

用于使用ar控制和观察代理运行时的命令行接口

### 如何安装 @botiverse/oar-cli？

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

### @botiverse/oar-cli 支持 TypeScript 吗？

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

### @botiverse/oar-cli 支持 ESM 还是 CommonJS？

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

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

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

### @botiverse/oar-cli 可以商用吗？

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

### @botiverse/oar-cli 还在维护吗？

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

