BrowserSkill 代码结构完全指南10 分钟看懂 bsk CLI 与浏览器扩展如何协作【免费下载链接】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/BrowserSkillBrowserSkill 是一个让 AI Agent 直接驱动你「已登录的真实浏览器」的开源浏览器自动化工具。它以bsk命令行工具 浏览器扩展的形态存在Rust 侧代码集中在 crates/ 目录。本文带你从请求流转的角度看懂这个项目的代码分工。问题与架构鸟瞰典型场景是这样的你在 Cursor、Claude Code 等 AI 编程助手里说「帮我把这个表单填了」助手在 shell 里执行一条bsk命令你的 Chrome 或 Edge 里就出现了一个独立的Agent Window去干活而不打断你正在浏览的标签页。要串起「Agent → 命令 → 后台进程 → 浏览器」这条链项目拆成三层AI Agent (shell) │ bsk screenshot --session s1 ... ▼ bsk CLI ──── JSON Lines / Unix Socket ────▶ bsk daemon长驻后台进程 (crates/bsk-cli) (同 crate 内 daemon/ 模块) │ WebSocket 127.0.0.1:52800 ▼ 浏览器扩展 apps/extension (TypeScript) │ CDP ▼ Chrome / Edge 页面消息在整条链路上都用同一套 JSON-RPC 风格帧结构这套结构由 crates/bsk-protocol/ 定义是三层共同遵守的契约——你可以把它理解成一份「双方签字的协议」协议稳定任何一侧的实现都可以独立更换。项目「组织架构图」模块职责一览按角色分组而不是按目录顺序平铺会更容易理解每个部分在干嘛角色所在位置干什么命令入口crates/bsk-cli/src/cli/34 个顶层子命令screenshot、click、fill、tab、record等一命令一文件后台运行时crates/bsk-cli/src/daemon/长驻进程WebSocket 服务、会话队列、浏览器存活检测、空闲回收本地通信客户端crates/bsk-cli/src/ipc_client.rsCLI 前端通过 Unix Socket 与 daemon 收发 JSON Lines协议契约层crates/bsk-protocol/src/帧结构frame.rs、方法枚举method.rs、各工具的入参出参类型机器可读契约crates/bsk-protocol/schema/111 份自动生成的 JSON Schema任何语言都能据此校验消息浏览器侧执行apps/extension/src/tools/扩展内的 ToolDispatcher 与 21 个工具处理器最终经 CDP 操作页面根目录 Cargo.toml 只做一件事把bsk-cli和bsk-protocol两个成员、0.3.2的版本号、Rust1.85的最低要求、以及 tokio/serde/clap 等全部第三方依赖集中在[workspace.dependencies]里统一定义crate 内部用workspace true继承。跟一次请求的完整旅程挑一条最典型的命令bsk screenshot --session s1 --out shot.png。它要经过四道关卡每道关卡都有明确负责的代码bsk screenshot (cli/screenshot.rs) │ ① 先经 cli/ensure_daemon.rs 确认 daemon 在跑没有就自动拉起 ▼ ② IPC 客户端把命令封装成 RequestFrame写入 $BSK_HOME/run/daemon.sock daemon 会话队列 (daemon/queue.rs) │ ③ 按 session 串行排队防止并发操作互相干扰 ▼ ④ 按会话路由经 daemon/ws.rs 转发到扩展的 WebSocket 连接 浏览器扩展 tools/ 分发器 ▼ CDP 截图按 frame.rs 定义的 ResponseFrame 原路返回 ▲ 分块回传 PNG 字节CLI 侧原子写入 shot.png三个值得注意的细节第一CLI 侧的工具调用超时设为 35 秒刻意比 daemon 的 30 秒工具超时更长好让调用方拿到结构化的超时错误而不是连接断开见 cli/mod.rs 的注释第二同一条tool.screenshot消息的入参出参类型在 crates/bsk-protocol/src/tools/ 中定义schema/里同时存在它的 JSON Schema 版本第三docs/architecture.md 还描述了 remote 模式——daemon 跑在服务器上、扩展从用户电脑经 WSS 连回来但协议层完全不用改。拆分的设计动机就一句话CLI 可以换实现、扩展可以换语言只要都遵守 bsk-protocol 这份契约整条链路就不变。快速验证与常见误区想确认自己真的看懂了做这三件事装好bsk后跑bsk --version应输出0.3.2与 Cargo.toml 的workspace.package.version一致再跑bsk doctor做连接体检打开 crates/bsk-protocol/schema/tool_screenshot_params.json对照 crates/bsk-protocol/src/tools/observation.rs 里的 Rust 类型看同一份契约的两种形态按 crates/bsk-protocol/README.md 的说法运行cargo run -p bsk-protocol --bin dump-schema --locked即可重新生成全部 schema。⚠️ 两个容易踩的坑52800 只是 WebSocket 端口不是 CLI 与 daemon 的通信口。CLI ↔ daemon 走的是本机 Unix Socketdocs/architecture.md 中写作$BSK_HOME/run/daemon.sock$BSK_HOME默认~/.bsk52800daemon/mod.rs 的DEFAULT_WS_PORT只用于扩展连接 daemon可用bsk daemon start --port覆盖。bsk和 daemon 是同一个二进制。bsk daemon只是 src/cli/mod.rs 里的一个子命令别去找一个独立的 daemon 程序。小结整个项目就是一条「Agent 说人话 → CLI 翻译成契约消息 → daemon 排队转发 → 扩展动手」的流水线而 crates/bsk-protocol/ 这条契约层是全部协作的基石。想继续深入建议读 docs/architecture.md 的组件细节以及 docs/remote-extension-connection.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),仅供参考
阅读完成 · 觉得有帮助?