obscli 用户手册¶
obscli 是 Beak 的命令行客户端。安装并登录后,您可以在终端中完成以下操作:
- 查看当前 workspace 中的 Agent。
- 创建新 Task,或继续已有 Task。
- 与 Agent 对话、引用观测资源、指定 Skill。
- 在脚本中提交一次性任务并获取结果。
安装 obscli¶
用安装脚本安装¶
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 |
安装后如果无法直接运行 obscli,请把安装目录加入 PATH:
WSL 属于 Linux 环境,也使用以上命令和路径。
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>
Windows 默认安装到:
安装完成后,重新打开 PowerShell,然后运行:
如果不方便重新打开 PowerShell,可以直接运行完整路径:
Windows 默认目录:
| 类型 | 默认路径 |
|---|---|
| 安装目录 | %LOCALAPPDATA%\Programs\obscli |
| 可执行文件 | %LOCALAPPDATA%\Programs\obscli\obscli.exe |
| 数据目录 | %USERPROFILE%\.obscli |
| 登录和更新配置 | %USERPROFILE%\.obscli\login.toml |
| 日志目录 | %USERPROFILE%\.obscli\log |
| 当前日志文件 | %USERPROFILE%\.obscli\log\obscli.log |
建议在 Windows 上使用 PowerShell 安装脚本。Git Bash 会按自己的 $HOME 解释路径;如果使用 Git Bash,请明确指定安装目录:
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>
用离线安装包安装¶
下载与您系统匹配的安装包,例如:
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
卸载 obscli¶
重命名前旧版迁移¶
如果本机曾安装旧版 obsycli,不要直接覆盖安装 obscli。先删除旧可执行文件和旧数据目录,再按“安装”章节重新安装并登录新版 obscli。
Linux/macOS/WSL:
以下两条命令任选其一。第一条会在删除前询问确认,第二条使用 --yes 跳过确认:
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、当前 HOME 和 SUDO_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:
如果曾经用 sudo 安装到系统目录:
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:
WSL:
本地数据目录包含登录 token、更新配置和日志。删除后需要重新登录。
登录 Beak¶
从 Beak Web 页面复制 user sk,然后执行:
测试环境证书不被本机信任时,可以加:
登录成功后,认证信息会写入:
后续直接运行 obscli 即可进入交互式 chat。
obscli 如何自动更新¶
通过安装脚本安装的 obscli 会在启动阶段检查是否有新版本。发现新版本时,会提示:
输入 y 或 yes 后,obscli 会下载当前系统匹配的安装包、校验 .sha256,并替换本地可执行文件。Linux/macOS 更新后会自动重新启动 obscli;Windows 会在当前进程退出后完成替换,需要重新运行 obscli。
如果当前环境不希望启动时检查更新,可以设置:
常用命令¶
| 命令 | 用途 |
|---|---|
obscli |
进入交互式客户端 |
/agents |
查看当前 workspace 中的 Agent |
/tasks |
查看已有 Task |
/newtask <number> |
使用指定编号的 Agent 创建 Task |
/model auto\|auto:fast\|auto:standard\|auto:advanced |
切换当前 Task 的模型路由 |
/attach <number> |
进入已有 Task |
/close <number> |
关闭当前或指定编号的 Task |
/compact |
手动压缩当前 Task 的较早历史 |
/clear |
清屏 |
/subagent <task> |
要求 Agent 优先把任务拆给多个 subagents 执行 |
/statusline |
配置状态栏字段,并写入 ~/.obscli/config.toml |
/yolo |
切换 YOLO/Full access:解除文件访问范围限制,并关闭 approval 弹窗 |
/exit |
退出 |
表格里的 <number> 指 /agents 或 /tasks 输出表格中 # 列的临时编号。/newtask <number> 使用 /agents 的 # 编号;/attach <number> 和 /close <number> 使用 /tasks 的 # 编号。
Task 关闭后不能再发送新消息;如需继续对话,请新建 Task。
控制 Agent 的访问权限¶
/yolo 是开关命令:
- 第一次执行:进入 Full access,Agent 可以访问 working directory 以外的文件,工具调用不再请求审批。
- 再次执行:回到 normal mode,恢复文件访问限制和审批提示。
只在信任当前 Agent 和 Task 上下文时开启 YOLO。
让 subagents 并行处理任务¶
当任务适合拆分为多个独立方向时,可以用 /subagent <task> 要求 Agent 优先使用 subagents。例如:
obscli 会显示各 subagent 的启动、等待和完成状态,最终结果由主 Agent 汇总。您也可以用上下方向键从输入历史中找回完整命令。
手动压缩任务历史¶
长任务接近模型上下文限制时,Agent 会自动压缩较早的对话和工具交互。需要提前释放上下文空间时,可以在当前 Task 中执行:
压缩会保留最近的原始交互,并把较早历史整理为可继续执行的摘要;它不会关闭 Task,也不会删除完整的 session 事件记录。obscli 会显示压缩开始和完成状态。如果当前历史仍在保留预算内,Agent 会直接提示无需压缩。
规划并执行复杂任务¶
使用 /plan 主动进入 Plan mode:
例如:
收到计划后,可以确认、拒绝、要求修改或中断:
/plan-approve
/plan-approve /subagent [instruction]
/plan-reject [reason]
/plan-revise <feedback>
/plan-interrupt [reason]
| 命令 | 用途 |
|---|---|
/plan |
进入 Plan mode,等待您继续输入规划请求 |
/plan <prompt> |
进入 Plan mode,并立即提交规划请求 |
/plan-approve |
确认最近收到的计划 |
/plan-approve /subagent [instruction] |
确认计划,并优先让 subagents 分工执行 |
/plan-reject [reason] |
拒绝计划并说明原因 |
/plan-revise <feedback> |
提交修改意见 |
/plan-interrupt [reason] |
中断当前计划并退出 Plan mode |
直接发送普通消息不会自动进入 Plan mode。关闭仍在执行计划的 Task,也会中断该计划。
在脚本中运行单个 prompt¶
使用 obscli run 可以提交一次性任务、等待 Agent 回答,然后退出。它适合 shell 脚本和自动化任务。
运行前需要先通过 obscli --login <user-sk> 登录。run 会读取现有登录配置,脚本无需再次传入认证信息。
运行 obscli -h 或 obscli run -h 可以查看 run 支持的全部参数。
如果不知道 agent UUID,先列出当前 workspace 内在线的 agent:
默认输出包含 Agent 的 UUID、名称和状态;--json 适合脚本解析。该命令只查询在线 Agent,不会创建 Task。
直接传入 prompt:
读取多行文件或 stdin:
obscli run --agent-uuid <AGENT_UUID> --prompt-file ./prompt.md
printf '%s\n' '总结当前 workspace 的健康状态' | \
obscli run --agent-uuid <AGENT_UUID> --prompt-file -
默认 stdout 只包含 Agent 返回的原始 Markdown,正常过程不会写 stderr。需要结构化结果时使用 --json:
JSON 结果包含回答、相关 UUID、Agent UUID 和 Task 名称。存在用量或附件信息时,也会一并返回。
默认超时为 5 分钟,可用 --timeout 90s 修改。使用 -v、-vv、-vvv 或 --verbose=1|2|3 可以把不同级别的诊断信息写入 stderr。默认情况下,如果 Agent 请求危险工具审批,命令会取消本轮并以退出码 3 结束。只有明确接受 Full access 风险时才使用 --yolo。
需要让一次性任务优先使用 subagents 时,添加 --subagent:
如果任务无法合理拆分,Agent 会说明原因后直接回答。--subagent 不能与 --list-agents 组合。
obscli run 不支持需要多轮确认的 Plan mode。如需确认或修改计划,请使用交互式 obscli。
常用退出码:
| 退出码 | 含义 |
|---|---|
0 |
已收到回答并成功完成 Task |
1 |
API、消息流、Agent 执行或 Task 清理失败 |
2 |
参数或本地 prompt 输入错误 |
3 |
工具调用需要审批 |
4 |
Agent 请求进一步输入,但一次性任务无法继续交互 |
124 |
执行超时 |
130 / 143 |
收到 SIGINT / SIGTERM |
在 --json 模式下,失败时 stdout 保持为空,stderr 返回包含 error.code 和 error.message 的 JSON 对象。脚本应使用退出码和这两个字段判断结果。
在消息中引用资源和 Skill¶
在交互式输入框中输入 @,可以引用当前 workspace 的观测资源:
- Service
- Dashboards
- Application
- Hosts
- Containers
使用方向键或 Tab 浏览列表,按 Space 选择一项或多项,按 Enter 确认。输入文字可以模糊搜索资源名称和类型。选中的资源会以 @资源名 显示在消息中,为 Agent 提供查询上下文。
在已 attach 的单 Agent Task 中输入 $,可以选择该 Agent 提供的 Skill。搜索支持 Skill 名称和描述,并忽略空格,例如 rootcause 可以匹配 Root cause analysis。选择方式与资源列表相同,每个已选 Skill 都作用于整条消息。
两个列表都需要先按 Space 选择,再按 Enter 确认。搜索不会清除已经选中的项目。
在 @资源名 或 $skill-name 边界按 Backspace 或 Delete,会删除整个引用。通过方向键或 Ctrl+R 找回历史消息时,资源和 Skill 也会恢复。
如果只想输入普通 @ 或 $,打开列表后按 Esc 即可。粘贴到普通输入框中的 @ 和 $ 也会保留为普通文本。
进入 Task 后,直接输入消息并按 Enter 即可发送。
如果 Task 中只有一个 Agent,消息默认发送给该 Agent;如果有多个 Agent,消息会广播给所有 Agent。
使用键盘快捷键¶
普通输入支持以下快捷键:
| 按键 | 行为 |
|---|---|
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 |
向下移动高亮项;到最后一项后继续按会回到第一项 |
Shift+Tab |
向上移动高亮项;到第一项后继续按会跳到最后一项 |
Space |
切换当前项,光标保持在当前项;加载失败的资源类型会重试加载并在成功后自动选中 |
Enter |
提交所有已选项;没有已选项时保持弹窗打开 |
Esc |
取消当前弹窗;资源项列表中先返回类型列表,approval 弹窗中会取消当前 chat 并关闭弹窗 |
Ctrl+C |
取消弹窗并退出当前交互 |
Backspace |
删除搜索词最后一个字符 |
Ctrl+U |
清空搜索词 |
| 直接输入或粘贴文字 | 模糊过滤列表,并把高亮项重置到第一项 |
如果某个终端里的方向键或控制键无效,请先确认终端没有把该快捷键绑定给外层应用;仍异常时,打开 ~/.obscli/log/obscli.log 并记录终端名称、版本和按键行为。
本地文件¶
obscli 默认使用以下本地路径:
Linux/macOS:
Windows:
日志会自动轮转,默认单文件最大 32 MiB。
故障排查¶
登录失败时,先确认:
--beak-server指向 Beak 服务地址- 如果使用安装脚本自动登录,
--beak-server指向 Beak 服务地址 - user sk 是从当前 Beak Web 页面复制的有效凭据
- HTTPS 测试环境是否需要
--insecure-skip-tls-verify
如果进入 chat 后没有 task,可以先执行:
这里的 <number> 是 /agents 输出表格中 # 列的编号。