[分享] Opencli 用 CDP 协议从终端直控 Cursor IDE - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tohearts

[分享] Opencli 用 CDP 协议从终端直控 Cursor IDE

  •  
  •   tohearts 2 天前 191 次点击

    发 Prompt 、切模型、翻历史、截图,11 条命令搞定

    做了个 opencli 插件,通过 Chrome DevTools Protocol 直接操控 Cursor IDE 。不是调 CLI ,是真的在操控 IDE 的 UI你在终端发的 prompt ,打开 Cursor 对话还在。

    GitHub: https://github.com/toheart/cursor-agent

    解决什么问题

    Cursor 3 出了独立 Agent 窗口之后,我日常需要:

    • 在终端脚本里让 Cursor 跑任务,不想每次切窗口
    • 远程(手机/平板)给 Cursor 发 prompt ,回来打开 IDE 会话还在
    • 批量操作:切项目 → 切模型 → 发任务 → 截图存档,一套脚本搞定

    之前用 Cursor CLI 方案,四个问题一直没解决:上下文断裂( CLI 和 IDE 是两个会话)、展示效果差、粒度粗、配置麻烦。

    原理

    Cursor 是 Electron 应用 → 底层是 Chromium → 支持 CDP ( Chrome DevTools Protocol )。

    启动时加个参数:

    Cursor.exe --remote-debugging-port=9226 

    然后通过 WebSocket 连上去,就能 Runtime.evaluate 执行 JS 、Input.insertText 输入文本、Input.dispatchMouseEvent 模拟点击、Page.captureScreenshot 截图。

    本质上就是把 F12 开发者工具能干的事,封装成了终端命令。

    11 条命令

    opencli cursor status # 检查 CDP 连接 opencli cursor list # 列出所有窗口(自动识别 Agent/Editor ) opencli cursor send "prompt" # 发 Prompt 并等待 AI 回复 opencli cursor read # 读取当前对话内容 opencli cursor model # 列出可用模型 opencli cursor model-switch "sonnet" # 模糊匹配切模型 opencli cursor history # 翻历史会话 opencli cursor screenshot # 截图保存 PNG opencli cursor new-chat # 新建对话 opencli cursor project # 列出项目( Agent 窗口) opencli cursor project-switch "my-app" # 切项目 

    所有命令自动适配 Cursor 3 的 Agent 独立窗口和传统 Editor 嵌入式聊天面板,不需要手动指定窗口类型。

    实际效果

    列出窗口:

    ┌─────┬────────┬──────────────────────────────────────┐ │ Idx │ Type │ Title │ ├─────┼────────┼──────────────────────────────────────┤ │ 1 │ Editor │ blog-openclaw-soul.md - cursor-agent │ │ 2 │ Agent │ Cursor Agents │ │ 3 │ Editor │ SKILL.md - ai-pipeline │ └─────┴────────┴──────────────────────────────────────┘ 

    切模型:

    ┌─────┬────────────┬────────┬─────────┐ │ Idx │ Name │ Tier │ Current │ ├─────┼────────────┼────────┼─────────┤ │ 1 │ Composer 2 │ Fast │ │ │ 2 │ Sonnet 4.6 │ Medium │ │ │ 3 │ Opus 4.6 │ High │ │ └─────┴────────────┴────────┴─────────┘ 

    和 CLI 方案的本质区别

    CLI 方案的会话活在 CLI 进程里退了就没了。

    CDP 方案的会话活在 IDE 里你从终端、从脚本、从远程触发的每一条 prompt ,都真实存在于 Cursor IDE 的对话历史中。回到电脑前打开 Cursor ,刚才的对话就在那里,直接接着聊。

    安装

    # 一行安装,零依赖( esbuild 内联打包,不需要 npm install ) opencli plugin install github:toheart/cursor-agent/cursor-cdp # 确认连接 opencli cursor status 

    前提:Cursor 需要带 --remote-debugging-port=9226 参数启动(在快捷方式里加就行,需要先关闭所有 Cursor 窗口再重启)。

    自动化示例

    #!/bin/bash opencli cursor project-switch "my-backend" opencli cursor new-chat opencli cursor model-switch "opus" opencli cursor send "分析 src/auth 模块有没有安全隐患" opencli cursor screenshot --output report.png 

    五行脚本,完整的自动化编程流程。


    项目开源,基于 opencli 插件体系: https://github.com/toheart/cursor-agent

    有问题楼下聊,欢迎 Star 。

    目前尚无回复
    关于     帮助文档 &nbs;   自助推广系统     博客     API     FAQ     Solana     981 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 468ms UTC 18:17 PVG 02:17 LAX 11:17 JFK 14:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86