Newshot

Show HN:一款本地优先的桌面 AI 智能体,不用 Electron,支持任意 LLM 端点

Translation(model translation, not the source's own text)

提醒一下:这个项目(包括 README)都深受 AI agent 影响。如果你不喜欢这种带有 LLM 味道的行文,请提前知悉。等事情稳定下来后,会补上由人撰写的文档。

自带大脑

一个原生桌面 AI 同事,配合你已经在跑的模型使用。把 byob 指向任何 OpenAI 兼容的端点(llama-server、Ollama、LM Studio、vLLM 或托管 API),它就能在你的文件夹里和你一起干活:读写文件、运行代码,并在聊天窗口旁边构建电子表格、图表、文档和小型应用。

byob 是桌面软件,而不是塞在窗口里的网页:一个程序同时支持 Linux、macOS 和 Windows,在 GPU 上自行绘制界面,不依赖 Electron。

byob 正在构建一个双工作表的预算工作簿:模型写入时,电子表格在聊天窗口旁逐步填充
byob 正在构建一个双工作表的预算工作簿:模型写入时,电子表格在聊天窗口旁逐步填充

针对本地模型(llama.cpp)实时录制;等待模型的时间已剪掉。

它能做什么

  • 真正的桌面应用。单个文件夹,完整版下载约 60 MB(精简版 13 MB),带原生文件对话框、拖放和键盘快捷键。浏览器界面的安排与常见做法相反:同一个原生界面编译成 WebAssembly,因此一个标签页或你的手机能获得完全相同的应用,并共享同一会话、实时同步。
  • 你的模型,你的机器。不捆绑推理、不需要账号:任何 OpenAI 兼容的 URL 都行。首次运行会自动发现常见端口上的本地服务器;当服务器不支持工具调用时,回退到基于提示词的调用。
  • 聊天旁的产物。电子表格(xlsx/csv)、图表、Markdown 文档、图像和 HTML 应用,每种都带版本历史。
  • 有缰绳的手。文件工具、run_command 和 run_python(在 Linux 上沙箱运行);带 diff 的审批卡片;按轮次撤销。
  • 会读、会搜、会记。PDF、Word 和 PowerPoint 文件;图像,供能看图的模型使用;网页搜索与页面阅读(默认 Exa,也可用你自己的 SearXNG、Brave 或 Tavily);跨聊天以纯 Markdown 保存的笔记;长任务的步骤计划。
  • 工作区。一个带有自己设置的文件夹,也是命令运行的地方:本机、Nix dev shell 或 Docker/Podman 容器。设置按全局 → 工作区 → 聊天分层。
  • 随处可用。byob --serve 把该会话同时开放给浏览器;配合 tailscale serve 就能在手机上用。
  • 一切都是插件。提示词、核心工具、产物、电子表格、子代理和压缩都是捆绑插件,使用与所有人相同的 API。插件可以添加工具、绘制 UI(面板、标题栏小标签、设置、卡片)、挂接一轮对话的每个阶段,并运行长期驻留的后端。byob 能在聊天中编写并修复自己的插件。
“给我做一个带计数器面板的插件”:byob 写出它,读取自身的加载错误,修复它们,然后面板出现。HTML 应用内联运行,在桌面上(byob 自带一个独立的 Servo 渲染进程)和浏览器界面中都是如此。
把 CSV 作为电子表格打开;每次写入都会重新计算,并把错误报告回模型。首次运行:选择一个它发现的服务器,或一个预设。
向 byob 要一个计数器插件:它写出插件,面板随即出现在聊天窗口旁
向 byob 要一个计数器插件:它写出插件,面板随即出现在聊天窗口旁
一个小费计算器 HTML 应用内联渲染在聊天中
一个小费计算器 HTML 应用内联渲染在聊天中
sales.csv 作为电子表格打开,并新增了一列增长
sales.csv 作为电子表格打开,并新增了一列增长
“连接模型”界面,带有预设和本机上发现的服务器
“连接模型”界面,带有预设和本机上发现的服务器

手机宽度下的浏览器界面。

byob 的浏览器界面在手机尺寸屏幕上,显示一个图表
byob 的浏览器界面在手机尺寸屏幕上,显示一个图表

安装

文章标题:Show HN: A local-first AI agent for the desktop, no Electron, any LLM endpoint

正文:


        cargo install byob                          # with the browser UI built in
cargo install byob --no-default-features    # slim: desktop only, a few MB smaller
nix build github:Scronkfinkle/byob          # or .#byob-slim
      

Linux、macOS 和 Windows 的发布归档在 releases 页面:byob-… 包含全部内容(浏览器 UI 和 byob-artifact-host,后者用于内联渲染 HTML 应用;请把它放在 byob 旁边),byob-slim-… 则只有 byob。cargo install 不会构建渲染器;缺少它时,HTML 应用会通过一次点击在浏览器中打开。在 Linux 上,byob 不需要 GUI 工具包(文件对话框通过 XDG desktop portal 或 zenity 处理;两者都没有时,可以把文件拖到窗口上),渲染器使用系统的 OpenGL(Mesa)绘制。

在 macOS 上,这些构建尚未由 Apple 开发者签名。从终端获取时,发布归档不会触发 Gatekeeper(在 Intel Mac 上请使用 x86_64 而不是 aarch64):


        v=0.3.4; curl -L https://github.com/Scronkfinkle/byob/releases/download/v$v/byob-$v-aarch64-apple-darwin.tar.gz | tar xz
./byob-$v-aarch64-apple-darwin/byob
      

或者获取 byob-…-apple-darwin.dmg,把 byob.app 拖进 Applications。若用浏览器下载,macOS 起初会拒绝打开它:先尝试一次,然后打开 系统设置 → 隐私与安全性 → 仍要打开(在 macOS 14 及更早版本上,右键 → 打开),或运行 xattr -dr com.apple.quarantine /Applications/byob.app。从 Finder 打开时,byob 会从你的主文件夹启动,并找到你 shell 中的工具(Homebrew、Nix)。

使用


        byob                                        # desktop window
byob --serve                                # + browser UI on http://127.0.0.1:7470
byob --headless                             # browser UI only, no window
byob --inference-url http://host:8080/v1 --model local
BYOB_API_KEY=sk-... byob                    # for hosted endpoints
byob --workspace ~/projects/taxes           # start in the workspace for that folder

tailscale serve 7470                        # reach it from any device on your tailnet
byob --headless --allow-user [email protected] # only admit that Tailscale login
      

首次运行时,byob 会显示 Connect a model:它在这台电脑常用端口上找到的服务器(llama-server 8080、Ollama 11434、LM Studio 1234、vLLM 8000)、这些服务器和托管 API 的预设,以及一个 Test connection 按钮。之后,连接设置位于 Settings 的顶部(或点击标题栏中的状态圆点)。

聊天按 workspace 分组。+ Workspace 会创建一个(新文件夹或已有文件夹),并选择命令运行的位置。workspace 的 … 菜单和聊天标题旁的滑块会显示哪些设置是继承的、哪些是在此处设置的:model、approvals、tool calling、compaction、subagents、extra instructions。

插件

Settings → Plugins 列出当前视图中的聊天可以使用的插件。任何内置插件都可以 fork 到你自己的 plugins 并编辑(Fork to edit),或者直接让 byob 修改或编写一个:它具备编写工具,损坏的插件会把错误返回给模型,以便模型修复它。

  • docs/views.md:视图树,即插件绘制的 UI(panes、chips、cards、grids)。
  • docs/plugins-backend.md:长驻后端(Python 或 Rust)与 hooks。
  • docs/environments.md:命令在哪里运行,以及如何添加你自己的环境。
  • demos/:上手导览,每个都在一次性 profile 中运行(demos/run.sh todo)。
  • examples/plugins/todo-demo:一个小插件,带有一个后端、一个 pane 和若干 cards,可供复制。

开发


        nix develop          # or: direnv allow
cargo run -p byob    # launch the app
cargo xtask web      # build the browser UI; the next `cargo build` embeds it
cargo xtask ci       # full gate: fmt, clippy, tests, layers, no-tokio, wasm
nix build            # release package (byob + bundled web UI + the artifact host)

# HTML artifacts inline on the desktop: the Servo helper is its own workspace (AGENTS.md §3)
(cd host/artifact-host && cargo build --release)   # scripts/headless.sh picks it up
      

desktop GUI on a virtual display, scripted, with a screenshot (HEADLESS_RECORD=x.mp4 records it)

scripts/headless.sh --inference-url http://localhost:8080/v1 --model local --send "hi" --screenshot /tmp/byob.png scripts/readme-media.sh # regenerate this README's pictures

live test against a real server

BYOB_LIVE_URL=http://localhost:8080/v1 cargo test -p byob-llm -- --ignored

规则见 AGENTS.md,设计见 docs/architecture.md,后续计划见 ROADMAP.md。byob 起初是对 hob 的重写,hob 是更早的一个桌面协作程序,内置了 llama.cpp;byob 去掉了内置推理。

以 MIT OR Apache-2.0 许可协议授权。

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by HN AI
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗