# @dptech-corp/bohr-cli

Bohrium 科学计算平台的命令行工具，可执行文件名为 `bohr`。

它把科研计算、开发环境、数据资产、论文工具和 AI 科学服务收进一套统一命令。人可以直接在终端中使用，AI Agent 也可以通过稳定、可读、可控的命令接口完成科研任务。

## 安装

```bash
npm install -g @dptech-corp/bohr-cli
```

支持 macOS、Linux 和 Windows 的 x64 / arm64 环境。安装时只会下载当前平台对应的二进制包。

## 快速开始

```bash
bohr auth login    # 登录 Bohrium 账号
bohr doctor        # 检查本地配置与服务连接
bohr --help        # 查看全部命令
bohr version       # 查看当前版本
bohr update        # 自更新到最新版（2.6.2 及以上）
```

所有命令都可以通过分层帮助继续查看子命令和参数：

```bash
bohr job --help
bohr sandbox --help
bohr paper --help
bohr agents --help
```

## Agent Ready

让你喜爱的 Agent 快速变身 Bohrium 科研助手。Claude Code、Codex、Kimi Code、ZCode、DSH 等能够执行本地命令的 Agent，都可以直接调用 `bohr`，从理解科研目标一路走到资源查询、任务执行和结果获取。

- **自主发现能力**：Agent 可以从 `bohr --help` 开始，逐级读取命令、子命令和参数，无需预先记住完整用法。
- **稳定的机读结果**：`--output json`、`--output yaml` 等结构化格式，以及统一的成功与错误结果，便于 Agent 可靠地读取和组合多步操作。
- **错误清晰可恢复**：失败会返回非零退出码、标准错误信息和 Request ID，Agent 可以停止错误流程，并根据提示继续排查。
- **自动化仍然可控**：身份凭证由本地配置管理；涉及付费资源或破坏性操作时，CLI 会要求明确确认，避免 Agent 在未知情况下产生费用或删除资源。

## 可以做什么

- **科研计算与开发环境**：通过 `bohr job`、`bohr batchjob` 提交和追踪计算任务，使用 `bohr node` 和 `bohr sandbox` 创建开发环境、运行程序并查看结果。
- **数据与项目资产**：通过 `bohr project`、`bohr dataset`、`bohr file`、`bohr image` 和 `bohr kb` 管理项目、数据集、文件、容器镜像与知识库，让计算输入、运行环境和产出保持在同一套工作流中。
- **科学信息检索**：通过 `bohr paper`、`bohr scholar`、`bohr wiki`、`bohr database` 和 `bohr tools` 检索论文、专利、学者、科学知识与专业数据。
- **AI 科学服务**：通过 `bohr pdf`、`bohr lkm` 和 `bohr agents` 解析科研文献，使用大知识模型、AI 科学小导师和论文智能体完成检索、分析与研究辅助任务。
- **终端与自动化**：统一的身份认证、命令层级、结构化结果和操作确认，方便人工使用，也便于接入脚本、CI 和 AI Agent。

具体能力和参数以 `bohr --help` 及各级命令的 `--help` 输出为准。

## 交给 Agent 的任务示例

把目标直接告诉 Agent，让它自行检查环境、拆解步骤并组合 `bohr` 命令：

> 帮我调研机器学习力场的最新进展，筛选代表性论文，解析关键文献，并整理出带来源的研究脉络。

> 先在云沙箱中验证当前目录里的训练脚本；确认能够运行后，查询合适的 GPU 规格和计费方式，等我确认费用再提交计算任务，并持续跟踪日志直到结果可以下载。

> 检查这个项目的计算输入，把数据和镜像组织好，创建一批参数扫描任务；提交前汇总资源选择和费用，运行后整理每个任务的状态、失败原因与产出位置。

这些任务可以在 Claude Code、Codex、Kimi Code、ZCode、DSH 或其他命令行 Agent 中使用。同一套 `bohr` 命令同时服务人工操作和 Agent 自动化，不需要在多个平台入口之间来回切换。

## 从探索到规模计算

Bohrium CLI 覆盖一条完整的科研工作流。你可以先在本地、开发节点或临时沙箱中调试代码，再把数据集、文件和镜像组织成可复用的计算输入，随后提交单个任务或批处理任务，并在命令行中持续查看状态、日志和结果。

文献研究也可以在同一套命令中完成：从论文、专利和学者检索开始，继续解析 PDF、整理知识库、查询科学百科或专业数据库，再调用 AI 科学服务辅助归纳、分析与推理，减少在多个网站和工具之间反复切换。

## 计费说明

Bohrium CLI 本身免费开源。计算任务、开发节点和云沙箱等计算资源按实际使用时长计费，部分论文工具与 AI 科学服务按调用计费；部分能力免费或包含免费额度。付费命令执行前会请求确认，不会静默发起扣费操作。

```bash
bohr billing pricing    # 查看计费项与价格
bohr billing balance    # 查询账户余额与 Photon
```

具体计费方式和价格以 [Bohrium CLI 计费说明](https://docs.bohrium.com/docs/bohrctl/pricing) 为准。

## 文档

- [Bohrium CLI 产品介绍](https://www.bohrium.com/bohr-cli/intro)
- [Bohrium CLI 使用与帮助文档](https://docs.bohrium.com/docs/bohrctl/about)
- 变更记录：随包附带的 `CHANGELOG.md`（npm 包页面 Code 标签页内可直接查看）

## 旧版本升级

从 2.6.0 起，本包改为按平台拆分分发，全局安装体积从约 193 MB 降至约 33 MB。受此影响，2.6.1 及以下版本内置的 `bohr update` 无法完成自动升级，请手动执行：

```bash
npm install -g @dptech-corp/bohr-cli@latest
```

升级后 `bohr version` 显示 2.6.2 或更高即成功。若安装缓慢或因镜像源同步延迟拿不到最新版，可指定 npm 官方源：

```bash
npm install -g @dptech-corp/bohr-cli@latest --registry https://registry.npmjs.org
```

### 升级后 `bohr version` 显示的还是旧版本号

多半是早先的安装留下了一个可执行文件，并把它所在的目录前置进了 PATH。这种情况下 npm 装的新版拿不到控制权，敲 `bohr` 跑起来的仍然是旧的那个。`npm install -g` 现在会在装完时直接提示这件事，并且会把**实际挡路的那个路径**打出来。

已知有两个来源，处置只差在第 3 步动哪个文件：

| 来源 | 留下的可执行文件 | 写进 PATH 的位置 |
|-|-|-|
| 早期版本 | `~/.bohrium/bohr` | rc 文件里的 `~/.bohrium` |
| 独立安装脚本（已移除） | `~/.bohr/bin/bohr` | rc 文件里的 `export PATH="$HOME/.bohr/bin:$PATH"` |

手动确认与处理如下。

1. 看清实际命中的是哪一个、它是什么版本：

   ```bash
   command -v bohr
   type -a bohr        # 按优先级列出 PATH 上全部同名可执行文件
   bohr version
   ```

2. 找出把那个目录前置进 PATH 的那几行：

   ```bash
   grep -nE '\.bohrium|\.bohr/bin' ~/.zshrc ~/.bash_profile ~/.bashrc ~/.profile 2>/dev/null
   ```

3. 把第 1 步里 `command -v bohr` 报出来的**那个文件**改名——不是照抄下面的路径，是改你自己那一个：

   ```bash
   mv "$(command -v bohr)" "$(command -v bohr).legacy"
   ```

   如果它在 `~/.bohrium` 里，**不要删掉 `~/.bohrium` 整个目录**——登录凭据还存在那里，新版是从它迁移过来的。`~/.bohr/bin` 里没有凭据，只有那个可执行文件。

4. 刷新 shell 的命令缓存，或者直接新开一个终端：

   ```bash
   hash -r     # bash
   rehash      # zsh
   ```

   **这一步不能省。** bash 会记住上一次解析到的路径；改完名不刷新，下一条 `bohr` 命令会报
   `bash: /Users/you/.bohrium/bohr: No such file or directory`（或 `~/.bohr/bin` 里的那一个）——指着你刚刚改名的那个文件，
   看上去像是把环境弄坏了。

5. 复核：

   ```bash
   command -v bohr && bohr version
   ```

## License

MIT © DP Technology
