跳到正文
GitHub·· 9 天前AI 评分38

Holt:基于 Rust 和 GPUI 的原生桌面编程智能体

Onion-L/holt

AI 导读

Holt 是一款用 Rust 和 GPUI 构建的原生桌面编程智能体,单一 Rust agent loop 驱动所有对话,模型服务以 provider 形式接入,不封装其他编程智能体 CLI。它完全本地运行,无云端、无账号、无同步、无遥测,数据仅存于 ~/.holt。目前仅支持 macOS,可从 Releases 下载已签名公证的 DMG,项目仍处于实验性开发阶段。

正文

Holt app icon

A native desktop coding agent built with Rust and GPUI.

English · 简体中文

License: GPL-3.0 Rust stable

Holt — transcript alongside a branch-changes diff

Warning

Holt is a work in progress — an experimental project under active development. Expect rough edges and breaking changes.

Why Holt

Why not.

  • One agent. Holt is the agent — a single Rust agent loop drives every chat. Model services plug in as providers; Holt doesn't wrap other coding-agent CLIs.
  • Local only. No cloud, no accounts, no sync, no telemetry. Chats, transcripts, and credentials live under ~/.holt and nowhere else.
  • One process. No daemon, no CLI. A native desktop app that embeds its backend in-process over a typed memory-RPC transport.

Features

  • Bring your own model — built-in providers plus custom providers and model records, editable live in Settings without a restart.
  • Permission modes — per chat: confirm each change, let a model review pass judge it, or grant full access. Reads are never gated.
  • Plan mode — the agent inspects the workspace and writes a plan for approval before touching anything.
  • Review every Turn — per-Turn change sets with diffs, plus branches, checkout diffs, history, and fetch on a built-in git2 backend.
  • Extensible — skills from the standard skill roots, MCP servers, subagents, and pluggable web search (Zhipu, Bocha, Brave).
  • Built-in terminals — chat-owned terminal panes next to the transcript.

Install

Grab the signed and notarized DMG for your Mac (Apple Silicon or Intel) from Releases. macOS only for now.

Then open Settings → Providers and add an API key before starting a run.

Build from source

Requires macOS and stable Rust (pinned in rust-toolchain.toml).

cargo run --release -p holt

Data lives under ~/.holt; override with HOLT_DATA_DIR.

Architecture

gpui UI ── in-memory RPC (ndjson envelopes) ── LocalEngine + core agent loop

The UI links crates/engine only to assemble the local backend at bootstrap; no feature code calls backend logic. Everything else goes through the typed contract in crates/rpc; crates/engine adapts crates/core (pi-core-rs) behind the RpcService trait, so another backend can slot in without touching the UI.

Crate Role
apps/holt The binary. No CLI.
crates/ui The gpui viewport — agent-agnostic, renders MessageParts from holt-doc.
crates/engine The backend adapter: agent loop, providers, credentials, git, skills, terminals.
crates/core The agent core (pi-core-rs): providers, streaming, agent loop, harness. Holt-owned Rust port of pi v0.84.4.
crates/rpc The typed control plane: framing, dispatch, memory transport.
crates/proto Shared protocol and domain types.
crates/doc Transcript and History wire types (MessagePart, TranscriptFrame). Data on disk is plain JSON/JSONL, owned by crates/engine.
crates/theme, crates/syntax Theme library and syntax highlighting.

See ARCHITECTURE.md for the full RPC contract and the design decisions behind it.

Development

cargo fmt --all --check
cargo check --workspace
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

Contributing

See CONTRIBUTING.md — and please follow the Code of Conduct. Found a security issue? Report it privately via SECURITY.md.

Credits

The beautiful UI comes from comet ❤️

来源:GitHub · github.com