跳到主要内容

Berd

Berd 是一个用于操作 AI 智能体的桌面应用,基于 Tauri 和 React 构建。它有自己的界面和分发方式,同时使用内置的 goose 进程作为智能体后端。

基于 goose over ACP 构建,通过 WebSocket 连接到 goose serve。

源码

Berd 的桌面界面,包含项目、对话和提示词输入框

来自 Berd 仓库的一张引导图。

巧妙之处​

你可以构建不同的桌面产品,而不必 fork 智能体运行时。Berd 掌管自己的界面、应用生命周期和打包。内置的 goose 后端在 ACP 边界之后提供智能体的执行能力。

后端固定在某个特定的修订版本上,因此分发包可以带上已知配套的前端和后端,而不必依赖用户 PATH 中碰巧存在的 goose 版本。同一个仓库里还有分发钩子,用于托管设置和私有资源,而无需把这些资源放进公开的代码树。

这是应用层面的路线:使用完整的 goose 二进制文件,而不是用单独的 GDK crate 拼装运行时。

工作方式​

  1. 在设置阶段,准备 goose-backend.lock.json 中记录的 goose 修订版本,并构建内置的 TypeScript SDK。
  2. 在本地端口上启动一个长期运行的 goose serve 子进程,并为每次启动生成独立的认证密钥。
  3. 通过 WebSocket 连接它的 /acp 端点,并把会话更新路由到应用中。
  4. 把后端打包为 Tauri sidecar 用于分发。

进程服务 用明确指定的本地地址和端口启动后端:

command
.arg("serve")
.arg("--enable-scheduler")
.arg("--host")
.arg(LOCALHOST)
.arg("--port")
.arg(port.to_string());

它还会传入 GOOSE_SERVER__SECRET_KEY,并管理子进程的生命周期。 ACP 命令 和 SDK 展示了应用一侧的连接方式。底层传输请参阅 通过 ACP 使用 goose。

自己运行​

你需要 Tauri 桌面构建所需的 Rust、JavaScript 和原生依赖。设置过程也会构建固定版本的 goose 后端,所以首次构建需要一些时间。各平台的具体要求请参阅 README 和 开发命令。

git clone https://github.com/block/berd.git
cd berd
just setup
just dev

在启动智能体会话之前,先在应用中配置模型提供商。对于打包构建,仓库中的 打包说明 介绍了如何暂存并包含后端。