运行时依赖
安装命令
点击复制技能文档
olares-cli 共享规则 本技能说明:profile 是什么、如何获取其访问凭证、凭证存储位置,以及服务器拒 token 时如何恢复。所有 olares-cli files …(及其他业务)命令都依赖此处描述的 profile 选择 + 鉴权流程。
Profile 模型 一个 profile = 一个 Olares 实例 + 一个用户身份。身份由 olaresId 唯一标识(如 alice@olares.com)。每个 profile 拥有独立的 access_token / refresh_token 对,保存在 OS keychain。profile 命令树暴露 5 个动词(见 cmd/ctl/profile/root.go):
命令用途 olares-cli profile login 用密码(若开启 2FA 则加 TOTP)鉴权;首次运行自动创建 profile(模式 A) olares-cli profile import 用已有 refresh_token 换取 access_token(模式 B) olares-cli profile list 列出全部 profile,标出当前 profile 及各 profile 登录状态 olares-cli profile use 切换当前 profile;- 切回上一个(类似 cd -) olares-cli profile remove 一次性删除 profile 及其存储的 token
不存在 olares-cli auth login / auth logout 命名空间,所有鉴权动作都在 profile 下。“Logout” 即 profile remove。
全局 --profile 标志 根命令注册持久化 --profile 标志(见 cmd/ctl/root.go L57)。它仅覆盖单次调用的当前 profile,不持久化切换: # 不改动 current,本次 ls 使用 alice 的凭证 olares-cli files ls drive/Home/ --profile alice@olares.com
用途:脚本并行操作多 profile、快速检查某 profile 状态、避免污染交互终端的 current 指针。
首次登录(模式 A:密码 + 可选 TOTP) olares-cli profile login --olares-id
行为(见 cmd/ctl/profile/login.go 与 cmd/ctl/profile/credentials.go):
- profile 不存在 → 自动创建
- profile 存在但 token 过期/失效 → 复用 profile 条目,写入新 token
- profile 存在且 token 仍有效 → 拒绝,提示先执行 olares-cli profile remove
密码 默认:从控制 TTY 无回显读取 脚本:--password-stdin,例:printf '%s' "$PW" | olares-cli profile login --olares-id --password-stdin 无 --password <明文> 标志,防止密码泄露到 shell 历史或 ps 输出。
2FA / TOTP 服务器 /api/firstfactor 返回 fa2=true 时需二次因子:
- TTY:CLI 自动提示 two-factor code for :,用户输入 6 位码
- 非 TTY(--password-stdin、CI 等):必须预传 --totp
,否则报错 two-factor authentication required: re-run with --totp
CLI 不猜测是否启用 2FA,每次登录都用 targetURL 触发 Authelia 的 2FA 策略。无 2FA 账户直接通过;有 2FA 账户先提示 TOTP 再继续。 Agent 驱动登录(推荐模式)
AI agent 代用户登录时,勿将密码或 TOTP 以明文传参。推荐流程:
- 后台启动 olares-cli profile login --olares-id ,使其停在密码提示。
- 将提示原样转发给用户,等待其在自有终端输入密码/TOTP。
- 命令退出后读取输出,确认登录是否成功。
或:提示用户自行在终端完成登录,agent 随后接管后续命令编排。 用已有 refresh_token 引导(模式 B)
用户已有 refresh_token(来自 LarePass、向导激活流或其他来源)时,无需再走密码+2FA:
olares-cli profile import --olares-id --refresh-token
CLI 通过单次 /api/refresh 换得 access_token(见 cmd/ctl/profile/import.go)并一并写入 keychain。
“若已存在有效 token 则拒绝” 规则与 login 相同。
勿在脚本里明文写 --refresh-token ,应从环境变量或 secret manager 读取:
olares-cli profile import --olares-id --refresh-token "$OLARES_REFRESH_TOKEN"
切换与查看 profile
profile list 输出(见 cmd/ctl/profile/list.go):
NAME OLARES-ID STATUS
* alice alice@olares.com logged-in (23h59m)
bob bob@olares.com expired
eve eve@olares.com invalidated
frank frank@olares.com never
STATUS 含义与恢复
logged-in (Xh Ym) Token 有效;列显示剩余有效期
logged-in Token 存在但 JWT 无 exp 字段,无法计算有效期