登录 注册

rune (原生UI开发框架)

去点 Star
其他
6,144
Stars
0
Forks
0
Watchers
0
Open Issues
未知
许可证
Rust
语言
创建时间
最近更新

项目能做什么

跨平台 GPU 渲染的 Rust 原生 UI 框架,内置渲染与布局,支持无头模式让脚本或 Agent 自动化驱动应用。
来源:AI 基于仓库事实生成 · 内容以仓库实际 README 为准

使用说明 查看原始 README 原仓库文档

Rune 中文使用说明

项目简介

Rune 是一个基于 Rust 开发的原生 GPU 渲染 UI 框架,支持 macOS、Windows、Linux 以及 Web 端。它内置了自研的渲染器、文本系统、布局引擎以及弹簧动画(springs)。

该框架的一大特色是所有应用均支持无头模式(headless),编码智能体(coding agent)可以直接将界面渲染为 PNG 图片、导出元素树(element tree),并通过脚本化输入对其进行驱动和调试。


核心功能

  • 跨平台原生渲染:支持 macOS、Windows、Linux 和 Web,全部采用 GPU 渲染。
  • 全套自研子系统:内置渲染器、文本排版、布局管理和弹簧动力学动画支持。
  • 无头(Headless)驱动与 Agent 友好:支持在无显示界面的环境下直接导出 UI 为 PNG 图像,或者导出元素树结构,便于自动化测试或 AI Agent 进行检查与交互。
  • 声明式 UI 代码结构:支持链式调用与状态绑定(如主题、大小、圆角、动画和点击事件等)。

适合谁用

  • 想要构建跨平台高性能 GPU 渲染 UI 的 Rust 开发者。
  • 正在开发 AI Agent、需要让智能体自主编写 UI 并进行无头视觉验证的开发者。

安装步骤

将 Rune 作为 Git 依赖添加到项目的 Cargo.toml 中:

[dependencies]
rune = { git = "https://github.com/anomalyco/rune", rev = "<dev rev>" }

注意:Rune 目前处于预发布阶段(pre-release)。建议固定 dev 分支的具体提交版本号(rev);官方承诺 dev 分支的历史记录不会被重写(never rewritten)。

注:完整的编译环境依赖与运行步骤原文未详细说明,可参考原仓库的 examples/hello 和 crates/rune/README.md。


配置说明

  • 依赖版本配置:在 Cargo.toml 中配置 rev = "<dev rev>",填入具体的提交哈希。
  • 其他系统级配置或框架参数,此部分原文未说明,请查看原仓库。

常见问题

1. 如何配合 AI Agent(如编码智能体)使用?

可以直接将该仓库提供给你的编码智能体,并要求它: 1. 参考 examples/hello 和 crates/rune/README.md 开始构建。 2. 在无头(headless)模式下渲染 PNG 并检查元素树,以此来验证其生成的代码效果。

提示词参考示例:

Build me a with Rune (github.com/anomalyco/rune). Start from examples/hello and check your work headlessly.

2. 项目接受外部 Pull Request 吗?

仓库明确说明不接受 PR。如果有 Bug 报告或功能想法,可以让你的 Agent 在 GitHub Issues 提交 issue 描述问题,官方团队通常会快速处理。

原始 README 摘录(英文原文,节选前 3000 字符)
# Rune

A native GPU-rendered Rust UI framework for macOS, Windows, Linux and the web, with its own renderer, text, layout and springs.

Every app can run headless, so an agent can render to PNG, dump the element tree and drive it with scripted input.

<p align="center">
  <a href="demo/rune.mp4">
    <img src="demo/rune-poster.png" alt="Rune in motion: real apps, rune-kit components and GPU effects" width="100%">
  </a>
</p>

<p align="center">
  <img src="demo/opencode/session-top.png" alt="A coding agent app built with Rune" width="100%">
</p>

<p align="center">
  <img src="demo/light/chat.png" alt="Lit chat interface" width="49%">
  <img src="demo/kit/diff-split-dark.png" alt="Split diff component" width="49%">
</p>
<p align="center">
  <img src="demo/fx/liquid-metal.png" alt="Liquid metal effect" width="49%">
  <img src="demo/settings-dark.png" alt="Settings window" width="49%">
</p>

```rust
fn view(s: &State, _: &mut Cx<State>) -> El {
    let t = tok::theme(true);
    let label = text(if s.on { "Lights on" } else { "Lights off" })
        .font(type_::TITLE).color(t.text);
    let knob = el().key("knob").size(18.0, 18.0).radius(9.0).fill(t.knob)
        .absolute(if s.on { 18.0 } else { 2.0 }, 2.0);
    let switch = el().key("switch").role("switch").label("Lights").checked(s.on)
        .focusable(true).size(38.0, 22.0).radius(11.0)
        .fill(if s.on { tok::accent(0, true) } else { t.control_off })
        .motion(motion::SNAPPY)
        .on_press(|s: &mut State| s.on = !s.on)
        .child(knob);
    col().w_full().h_full().center().gap(16.0).fill(t.bg).child(label).child(switch)
}
```

## Use it with your agent

Give your coding agent this repo. Have it start from [`examples/hello`](examples/hello) and [`crates/rune/README.md`](crates/rune/README.md), then check its own work headlessly by rendering PNGs and inspecting the element tree.

> Build me a <thing> with Rune (github.com/anomalyco/rune). Start from examples/hello and check your work headlessly.

## Add it

```toml
rune = { git = "https://github.com/anomalyco/rune", rev = "<dev rev>" }
```

Rune is pre-release. Pin a rev of `dev`; `dev` is never rewritten.

[Docs](crates/rune/README.md) · [Components](crates/rune-kit/README.md) · [Examples](examples) · [Changelog](CHANGELOG.md)

## Contributing

We don't take pull requests. Have your agent [open an issue](https://github.com/anomalyco/rune/issues)
describing the bug or idea, and our agents usually turn it around fast.

MIT, © Anomaly.
阅读完整原文

商业机会分析 AI 生成

Agent-UI 自动化视觉回归与测试平台

产品构想基于 Rune 的 Headless PNG 渲染与元素树导出能力,打造专门针对 AI Agent 生成 UI 代码的自动化验证、视觉回归与交互测试 SaaS 服务。
核心功能无头环境一键跑测、视觉差异对比(Visual Diff)、元素树结构校验、脚本化交互回放、Agent 自我修复上下文接口。
目标用户开发 Coding Agent 的创业团队、在 CI/CD 中集成原生应用 UI 自动化测试的 Rust 团队。
难度/周期中等 · 1 - 2 个月 · 成本:轻量云服务器与对象存储成本(初期月均 < $50)。
收费模式按测试运行次数/渲染图片量采用免费增值订阅制(Freemium SaaS)。
竞争风险Rune 仍处于 pre-release 阶段,API 稳定性风险较高,底层渲染变化可能导致测试工具频繁适配。
依据 已验证事实

Rune-Pro 高级商业组件与企业级设计系统

产品构想针对原生 Rust 桌面应用生态缺乏高质量设计资产的痛点,基于 rune-kit 扩展一套符合现代审美、支持 Agent 调用的专业级商业组件库与模板套件。
核心功能高级图表组件、富文本与复杂代码编辑器、数据表格、复杂弹簧动效预设、Agent Prompt 友好的组件调用模式与设计规范。
目标用户独立独立开发者、中小型软件团队、需要快速交付高颜值桌面客户端的开发者。
难度/周期高 · 2 - 3 个月 · 成本:设计与开发工时为主,极低服务器成本。
收费模式一次性买断授权或年付商业 License(类似 Tailwind UI / shadcn Pro)。
竞争风险Rust 桌面生态规模相比 Web 生态较小,商业购买转化率需要市场验证。
依据 AI推测

基于 Rune 的垂直高性能本地 Coding Agent 客户端

产品构想利用 Rune 原生 GPU 渲染和低资源占用特性,构建替代臃肿 Electron 的原生代码审阅、Diff 比对与本地模型驱动的编程工作台。
核心功能极致流畅的分屏 Diff 渲染(README 中已展示 demo/kit/diff-split)、本地 LLM 交互面板、毫秒级启动与极低内存常驻。
目标用户注重性能和内存占用的资深程序员、隐私敏感型代码审阅者、重度 Git/Diff 用户。
难度/周期高 · 3 - 4 个月 · 成本:本地运行为主,基础设施成本基本为零(推测)。
收费模式个人基础版免费,高级工作流功能(如多模型接入、复杂项目管理)采取买断制或订阅制。
竞争风险面临来自 VS Code、Cursor 等成熟生态的激烈竞争,功能丰富度补齐周期长。
依据 尚需验证的假设
AI 基于仓库公开数据分析生成,含推测成分,不构成收益承诺。
报告会保存到 个人中心

竞品与相似项目 GitHub Search 真实检索

项目中文简介Stars语言
runelite/runelite Old School RuneScape 的开源游戏客户端。 5,523 Java
simonbs/Runestone 支持语法高亮与行号等特性的高性能 iOS 纯文本编辑器。 3,241 Swift
anticensority/runet-censorship-bypass 用于绕过俄罗斯网络审查的浏览器扩展插件。 2,421 JavaScript
rune-rs/rune 专为 Rust 设计的可嵌入动态编程语言。 2,406 Rust
google/rune 用于探索提升安全性和效率特性的实验性编程语言。 1,942 C
svecosystem/runed 专为 Svelte 应用打造的实用工具库集合。 1,863 TypeScript
以上为通过 GitHub 官方 Search API 检索的相似项目,功能差异与优劣势需进一步人工确认,配置 AI 后可生成对比分析。

项目优势与风险

技术成熟度创建于 ,最近推送
社区活跃Star 6,144 / Fork 0 / Issue 0(数据支持,可自行核实)
许可证未检测到(需人工确认)
主要风险上游项目方向可能变化;同赛道竞争者较多(见竞品表);热度与需求不完全等价

安装与使用

快速开始(以仓库 README 为准)
git clone https://github.com/anomalyco/rune.git
cd rune
# 请阅读仓库 README 获取确切安装步骤(依赖、配置、启动命令)
阅读原仓库文档
术语说明:Docker=应用容器(把程序和依赖打包运行);API Key=调用外部服务的密钥;Git Clone=把仓库代码下载到本地。常见错误:API Key 未配置 / 端口占用 / 数据库连接失败,多数项目在 README 的 Troubleshooting 章节有说明。