ocli 是一个 Rust 编写的命令行工具,通过 Chrome DevTools Protocol (CDP) 和 Sidecar HTTP API 双通道实现与 OpenCode Desktop 的无界面自动化交互。无需 GUI、无需手动操作,完全脚本化控制。
- 双通道架构 — 优先使用 Sidecar HTTP API(会话级隔离),自动回退到 CDP WebSocket
- 会话管理 — 创建/切换/列出会话,每个会话隔离上下文
- 消息模板 — 保存常用 prompt,一键复用
- 自动重试 — 可配置重试次数和间隔
- 智能编码检测 — 自动识别 UTF-8/UTF-16 LE/UTF-16 BE
- 跨平台 — Windows 原生支持,macOS/Linux 可编译
git clone https://github.com/Mao-jh/Ocli.git
cd ocli
cargo build --release生成的可执行文件位于 target/release/oc.exe,建议加入 PATH。
oc restart这会以调试模式重启 OpenCode Desktop(端口 9222)。
# 快捷方式(推荐):新建会话 + 发送 + 等待回复
oc "你好,帮我分析这段代码"
# 显式命令
oc send --wait "完成这个任务"
# 从文件读取并发送
oc send -f prompt.txt
# 从标准输入读取
cat prompt.txt | oc send --stdin
# 使用已有模板
oc send -T code_review| 命令 | 功能 |
|---|---|
oc <消息> |
快捷发送(等价于 send --wait --new) |
oc send [options] <消息> |
发送消息 |
oc read |
读取对话内容 |
oc status |
检查 OpenCode 连接状态 |
oc restart |
重启 OpenCode 调试模式 |
oc new |
创建新会话 |
oc sessions |
列出所有会话 |
oc history |
查看发送历史 |
oc template |
管理消息模板 |
oc debug |
显示调试配置信息 |
oc send [OPTIONS] [MESSAGE]
# 消息来源
oc send "直接输入"
oc send -f file.txt # 从文件读取
echo "msg" | oc send --stdin # 从 stdin
oc send -T template_name # 使用模板
# 控制选项
oc send --wait "等待回复" # 发送并等待 AI 回复
oc send --new "新会话" # 创建新会话后发送
oc send --auto-launch "自动启动" # 未运行时自动启动
oc send --restart "重启后发送" # 重启再发送
oc send --target "页面标题" # 按页面标题过滤
oc send --retries 5 # 自定义重试次数
oc send --timeout 600 # 等待超时(秒)oc new # 创建新会话
oc new -t "自定义标题" # 指定标题
oc sessions # 列出所有会话oc read # 读取全部对话
oc read --last # 仅读取最后一条 AI 回复oc template list # 列出模板
oc template add greet "早上好" -d "问候" # 添加模板
oc template remove greet # 删除模板配置文件路径:~/.opencode/config.json
{
"connection": {
"host": "127.0.0.1",
"port": 9222
},
"launch": {
"path": "C:\\Users\\...\\OpenCode.exe"
},
"retries": {
"max_retries": 3,
"retry_delay": 2
}
}环境变量可覆盖配置文件:
| 变量 | 默认值 | 说明 |
|---|---|---|
OPENCODE_HOST |
127.0.0.1 |
CDP 主机地址 |
OPENCODE_PORT |
9222 |
CDP 调试端口 |
OPENCODE_PATH |
自动检测 | OpenCode.exe 完整路径 |
OPENCODE_DEFAULT_DIRECTORY |
空 | 新建会话的默认工作目录 |
┌─────────────┐ Sidecar HTTP API (首选) ┌──────────────┐
│ │ ◄──────────────────────────────► │ │
│ ocli CLI │ CDP WebSocket (回退) │ OpenCode │
│ │ ◄──────────────────────────────► │ Desktop │
└─────────────┘ └──────────────┘
双通道策略:
- Sidecar HTTP API — 通过
window.api.awaitInitialization()发现端点,Basic Auth 认证,会话级隔离 - CDP WebSocket — 回退方案,通过 Chrome DevTools Protocol 直接操作 DOM
- 语言: Rust (edition 2021)
- CDP 通信: tokio-tungstenite (WebSocket)
- HTTP 客户端: reqwest (TLS via rustls)
- CLI 框架: clap (derive macros)
- 序列化: serde / serde_json
- 异步运行时: tokio (full features)
MIT
ocli 是一个独立开源项目,与 OpenCode 官方无关联。通过 Chrome DevTools Protocol 标准接口实现自动化控制。