# 账号

让这台电脑登录 minicut.ai、退出登录，以及查看它用的是哪个账号的命令。

大多数命令都需要这台电脑已登录 minicut.ai。没登录时，它们会打印 `You are not signed in. Ask your agent to run minicut login.`，并以退出码 10 结束。每条命令都接受的选项和所有退出码，见[全局选项](/zh-cn/docs/cli/global-options)。

下面这些命令不用登录也能运行：不带命令的 `minicut`、`open`、`login`、`logout`、`status`、`lang`、`doctor`、`setup`、`update`、`network`、`uninstall`、`install-skill` 和 `agent-rules`。

CLI 最多每天向 minicut.ai 确认一次登录。离线时，已确认的登录可以继续用 7 天。这期间每条命令会在 stderr 上打印一行，例如：

```text Output
Offline: minicut.ai was last reached 2 days ago. Minicut keeps working offline for 5 more days.
```

离线超过 7 天后，命令会以退出码 7 停止，直到 minicut.ai 能连上。

## minicut login

让这台电脑登录 minicut.ai，并保存它的密钥。

### Usage

```text Usage
minicut login [--lang {en|zh}] [--device] [--json]
minicut login --complete [--json]
```

### 说明

`minicut login` 会在你的浏览器里打开 minicut.ai，最多等你 10 分钟来登录。你登录回来后，它保存这台电脑的密钥，并打印你的账号。

加上 `--device`，这台电脑上就不用打开任何东西。命令打印一个地址和一个验证码，然后返回。在任意一台电脑或手机上打开这个地址，登录，再确认验证码。然后运行 `minicut login --complete` 来完成。在 SSH 会话里，或者在没有显示器的 Linux 上，`minicut login` 会自动用这种验证码登录。

`minicut login --complete` 最多检查 7 秒。如果你还没确认验证码，它会打印 `Waiting for you to confirm on minicut.ai.` 和要再运行的那一行。你的 Agent 每 10 秒运行一次，直到它显示已登录。如果你在自己的终端里输入 `minicut login --device`，它会自己等验证码，不需要第二条命令。

已经登录的电脑会打印 `Already signed in.` 和账号，什么都不改。登录会记录这台电脑的名字、系统和 CLI 版本。你可以在 minicut.ai 账号的 **设备** 页面里看到它们。

在 macOS 上，密钥放进钥匙串。在 Windows 和 Linux 上，密钥放在 MiniCut 主文件夹的 `auth.json` 里，只有你自己能读。

### 选项

| 选项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| `--lang` | `en` 或 `zh` | 已保存的语言，否则 `en` | 登录页面和 MiniCut 应用用的语言。保存在 `settings.json` 里，已经登录的电脑也会保存 |
| `--device` | 开关 | 关 | 用地址和验证码登录，而不是在这台电脑上打开浏览器 |
| `--complete` | 开关 | 关 | 你确认验证码之后，完成 `--device` 登录 |
| `--json` | 开关 | 关 | 每个状态打印一行 JSON |

### 示例

#### 在 Agent 的终端里登录

```bash Terminal
minicut login --device --lang en
```

它会打印 `Open this address in your browser:`（或 `Opened minicut.ai in your browser.`）、地址、`Code:` 和验证码，以及你确认后要运行的那一行。

#### 完成验证码登录

```bash Terminal
minicut login --complete
```

你确认验证码之后，它打印 `Signed in.` 和你的账号。在此之前，它打印 `Waiting for you to confirm on minicut.ai.`

### 输出

加上 `--json`，每个状态是 stdout 上的一行，带一个 `state` 字段：

| `state` | 什么时候 | 其他字段 |
|---|---|---|
| `waiting` | 浏览器登录已开始 | `url`、`browser_opened`、`expires_in`（秒） |
| `code_sent` | `--device` 打印了验证码 | `user_code`、`verification_uri`、`verification_uri_complete`、`expires_in`、`browser_opened`、`next_step` |
| `pending` | `--complete` 发现验证码还没确认 | `next_step`，要再运行的命令 |
| `signed_in` | 密钥已保存 | `key_store`（`keychain` 或 `file`）、`account`，以及之前已登录时的 `already: true` |

退出码 0 表示已登录，或者按计划在等待。被拒绝时会打印错误，并以退出码 10 结束：

| 信息 | 怎么做 |
|---|---|
| `Sign-in was cancelled on minicut.ai.` | 再运行一次 `minicut login`，并在 minicut.ai 上确认 |
| `This sign-in code expired. Run minicut login again.` | 再运行一次 `minicut login --device`，拿新的验证码 |
| `This computer was signed out on minicut.ai.` | 再运行一次 `minicut login` |

退出码 7 表示 MiniCut 连不上 minicut.ai。连上网络，再运行同一条命令。

## minicut logout

让这台电脑退出登录，并删除它的密钥。

### Usage

```text Usage
minicut logout [--json]
```

### 说明

`minicut logout` 请 minicut.ai 删除这台电脑的密钥，然后不管 minicut.ai 怎么回答，都删除这里的密钥。你的项目、素材库和设置留在这台电脑上。如果 minicut.ai 没有回答，这台电脑会一直留在 **设备** 页面里，直到你在那里把它删掉。

### 示例

#### 退出登录

```bash Terminal
minicut logout
```

在没有登录的电脑上：

```text Output
Not signed in.
```

已登录时，它打印 `Signed out.`

#### 退出登录并输出 JSON

```bash Terminal
minicut logout --json
```

```json Output
{"state":"signed_out","revoked":false,"was_signed_in":false}
```

### 输出

`revoked` 为 `true` 表示 minicut.ai 删除了密钥。`was_signed_in` 为 `true` 表示这台电脑原来有密钥。退出码永远是 0。

## minicut status

显示账号、密钥放在哪里、CLI 版本，以及 MiniCut 应用是否在运行。

### Usage

```text Usage
minicut status [--json]
```

### 说明

`minicut status` 不用登录也能运行。已登录时，它每次都向 minicut.ai 询问账号。它还会显示安装日志的最后一行、这台电脑上 MiniCut 应用的地址，以及自动更新是否开着。

### 示例

#### 显示状态

```bash Terminal
minicut status
```

说明里的每一项，它各打印一行。已登录时，前几行显示你的账号。

#### 以 JSON 显示状态

```bash Terminal
minicut status --json
```

它打印一个 JSON 对象，字段见下表。

### 输出

| 字段 | 说明 |
|---|---|
| `signed_in` | `true` 表示 minicut.ai 接受了这台电脑的密钥 |
| `account` | 账号，和 `minicut me --json` 打印的对象一样，或 `null` |
| `key_store` | `keychain`、`file`，没有密钥时是 `null` |
| `cli_version` | 已安装的 CLI 版本 |
| `install_log` | 安装日志的最后一行，或 `null` |
| `overrides` | 改变 CLI 连接位置的设置。正常安装时是 `[]` |
| `app_address` | 这台电脑上 MiniCut 应用的地址 |
| `app_running` | `true` 表示 MiniCut 应用在那个地址上有回应 |
| `auto_update` | `on`；关着时是关闭的原因；以及上一次和下一次的更新检查 |
| `error` | 只在 minicut.ai 拒绝了密钥或连不上时出现 |

退出码 0；这台电脑已登录但连不上 minicut.ai 时是 7。

## minicut me

显示当前登录的账号。

### Usage

```text Usage
minicut me [--json]
```

### 说明

`minicut me` 每次都向 minicut.ai 询问，所以显示的是账号现在的样子。它打印你的账号和这台电脑的名字。minicut.ai 没有给出的值打印为 `unknown`。

### 示例

#### 显示账号

```bash Terminal
minicut me
```

在没有登录的电脑上：

```text Output
You are not signed in. Ask your agent to run minicut login.
```

#### 以 JSON 显示账号

```bash Terminal
minicut me --json
```

在没有登录的电脑上：

```json Output
{"error":{"code":"signed_out","message":"You are not signed in. Ask your agent to run minicut login.","url":null,"request_id":null}}
```

### 输出

已登录时，`--json` 打印账号对象。已登录时退出码是 0，没登录是 10，连不上 minicut.ai 是 7。

## 另见

[初始设置](/zh-cn/docs/cli/setup) [全局选项](/zh-cn/docs/cli/global-options) [快速开始](/zh-cn/docs/cli/quickstart)
