跳转至

obscli 用户手册

obscli 是连接 Beak 服务的命令行客户端。它可以登录 Beak、查看 agent 和 task、创建或 attach 到 task,并在终端里与 agent 对话。

安装

使用安装脚本

Linux/macOS:

curl -fsSL https://static.guance.com/obscli/install-obscli.sh | bash -s -- \
  --release-base-url https://static.guance.com/obscli \
  --beak-server https://agent-api.guance.com \
  --login <YOUR-USER-SK>

Linux/macOS 默认使用 Unix 路径:

类型 默认路径
安装目录 ~/.local/bin
可执行文件 ~/.local/bin/obscli
数据目录 ~/.obscli
登录和更新配置 ~/.obscli/login.toml
日志目录 ~/.obscli/log
当前日志文件 ~/.obscli/log/obscli.log

Windows Git Bash 可以执行 Unix shell 安装脚本,但路径会按 Git Bash 的 $HOME 解释。如需安装到 Windows 用户目录,优先使用 PowerShell 安装脚本。WSL 属于 Linux 环境,使用 Linux 路径和 Linux 安装包。

curl.exe -fsSL https://static.guance.com/obscli/install-obscli.sh | bash -s -- \
  --release-base-url https://static.guance.com/obscli \
  --install-dir "$HOME/bin" \
  --beak-server https://agent-api.guance.com \
  --login <YOUR-USER-SK>

Windows PowerShell:

iwr https://static.guance.com/obscli/install-obscli.ps1 -OutFile $env:TEMP\install-obscli.ps1
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass -Force
& $env:TEMP\install-obscli.ps1 `
  -ReleaseBaseUrl https://static.guance.com/obscli `
  -BeakServer https://agent-api.guance.com `
  -Login <YOUR-USER-SK>

默认安装到 ~/.local/bin/obscli,不需要 root 权限,也方便后续自更新。

确保安装目录在 PATH 中:

export PATH="$HOME/.local/bin:$PATH"

Windows PowerShell 安装默认使用用户目录:

%LOCALAPPDATA%\Programs\obscli\obscli.exe

修改用户 Path 后,已经打开的终端可能不会自动刷新环境变量;重新打开 PowerShell 后可以直接运行:

obscli

如果是在当前 PowerShell 中又启动了一个子进程执行安装,例如 powershell -File ...,父窗口的 PATH 不会被子进程刷新。此时可以直接运行安装脚本输出的完整路径:

& "$env:LOCALAPPDATA\Programs\obscli\obscli.exe"

Windows 默认目录:

类型 默认路径
安装目录 %LOCALAPPDATA%\Programs\obscli
可执行文件 %LOCALAPPDATA%\Programs\obscli\obscli.exe
数据目录 %USERPROFILE%\.obscli
登录和更新配置 %USERPROFILE%\.obscli\login.toml
日志目录 %USERPROFILE%\.obscli\log
当前日志文件 %USERPROFILE%\.obscli\log\obscli.log

使用离线安装包

下载与你的系统匹配的安装包,例如:

obscli-linux-amd64-v1.2.3.tar.gz
obscli-darwin-arm64-v1.2.3.tar.gz
obscli-windows-amd64-v1.2.3.tar.gz

校验并安装:

sha256sum -c obscli-linux-amd64-v1.2.3.tar.gz.sha256
bash install-obscli.sh --archive ./obscli-linux-amd64-v1.2.3.tar.gz --install-dir "$HOME/.local/bin" --yes

卸载

重命名前旧版迁移

如果本机曾安装旧版 obsycli,不要直接覆盖安装 obscli。先删除旧可执行文件和旧数据目录,再按“安装”章节重新安装并登录新版 obscli

Linux/macOS/WSL:

curl -fsSL https://static.guance.com/obs-agent/uninstall-legacy.sh | sudo bash
curl -fsSL https://static.guance.com/obs-agent/uninstall-legacy.sh | sudo bash -s -- --yes

该脚本会清理重命名前的 beak-agent 固定系统布局,也会删除旧 obsycli 的常见 Linux/macOS 安装位置:/usr/local/bin/obsycli/usr/bin/obsycli、当前 HOMESUDO_USER 对应 home 下的 ~/.local/bin/obsycli~/.obsycli

Windows PowerShell:

Get-Command obsycli -All
Remove-Item "$env:LOCALAPPDATA\Programs\obsycli\obsycli.exe" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\Programs\obsycli" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.obsycli" -Recurse -Force -ErrorAction SilentlyContinue

删除旧版后,使用当前文档里的 obscli 安装命令重新安装。obscli 使用 ~/.obscli%USERPROFILE%\.obscli,不会读取旧版 obsycli 的本地配置。

卸载当前版本

Linux/macOS:

which -a obscli
rm -f ~/.local/bin/obscli
rm -rf ~/.obscli

如果曾经用 sudo 安装到系统目录:

sudo rm -f /usr/local/bin/obscli
rm -rf ~/.obscli

Windows PowerShell:

Get-Command obscli -All
Remove-Item "$env:LOCALAPPDATA\Programs\obscli\obscli.exe" -Force -ErrorAction SilentlyContinue
Remove-Item "$env:LOCALAPPDATA\Programs\obscli" -Recurse -Force -ErrorAction SilentlyContinue
Remove-Item "$env:USERPROFILE\.obscli" -Recurse -Force -ErrorAction SilentlyContinue

如果曾经把 obscli.exe 放到其他目录,按 Get-Command obscli -All 输出的 Windows 路径删除对应文件。

Windows Git Bash:

which -a obscli
rm -f "$HOME/bin/obscli.exe"
rm -rf "$HOME/.obscli"

WSL:

which -a obscli
rm -f ~/.local/bin/obscli
rm -rf ~/.obscli

本地数据目录包含登录 token、更新配置和日志。删除后需要重新登录。

登录

从 Beak Web 页面复制 user sk,然后执行:

obscli --login <YOUR-USER-SK> --beak-server https://agent-api.guance.com

测试环境证书不被本机信任时,可以加:

obscli --login <YOUR-USER-SK> --beak-server https://agent-api.guance.com --insecure-skip-tls-verify

登录成功后,认证信息会写入:

~/.obscli/login.toml

后续直接运行 obscli 即可进入交互式 chat。

自动更新

通过安装脚本安装的 obscli 会在启动阶段检查是否有新版本。发现新版本时,会提示:

New obscli version available: v1.2.3 -> v1.2.4. Update now? [y/N]

输入 yyes 后,obscli 会下载当前系统匹配的安装包、校验 .sha256,并替换本地可执行文件。Linux/macOS 更新后会自动重新启动 obscli;Windows 会在当前进程退出后完成替换,需要重新运行 obscli

如果当前环境不希望启动时检查更新,可以设置:

export OBSCLI_NO_UPDATE_CHECK=1

常用命令

命令 用途
obscli 进入交互式客户端
/agents 查看 workspace 下的 agent
/tasks 查看可用 task
/newtask <number> 创建新 task 并 attach 到指定编号的 agent
/model auto\|auto:fast\|auto:standard\|auto:advanced 切换当前 task 的模型路由
/attach <number> Attach 到已有编号的 task
/close <number\|task_id> 关闭当前或指定 task
/clear 清屏
/statusline 配置状态栏字段,并写入 ~/.obscli/config.toml
/yolo 切换 YOLO/Full access:解除文件访问范围限制,并关闭 approval 弹窗
/exit 退出

关闭后 task 不能再发送新消息;如需继续对话,请新建 task。

/yolo 是开关命令。首次执行会把当前 task 切换到高风险 Full access 状态:agent 可以访问 working directory 之外的本机文件路径,并且后续工具调用不会再弹出 approve/reject 审批。再次执行 /yolo 会回到 normal mode:恢复文件访问范围限制,并重新启用 approval 弹窗。只在信任当前 agent 和 task 上下文时开启 YOLO。

Plan mode 只能通过 slash command 主动触发,agent 不会根据规划类自然语言请求自动进入。主动触发方式:

/plan [prompt]

例如:

/plan 我要制作一个 dashboard,请给我一个规划

Plan mode 中确认、拒绝、要求修改或打断计划:

/plan-approve
/plan-reject [reason]
/plan-revise <feedback>
/plan-interrupt [reason]

其中:

  • /plan 会把当前 task 切入 plan mode,但不向 agent 发送规划请求;它只是模式开关。
  • /plan <prompt> 会切入 plan mode,并把 prompt 作为用户规划请求发送给 agent。如果 prompt 不具备可规划的任务/场景语义,agent 应继续澄清具体规划意图。
  • /plan-approve 会确认最近收到的待确认 final plan。
  • /plan-reject [reason] 会拒绝当前 final plan,并让 agent 回到规划修订。
  • /plan-revise <feedback> 会把修改意见发送给 agent,用于继续迭代计划。
  • /plan-interrupt [reason] 用于打断当前 active plan。它可以用于 planning、等待审批、修订或执行阶段;打断后 plan mode 退出,后续普通消息按 normal mode 处理。
  • 如果 /close 关闭的 task 仍有 active plan,服务端应先产生 plan_interrupted(reason=session_closed),再进入 close summary / close 流程。obscli 应把它视为普通 plan_interrupted terminal event,清理本地 plan 状态。

obscli 会把 plan_updateplan_finalplan_execution_progressplan_blockedplan_interruptedplan_completed 等 plan events 渲染为 Markdown/普通文本块。plan_interruptedplan_completed 都会清理本地 plan 状态并回到 normal mode。Web UI 可使用 schema overlay 做富展示;obscli 不渲染 Web UI schema,只消费同一套 plan event 语义。

本地手测方式:

本地手测脚本会生成专用 login.toml。用对应 HOME 启动 dist/obscli 后,先用 /agents 查看 agent 编号,之后 /newtask <number> 创建普通 task。进入 plan mode 可以执行 /plan 只切换模式,也可以执行 /plan <规划请求> 直接提交规划请求,或通过 Web UI 触发等价 plan action;直接发送规划类自然语言只会作为普通 chat 处理,agent 可建议用户切换但不能自动进入。

发送消息

Attach 到 task 后,直接输入自然语言消息并回车即可。

如果 task 中只有一个 agent,消息默认发送给该 agent;如果 task 中有多个 agent,消息会作为广播发送。

终端按键兼容

obscli 的交互式输入和弹窗选择需要从终端读取按键。常见终端会用不同协议编码方向键、控制键和组合键;obscli 当前兼容以下模式:

模式 示例 用途
ASCII control bytes Ctrl+C = 0x03Ctrl+W = 0x17Ctrl+L = 0x0c 传统控制键
CSI arrows ESC [ A/B/C/D 常见 xterm/VT 方向键
SS3 arrows ESC O A/B/C/D macOS Terminal、部分 iTerm/VT 模式方向键
Modified CSI arrows ESC [ 1 ; 2 BESC [ 1 ; 5 A 带 modifier 的方向键变体
CSI-u / Kitty keyboard protocol ESC [ 99 ; 5 uESC [ 119 ; 5 uESC [ 108 ; 5 uESC [ 27 ; 1 u 现代终端的增强键盘协议,例如 Ghostty、kitty、WezTerm
Home/End/Delete CSI variants ESC [ 1~ESC [ 4~ESC [ 3~ 常见编辑键

普通输入支持:

按键 行为
Enter 发送当前输入;如果正在选择 slash command,则接受当前高亮命令
Shift+Enter / Alt+Enter 插入换行
Esc 触发取消当前输入确认
双击 Esc 取消当前输入或当前 chat
/ 浏览历史输入;如果当前正在选择 slash command,则移动高亮项
/ 左右移动光标
Home / End 跳到行首/行尾
Backspace 删除光标前字符
Delete 删除光标处字符
Tab 补全 slash command 的公共前缀
Ctrl+A / Ctrl+E 跳到行首/行尾
Ctrl+C 当前输入非空时清空输入;输入为空时退出当前交互
Ctrl+L 清屏并保留当前输入
Ctrl+R 搜索历史输入
Ctrl+T 打开工具输出全文
Ctrl+W 删除光标前一个词
直接输入文字 插入到当前光标位置

弹窗选择支持:

按键 行为
/ Ctrl+P 向上移动高亮项;到第一项后继续按会跳到最后一项
/ Tab / Ctrl+N 向下移动高亮项;到最后一项后继续按会回到第一项
Space 选中当前项;多选弹窗中切换当前项
Enter 提交已选项
Esc 发送全局取消请求;在 approval 弹窗中会取消当前 chat 并关闭弹窗
Ctrl+C 取消弹窗并退出当前交互
Backspace 删除搜索词最后一个字符
直接输入文字 过滤列表,并把高亮项重置到第一项

部分终端启用增强键盘协议后,Esc 可能表现为 27u27;1u。obscli 会把这些序列按同一个全局取消请求处理,而不是当作搜索词。

如果某个终端里的方向键或控制键无效,请先确认终端没有把该快捷键绑定给外层应用;仍异常时,打开 ~/.obscli/log/obscli.log 并记录终端名称、版本和按键行为。

本地文件

obscli 默认使用以下本地路径:

Linux/macOS:

~/.obscli/login.toml
~/.obscli/log/obscli.log

Windows:

%USERPROFILE%\.obscli\login.toml
%USERPROFILE%\.obscli\log\obscli.log

日志会自动轮转,默认单文件最大 32 MiB。

故障排查

登录失败时,先确认:

  • --beak-server 指向 Beak 服务地址
  • 如果使用安装脚本自动登录,--beak-server 指向 Beak 服务地址
  • user sk 是从当前 Beak Web 页面复制的有效凭据
  • HTTPS 测试环境是否需要 --insecure-skip-tls-verify

如果进入 chat 后没有 task,可以先执行:

/agents
/newtask <number>

文档评价

文档内容是否对您有帮助? ×