ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

bb Agent IDE 核心架构深度解析:Server、Host Daemon、App、CLI 四大组件如何协同工作

bb Agent IDE 核心架构深度解析:Server、Host Daemon、App、CLI 四大组件如何协同工作 bb Agent IDE 核心架构深度解析Server、Host Daemon、App、CLI 四大组件如何协同工作【免费下载链接】bbThe agent IDE that builds itself项目地址: https://gitcode.com/gh_mirrors/bb14/bbbb是一个自己构建自己的 Agent IDEAI 编程智能体集成开发环境。它的核心由四大组件构成Server中心枢纽、Host Daemon主机守护进程、AppWeb 界面和CLI命令行工具。本文用一张图带你读懂这套架构每个组件负责什么、彼此如何通信、以及你该从哪个源码目录入手阅读。️ 一图看懂四大组件的职责分工先看 bb 运行起来后的真实界面——左侧是线程列表中间是与 AI 智能体的对话右侧是任务面板在这个界面背后四大组件各司其职组件角色源码位置Server中心枢纽状态存 SQLite、暴露 HTTP API、通过 WebSocket 推送变更通知apps/server/Host Daemon跑在每台执行机器上连接 Server、预置工作区、运行智能体进程、回传事件apps/host-daemon/AppWeb UI查看项目/线程、跟进进度、指导任务执行apps/app/CLI(bb)一等公民界面和 App 能力对等但可脚本化用户和智能体都能用apps/cli/这套分工的精妙之处在于App 和 CLI 只是遥控器Server 是大脑Host Daemon 是手。你的电脑、远程服务器、甚至手机都可以是手而大脑只有一个。️ Server所有状态的唯一真相来源Server 是整个系统的中枢Hub入口在 apps/server/src/start-server.ts。它做三件事存状态所有数据都落在 SQLite 数据库里packages/db/Server 本身无状态——数据库才是唯一真相来源接请求通过 HTTP API 响应 App 和 CLIapps/server/src/routes/推通知通过 WebSocket 向所有客户端实时推送变更apps/server/src/ws/hub.ts。当某个操作需要动手干活比如启动一个线程时Server 不会自己做而是把工作路由给对应主机上的 Host Daemon——通过常驻的守护进程 WebSocket 通道下发 RPC 命令。核心数据模型有四个概念详见 docs/system-overview.mdProject项目顶层容器通常对应一个代码仓库Thread线程工作单元一次与智能体的对话产生只追加的事件流Environment环境线程的执行上下文把工作区目录绑定到某台主机Host主机一台长驻守护进程的执行机器。⚙️ Host Daemon每台机器上的执行引擎Host Daemon 是 bb 真正干活的地方入口在 apps/host-daemon/src/daemon.ts。每台被纳管enroll的机器上跑一个职责包括连接 Server建立并保持与中心 Server 的守护进程 WebSocket 通道处理 RPC 命令预置环境、启动/停止线程等生命周期操作apps/host-daemon/src/command-dispatch.ts运行智能体进程实际拉起 Codex、Claude Code 等 Agent Provider 进程适配器在 packages/agent-runtime/回传事件把智能体的消息、工具调用、文件变更作为事件批次上报提供本地 API给同机的 App 和 CLI 提供打开编辑器、选择文件夹等本地操作。这意味着一个 Project 的代码可以分布在多台机器上——同一个项目在 Mac 上是本地目录在 Linux 服务器上可以是另一个路径Host 边界天然隔离了这一切。 App 与 CLI两个遥控器Appapps/app/是浏览器里的 Web UI负责查看项目、跟踪线程进度、指导任务执行。它是一个瘦客户端所有数据来自 Server 的 HTTP API实时性靠 WebSocket 推送。CLIapps/cli/则是一等公民而非附属工具入口在 apps/cli/src/index.ts。它和 App 能力对等额外提供可脚本化适合写进 CI 和自动化流程智能体友好Agent 本身也能通过bb命令操作系统插件命令代理未知命令会自动查询插件贡献的命令apps/cli/src/plugin-cli-proxy.ts。典型工作流bb status bb project list bb thread spawn --project id --provider codex --prompt ... 协同全流程一次线程生命周期的完整旅程把四大组件串起来看看你发起一个任务时发生了什么你通过 App 或 CLI 发起启动线程请求 → 请求到达ServerServer校验参数在 SQLite 中写入线程记录状态startingServer通过守护进程 WebSocket 向目标Host Daemon下发 RPC 命令Host Daemon预置工作区Environment拉起智能体 Provider 进程智能体开始干活Host Daemon把消息、工具调用、文件变更等事件批次持续上报Server落库事件流并通过 WebSocket 实时推送给App和CLI你在界面中看到进度实时更新——闭环完成。线程状态机pending → starting → active → idle/error由 packages/domain/ 定义可视化见 docs/lifecycle-diagrams.md。 架构护栏契约包如何锁死组件边界bb 用两个契约包Contract Package保证组件之间各说各话防止架构腐化契约包约束的边界packages/server-contract/客户端App/CLI↔ ServerHTTP 路由、请求/响应类型、WebSocket 通知类型packages/host-daemon-contract/Server ↔ Host Daemon命令类型、事件类型、会话生命周期规则很简单实现代码永远不跨边界 import。Server 不知道工作区如何预置Daemon 不知道线程和项目的细节——它只执行命令里告诉它的事。这种契约先行的设计是大型多进程系统保持可维护性的关键。 延伸阅读与源码导航想深入阅读建议按这个顺序概念总览docs/system-overview.md —— 运行时组件、数据模型、契约边界一页讲清仓库结构docs/repository-overview.md —— 所有包和 App 的角色速查表生命周期状态机docs/lifecycle-diagrams.md —— 线程与环境的状态流转图Server 启动流程apps/server/src/start-server.tsDaemon 进程管理apps/host-daemon/src/daemon.tsCLI 命令注册apps/cli/src/index.ts。一句话总结bb 的架构是典型的中心状态 分布式执行模式——Server 守住唯一真相Host Daemon 分布式执行App 和 CLI 双入口协同。理解了这四者关系你就掌握了读懂整个代码库的地图。【免费下载链接】bbThe agent IDE that builds itself项目地址: https://gitcode.com/gh_mirrors/bb14/bb创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表