Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ocli

OpenCode Remote CLI — 通过 Chrome DevTools Protocol 远程控制 OpenCode Desktop

Crates.io License Build Status


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。

启动 OpenCode

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

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 session

oc new                          # 创建新会话
oc new -t "自定义标题"           # 指定标题
oc sessions                     # 列出所有会话

oc read

oc read              # 读取全部对话
oc read --last       # 仅读取最后一条 AI 回复

oc template

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     │
└─────────────┘                                   └──────────────┘

双通道策略:

  1. Sidecar HTTP API — 通过 window.api.awaitInitialization() 发现端点,Basic Auth 认证,会话级隔离
  2. 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 标准接口实现自动化控制。

About

OpenCode Remote CLI — 通过 CDP 协议远程控制 OpenCode Desktop 的命令行工具

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages