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

来自 Berd 仓库的一张引导图。
巧妙之处
你可以构建不同的桌面产品,而不必 fork 智能体运行时。Berd 掌管自己的界面、应用生命周期和打包。内置的 goose 后端在 ACP 边界之后提供智能体的执行能力。
后端固定在某个特定的修订版本上,因此分发包可以带上已知配套的前端和后端,而不必依赖用户 PATH 中碰巧存在的 goose 版本。同一个仓库里还有分发钩子,用于托管设置和私有资源,而无需把这些资源放进公开的代码树。
这是应用层面的路线:使用完整的 goose 二进制文件,而不是用单独的 GDK crate 拼装运行时。
工作方式
- 在设置阶段,准备
goose-backend.lock.json中记录的 goose 修订版本,并构建内置的 TypeScript SDK。 - 在本地端口上启动一个长期运行的
goose serve子进程,并为每次启动生成独立的认证密钥。 - 通过 WebSocket 连接它的
/acp端点,并把会话更新路由到应用中。 - 把后端打包为 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
在启动智能体会话之前,先在应用中配置模型提供商。对于打包构建,仓库中的 打包说明 介绍了如何暂存并包含后端。