资讯动态

BrowserSkill Rust 工作区拆解:bsk-cli 与 bsk-protocol 如何分工驱动浏览器自动化

发布时间:2026/10/16 8:49:52 来源:尧图企业网站定制
BrowserSkill Rust 工作区拆解bsk-cli 与 bsk-protocol 如何分工驱动浏览器自动化【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill你让 AI 去点一下登录页的按钮它凭什么能碰到你已登录的 ChromeBrowserSkill 给的答案是一个 Rust 工作区bsk-cli 负责命令行与守护进程bsk-protocol 负责消息契约加上浏览器扩展三者拼成一条可落地的浏览器自动化链路让 AI Agent 直接复用你真实的登录态。跟着一帧 JSON-RPC 跑完全程以bsk click为例一次点击的完整链路长这样bsk click (crates/bsk-cli/src/cli/interaction.rs) ↓ IPCJSON Lines over UDSsrc/ipc_client.rs bsk daemon 的会话队列 (src/daemon/queue.rs) ↓ WebSocket :52800 (src/daemon/ws.rs) 浏览器扩展执行点击 ↑ 按 bsk-protocol 的 Frame 约定回传 ResponseFrame链路的第一段发生在进程内clap 把参数解析成结构体ipc_client从~/.bsk/daemon.json找到 socket 路径发出一行 JSON。daemon 收到后不直接转发而是先塞进该会话专属的串行队列再由 WS 服务推到扩展侧。扩展在页面里真正完成点击把结果封进 ResponseFrame 原路送回。CLI 把 JSON 反序列化成 Rust 类型渲染成终端输出。整条路上没有魔法每一跳传输的都是同一种帧结构。契约层优先把 bsk-protocol 当电报格式手册读如果把 bsk-cli 比作发报员那 bsk-protocol 就是电报格式手册——报文长什么样、字段怎么排、哪些组合合法全部在这里规定。这个 crate 的依赖面很小serde、schemars、semver、thiserror没有 tokio 也没有网络库纯粹是类型加校验逻辑。src/frame.rs三种信封。RequestFrameid method params、ResponseFrameid result/error 二选一、EventFrame单向事件。事件种类是封闭枚举system.heartbeat、session.user_interrupt、browser.disconnected等。响应帧的 deserializer 手写了一组规则——result 与 error 恰好出现一个两个都出现或都缺失直接拒绝解码从根上堵住歧义报文。src/method.rs方法名枚举。每个方法是一段命名空间字符串system.handshake、tool.tab_list同时标注副作用等级被动读、瞬时输入、浏览器变更、控制平面供上层做中断与安全策略。src/tools/所有tool.*的入参出参类型按功能域拆文件——interaction.rsclick/fill/hover、navigation.rs、observation.rs、record.rs加record_v2/v3.rs录制轨迹的三代演进、tabs.rs另有waits.rs、wheel.rs、window.rs等。把 90 份 JSON Schema 当 API 合同读schema/ 目录里有 111 份 JSON Schema全部由schemars从 Rust 类型推导出来。价值在于它不依赖任何 Rust 环境TypeScript 写的扩展、Node 侧的调试脚本拿tool_click_params.json就能离线校验一条请求的形状。trace.json到trace_v3.json并排摆着协议版本的演进在文件列表里一目了然。用 dump-schema 重新生成全部合同类型改了之后运行cargo run -p bsk-protocol --bin dump-schema --locked即可把 schema/ 全量重刷保证 Rust 类型与 JSON 合同始终一致。协议变更从此是一次可审计的文件 diff而不是散落在多个 crate 里的隐式改动。实现层逐块拆 bsk-cli编译出来的bsk命令就在这个 crate 里工作区当前版本 0.3.2edition 2024Rust 1.85。src/cli/mod.rs是子命令总入口screenshot、navigate、click、record等 30 多个命令各占一个 .rs 文件一命令一文件。以 src/cli/screenshot.rs 为例clap 定义ScreenshotArgsdispatch()先经ensure_daemon()确保守护进程在跑再走 IPC 发出tool.screenshot请求。src/ipc_client.rs是 CLI 侧的 IPC 通道Unix 走 Unix socketWindows 走命名管道协议是 JSON Lines每次call新建一条连接发一行、收一行响应反序列化成目标类型。src/daemon/是长驻后台进程mod.rs里同时拉起 WS 与 IPC 两个服务默认 WebSocket 端口 52800DEFAULT_WS_PORT。子模块按职能切分ipc.rs、ws.rs、sessions.rs、queue.rs、remote/另有inflight.rs管在途取消、lockfile.rs管单实例、start.rs管启动与空闲回收。其中 daemon/queue.rs 为每个会话维护一条串行 mpsc 队列tool.*请求逐个取、逐个转发避免并发工具调用把扩展侧的会话状态搅乱。src/skill_install/通过include_str!把 skill/SKILL.md 打包进二进制再按 harness 清单装进各家 AI 编程助手的技能目录来源区分 bundled 与 custom写入带溯源标记。tests/有 39 个集成测试文件ipc_smoke.rs验证 IPC 冒烟lockfile.rs看单实例handshake_compat.rs锁协议兼容行为。改任何模块之前先翻对应测试它写明了边界行为。入口文件解决什么问题改之前先看哪个测试src/cli/mod.rs30 子命令的 clap 定义与分发tests/cli_parse.rssrc/ipc_client.rsCLI 与 daemon 的 JSON Lines RPCtests/ipc_smoke.rssrc/daemon/mod.rsdaemon 生命周期WS :52800 IPC 双服务tests/daemon_discovery.rssrc/daemon/queue.rs每会话串行队列杜绝工具调用互相踩踏tests/per_session_queue.rssrc/skill_install/mod.rs把 SKILL.md 装进各家 AI 助手tests/install_skill.rs动手改造挑一条路径改起来新增一条 bsk 子命令—— 在 src/cli/ 下新建 .rs用 clap 定义参数结构体与dispatch()到 src/cli/mod.rs 挂进子命令枚举若请求类型尚不存在再去 bsk-protocol 补方法。对照测试tests/cli_parse.rs和tests/exit_codes.rs。扩展一个 RPC method—— 在 bsk-protocol/src/method.rs 的Method枚举里加一条命名空间字符串并标注副作用等级在 src/tools/ 对应文件里定义 Params/Result 两个类型跑dump-schema刷新 JSON 合同。回归测试tests/tools_ipc.rs、tests/tools_m9_ipc.rs。改协议兼容检查—— 核心逻辑集中在 bsk-protocol/src/system.rscompare_protocol比较协议版本先后evaluate_handshake_compat输出三态判决——同 major 且双方最低兼容线都满足时放行版本漂移记为 Skew 但允许连接major 不符直接 Reject。改动前先读tests/handshake_compat.rs再跑tests/ws_handshake.rs。更完整的组件关系、远程模式与沙箱场景见仓库内的 docs/architecture.md。【免费下载链接】BrowserSkillLet AI agents use your real, logged-in browser without interrupting your work. CLI extension for browser automation across any shell-capable AI agent.项目地址: https://gitcode.com/GitHub_Trending/br/BrowserSkill创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑