# 账号与登录

入口：`whobot login --phone <手机号>`、`whobot logout`、`whobot reset` 分别登录、退出、重置。先取确认卡，不加确认参数。查余额用 `whobot balance`，照 `data.totalBalance` 说"企业账户总余额 X（含付费、赠费和信用额度）"，不估算、不换算；未登录时按返回的 `login` 先登录。

## 用户会这样说

- 登录呼波特。
- 换一个账号。
- 我想退出登录。
- 清除本机账号。
- 为什么显示已登录却不能用？
- 账户里还有多少钱？

## 先弄清楚

确认要登录、退出还是重置。登录时先展示 CLI 返回的隐私协议和用户协议链接；不要从 Skill 或旧消息补链接。

## 标准流程

1. 未登录的受保护命令会返回 `next.action=login`，按 `next.confirm` 说明协议并询问手机号。
2. 展示协议卡、取得同意并收集手机号后，只替换 `next.command` 的 `{phone}`，执行系统返回的登录命令。
3. 按 `next.ask` 询问验证码，替换 `{code}` 后执行系统命令；成功后返回 `run`，只执行最新 `next.command` 一次续做原任务。此前的 `next.resume` 是恢复目标说明，不再另执行一次。完整链路见 [protocol](protocol.md)。
4. 用户主动登录时，先执行 `whobot login --phone <手机号>`，确认卡返回后再执行其中的命令。
5. 状态只读使用 `whobot status`；退出或重置先运行对应入口，用户同意后执行系统返回的确认命令。

## 话术

确认卡逐项展示系统字段和协议链接，说明继续即表示同意。验证码只用于本次登录，不复述。错误或过期仍按 `next` 处理：`ask` 才询问，`stop` 则停止。服务配置异常时转述系统文案，不承诺稍后恢复。

## 常见岔路

用户换企业或状态为 `needs_reset` 时停止当前操作，运行重置入口并展示确认卡。状态不确定时查询 `whobot status`；不猜验证码、不循环提交、不把本地缓存当登录事实。

## 绝不

- 不展示验证码、Token 或完整手机号。
- 不在没有确认时退出或重置。
- 不把本机缓存当登录事实。
- 不自行构造 `--accept-terms`、`--yes` 或其他确认参数，只执行上一条输出的 `next.command`。
