amajorai/ryu

GitHub: amajorai/ryu

Ryu 是一个开源的 AI Agent 编排与治理平台,通过统一 Gateway 解决多 Agent 协作、成本控制和安全管理问题。

Stars: 36 | Forks: 0

Ryu — The open control layer for AI agents

Ryu

用于 agent 编排与人机协作的开放平台。内置工具、安全、内存、成本节约与路由等功能。

900k skills  400+ models  30+ agents  2.8M+ local models

npm @ryuhq/client  npm weekly downloads  GitHub release  GitHub downloads  GitHub stars

Alpha  Docs  Download  Discord Open source

## 关于 Ryu 你的 agent 互不知道对方做了什么。它们消耗着你已经付费的订阅。只需一次配 置错误就可能导致数据泄露。而且,搭建它们需要数周的时间来连接线路、处理 密钥和编写胶水代码。 Ryu 解决了这些问题。它是围绕任何 agent 的控制层 —— OpenAI、Claude Code、 Codex、Pi、OpenClaw、Hermes 以及任何兼容 OpenAI 的 runtime。每一次模型调用 都会经过一个 Gateway,用于处理路由、防火墙、PII/DLP、预算、评估 和审计。Agent 共享上下文,订阅叠加使用,且安全性默认开启。本地优 先,加密,无遥测。**与一切协同。不锁定于任何事物。** ## 为什么选择 Ryu - **互相知悉彼此操作的 Agent。** 跨越所有界面共享内存和上下文 —— 桌面端、移动端、CLI、机器人、Web。 - **充分利用你的订阅。** 将 Claude Code、Codex 和 Gemini 指向同一个 Gateway。智能路由将廉价任务保持在本地模型上;云层仅处理需要它的任务。 - **开箱即用的安全性。** 防火墙、prompt 注入防护、PII/DLP 脱敏、按 agent 划分的预算以及完整的审计跟踪 —— 并非后期附加,而是原生内置。 - **一键设置。** 从目录中选择一个 agent,安装并运行。无需进行 MCP 配置,无需寻找 API key,无需长达一周的集成。 - **与一切协同,不锁定于任何事物。** 每一层 —— 模型、embedder、reranker、engine、RAG 策略、sandbox —— 都可以通过一个注册表进行替换。自带(BYO)agent、key 和订阅。 ## 架构 Ryu architecture: any surface routes through the Gateway, into Core, out to any engine, and back **唯一的设计原则:** 如果代码决定*运行什么*(哪个 agent、session、workflow、tool),那它就属于 **Core**。如果它决定*什么是允许的、共享的、度量的或付费的*,那它就是 **Gateway**。Core 从不内联执行策略 —— 它将每一次模型调用路由至 Gateway。 ### 分解 Core 和 Gateway 从单体架构分解为一个包含 **~75 个 crates** 的虚拟 Cargo workspace:52 个基础 + app-backend 能力 crates(43 个 `crates/ryu-*` 能力 —— crypto、 vault、下载、engine、RAG、memory、搜索、durable、语音、图像、sandbox…… + 9 个 app backend), 11 个 gateway-stage crates(`crates/ryu-gw-*`),以及 ghost/shadow 自动化 crates。除此之外,还有 21 个位于 `apps-store/*` 下的独立应用(其中 16 个带有 UI 伴侣)。`apps/core` 从约 195k 缩减至约 143k LoC(-27%);目前约 88k LoC 的代码存在于可替换的 crates 中。 每一层都是可替换的默认选项,绝不构成锁定 —— 聊天模型、embedder、reranker、TTS/STT、 图像生成、engine、RAG 策略、durable engine、sandbox。本代码仓库包含 **open-core 子集**(`apps/core`、`apps/gateway`、CLI/TUI 客户端以及下方列出的公共能力 + SDK crates) **外加 source-available 层** —— `apps/desktop`、`apps/island` 以及共享的 UI 包 —— 它们遵循 [`LICENSE-COMMERCIAL.md`](./LICENSE-COMMERCIAL.md)。Web、server、mobile、 extension 和 identity/billing 相关部分仍为专有财产,不包含在此镜像中。 ## 快速开始(自托管) ### 安装(预编译二进制文件) 一行命令即可将无头技术栈 —— `ryu-core`、`ryu-gateway`、`ryu-cli` —— 拉取到 `~/.ryu/bin` 并将其添加到你的 PATH 中。非常适合服务器、容器和 CI。 **macOS & Linux**(x86_64 Linux,Apple Silicon macOS): ``` curl -fsSL https://raw.githubusercontent.com/amajorai/ryu/main/install.sh | sh ``` **Windows**(x86_64,PowerShell): ``` irm https://raw.githubusercontent.com/amajorai/ryu/main/install.ps1 | iex ``` 然后只需运行 CLI —— 它会自动引导,如果没有正在运行的实例,它会启动一个本地 Core(这将随之启动 Gateway + 一个完全本地的模型栈): ``` ryu-cli # fetches + starts Core on first run, then attaches — no API key ``` 或者自行启动节点并将客户端指向它: ``` ryu-core # starts the Gateway + local model stack on :7980 ``` 预编译目标:Linux x86_64、macOS Apple Silicon、Windows x86_64。在 Intel Mac 或 ARM Linux 上,请按照下文从源码构建。使用 `RYU_INSTALL_DIR` 覆盖安装目录,或使用 `RYU_VERSION=v0.0.4` 固定版本。 ### 从源码构建 ``` cd apps/core && cargo build --release # ryu-core :7980 cd apps/gateway && cargo build --release # ryu-gateway :7981 ``` 将任何兼容 OpenAI 的客户端指向 Gateway 的 `/v1/chat/completions`。 首次运行时,Ryu 会下载一个完全本地的技术栈(用于聊天的 llama.cpp 和 Gemma 4、nomic embeddings、用于语音的 whisper),因此它无需任何 **API key** 即可工作。 后续可替换任何组件:模型、embedder、engine 和 RAG 策略均可通过配置完成。 TypeScript 单元(SDK、文档)使用 [Bun](https://bun.sh): ``` bun install && bun run build ``` ### 一键部署 在容器主机上搭建托管的节点(Core + Gateway)。每个节点都会构建 [`Dockerfile`](./Dockerfile):Core 在 loopback 上运行技术栈并管理 Gateway, 因此仅发布 Core 的端口。 [![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/amajorai/ryu)   [![Deploy on Railway](https://railway.com/button.svg)](https://railway.com/new)   [![Deploy to DigitalOcean](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/amajorai/ryu/tree/main) 或者你自行运行: - **Docker Compose** — `docker compose up --build` ([`docker-compose.yml`](./docker-compose.yml)):Core 运行在 `:7980`,Gateway 运行在 `:7981`,模型状态保存在具名 volume 中。 - **Fly.io** — `fly launch --copy-config` 然后 `fly deploy` ([`fly.toml`](./fly.toml))。 文档站点 (`apps/fumadocs`) 是一个 Next.js 应用,可一键部署到 Vercel — [![Deploy docs to Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/amajorai/ryu&root-directory=apps/fumadocs&project-name=ryu-docs)。Vercel 是 serverless 的,无法托管长期运行的 Core/Gateway;后端请使用上方的容器主机。 ## 内置默认项(均可替换) - **Engine/model:** llama.cpp + Gemma 4 — 可在大多数机器上运行,无需 key。 - **默认 agent:** **"Ryu"** = Pi 加上顶层的 Gateway(旗舰版的“引擎外的车身”)。Claude Code、Codex、Gemini CLI、OpenClaw、Hermes 以及其他约 18 个 ACP agent 可通过目录选择性开启。 - **RAG:** 本地 nomic embeddings + BGE reranker;vector + GraphRAG。 - **模态:** 聊天、图像生成、TTS、STT — 均为一等公民,全部可替换。 - **标准:** Agent Skills + MCP + ACP,全为一等公民。 ## 代码仓库布局 此镜像提供**两个层级**,区别很重要。每个单元都有自己的 `LICENSE`;完整映射见 [`LICENSING.md`](./LICENSING.md)。 1. **开源** — 编排引擎、Gateway、终端客户端以及 公共能力 + SDK crates。Apache-2.0(Gateway:AGPL-3.0,Raycast:MIT)。 2. **Source-available** — `apps/desktop`、`apps/island` 以及它们 无法脱离编译的共享 UI 包,遵循 [`LICENSE-COMMERCIAL.md`](./LICENSE-COMMERCIAL.md)。 **此部分并非开源。** 你可以阅读、审计、在本地构建并为之贡献;但如果没有官方二进制文件,你不得将其用于生产环境、重新分发、作为服务提供或利用其构建竞争产品。 Web、server、mobile、extension 和 identity/billing 相关部分(© 2026 A Major Pte. Ltd.)保持闭源,**不**属于此代码仓库的一部分。 **Ryu 名称和标志不受此处任何文件授权** — 任何允许的分支必须 重新命名。详见 [`TRADEMARK.md`](./TRADEMARK.md)。构建说明: [`docs/BUILDING.md`](./docs/BUILDING.md)。 ### Apps — Apache-2.0(Gateway:AGPL-3.0) | 单元 | 描述 | |---|---| | [`apps/core`](./apps/core) | 编排引擎,真正的本地后端 (Rust/Axum, :7980) | | [`apps/gateway`](./apps/gateway) | LLM 控制层:路由、防火墙、缓存、评估、审计 (Rust, :7981) | | [`apps/cli`](./apps/cli) | Core 的终端客户端 (Rust/ratatui) | | [`apps/tui`](./apps/tui) | Bun/OpenTUI 终端客户端 — 通过纯 HTTP/SSE 连接到运行中的 Core 节点 | | [`apps/fumadocs`](./apps/fumadocs) | 文档站点 + 交互式 OpenAPI (Next/Fumadocs) | | [`apps/mcp`](./apps/mcp) | 将运行中的 Core 节点暴露给任何 MCP 主机的 MCP server (TS) | | [`apps/skills`](./apps/skills) | SKILL.md agent 技能,用于教导编程 agent 设置并驱动 Ryu | | [`apps/plugins`](./apps/plugins) | 用于 Ryu 的 Claude Code / Codex 插件定义 | | [`apps-store/voice/sidecar`](./apps-store/voice/sidecar) | Python TTS sidecar (`ryu_tts`),由 Core 管理 | | [`apps-store/finetune/sidecar`](./apps-store/finetune/sidecar) | Python LoRA/QLoRA fine-tuning sidecar (`ryu_unsloth`) | ### 能力与 SDK crates — Apache-2.0 | 单元 | 描述 | |---|---| | [`crates/ryu-kernel-contracts`](./crates/ryu-kernel-contracts) | 由 Core + SDK 共享的纯数据 `plugin.json` 清单模型 | | [`crates/ryu-crypto`](./crates/ryu-crypto) | 静态加密 `FieldCipher` + 可替换的 master-key 保管 | | [`crates/ryu-vault`](./crates/ryu-vault) | 身份保险库 — 加密密封的按域划分的凭证存储 | | [`crates/ryu-downloads`](./crates/ryu-downloads) | `DownloadCenter` — 支持断点续传、校验和验证的组件获取 | | [`crates/ryu-webhook-ingress`](./crates/ryu-webhook-ingress) | 用于入站第三方 webhook 的公共可达性接缝 | | [`crates/ryu-usage`](./crates/ryu-usage) | 按 agent 划分的订阅使用量/速率限制计量 | | [`crates/ryu-sdk{,-ffi,-napi,-uniffi}`](./crates) | SDK 内核 + C-ABI/Node-API/UniFFI 语言绑定 | | [`crates/ghost-{core,permissions}`](./crates) | 桌面自动化原语 + OS 权限检查 | ### TypeScript 包 — Apache-2.0 | 单元 | 描述 | |---|---| | [`packages/sdk`](./packages/sdk) · [`create-ryu-app`](./packages/create-ryu-app) | Ryu 的开发者 SDK(类型化的 Runnable 构建器)+ 项目脚手架 | | [`packages/client`](./packages/client) | `@ryuhq/client` — 用于将 Core agent 嵌入任何应用的类型化客户端 | | [`packages/core-client`](./packages/core-client) | `@ryuhq/core-client` — 平台无关的 Core 节点客户端 (tui/native) | | [`packages/protocol`](./packages/protocol) | `@ryuhq/protocol` — 与表面无关的通信格式契约 | | [`packages/ryu-apps`](./packages/ryu-apps) | `@ryu/apps` — 内置的 widget-app workspace,嵌入到 Core 中 | | [`packages/config`](./packages/config) · [`env`](./packages/env) 共享的 TypeScript 配置 + env schema | ## 资源占用 原生层作为少量小型的独立 Rust 二进制文件发布:无需解释器、 无需 runtime、无需 Electron、无需 Docker。下面的每一个数字都是由 [`scripts/benchmark.mjs`](./scripts/benchmark.mjs) 生成的;可通过 `node scripts/benchmark.mjs --build --runtime` 进行复现。 | 组件 | 发布二进制文件 | Crates | 源码 (LOC) | 空闲 RSS | 空闲 CPU | | --- | --- | --- | --- | --- | --- | | [`apps/core`](./apps/core) | 44.2 MB | 687 | 105,168 | n/a | n/a | | [`apps/gateway`](./apps/gateway) | 18.7 MB | 405 | 20,658 | 17.0 MB | 0.0% | | [`apps/shadow`](./apps/shadow) | 21.5 MB | 604 | 16,410 | n/a | n/a | | [`apps/ghost`](./apps/ghost) | 12.8 MB | 428 | 3,427 | n/a | n/a | | [`apps/cli`](./apps/cli) | 5.9 MB | 235 | 10,497 | n/a | n/a | _空闲 RSS 和 CPU 仅针对 Gateway 进行采样(一个具有干净空闲状态的无状态代理),其空闲 CPU 实际上为零。Core 在首次运行时会启动一个完整的本地技术栈,而捕获/自动化工具(Shadow、Ghost)和 CLI 没有稳定的空闲状态,因此它们仅报告大小/依赖项/LOC。在 `win32` 上测量。_ ## 基础组件 — 每一个 crate 和 package **78 个基础组件 · 290,170 LoC · 9 MB 源码。** 大小和代码行数仅根据源文件测量(不包含 `node_modules`、`target` 或构建输出),并由 `scripts/inventory.mjs` 重新生成。 #### Core 能力 crates — 36 个包 · 52,355 LoC 构成 Core 的可替换基础组件。 | 包 | 语言 | LoC | 大小 | 描述 | |---|---|--:|--:|---| | [`ryu-model-catalog`](./crates/core/model-catalog) | Rust | 4,660 | 178 KB | Ryu 的 Hugging Face 模型目录 + 设备契合度判定基础组件:HF 搜索/详情、GGUF 树状结构检查、按节点… | | [`ryu-spaces`](./crates/core/spaces) | Rust | 4,336 | 184 KB | Ryu 的 Spaces 基础组件:命名文档集合,带有 sqlite-vec (`vec0`) 向量存储、内容寻址的 b… | | [`ryu-sandbox`](./crates/core/sandbox) | Rust | 4,313 | 168 KB | Ryu 的沙盒执行基础组件:在可替换的后端接缝后执行 `run(command\|wasm, spec) -> output` | | [`ryu-kernel-contracts`](./crates/core/kernel-contracts) | Rust | 4,138 | 192 KB | Ryu kernel 契约 | | [`ryu-tool-exec`](./crates/core/tool-exec) | Rust | 3,341 | 134 KB | Ryu 的可编程工具调用 (PTC) 代码执行沙盒基础组件:带有默认拒绝策略的 Deno-subprocess 后端… | | [`ryu-skills`](./crates/core/skills) | Rust | 2,424 | 97 KB | Agent Skills:SKILL.md 注册表、双根目录 (~/.claude + ~/.agents) 扫描、渐进式公开注入块… | | [`ryu-rag`](./crates/core/rag) | Rust | 2,408 | 97 KB | Ryu 的检索增强生成基础组件:embedder(本地哈希 + 兼容远程 OpenAI 的 `/v1/embed…`) | | [`ryu-hardware`](./crates/core/hardware) | Rust | 2,288 | 88 KB | Ryu 硬件协议 (RHP v1) 节点后端 | | [`ryu-webhook-ingress`](./crates/core/webhook-ingress) | Rust | 2,100 | 87 KB | Webhook 入口:可替换的公共可达性接缝,允许绑定到 loopback 的 Ryu Core 接收第三方 web… | | [`ryu-vault`](./crates/core/vault) | Rust | 1,960 | 83 KB | Ryu 的身份保险库基础组件:加密密封的按域划分凭证存储(SQLite `IdentityStore` 和 `e…`) | | [`ryu-composio`](./crates/core/composio) | Rust | 1,815 | 71 KB | Composio 集成编排(Core 端):用户的 Composio 账户接缝 | | [`ryu-collab`](./crates/core/collab) | Rust | 1,802 | 80 KB | Ryu 的权威 CRDT 文档引擎:Core 持久化的服务端副本,用于存储每个实时的协作 Yjs 文档… | | [`ryu-downloads`](./crates/core/downloads) | Rust | 1,396 | 51 KB | Ryu 的 DownloadCenter 组件获取基础组件:进程范围内唯一的注册表,拥有每个组件的生命周期… | | [`ryu-workspace`](./crates/core/workspace) | Rust | 1,356 | 48 KB | Ryu 的 Git 原生 workspace 基础组件:通过 shell 调用 `git`/`gh` 来驱动 git/worktree 的引擎,针对调用者提供的 cwd | | [`ryu-memory`](./crates/core/memory) | Rust | 1,273 | 51 KB | Ryu 的长期记忆基础组件:基于 SQLite、静态加密的 MemoryStore,加上多级作用域的 mo… | | [`ryu-engines`](./crates/core/engines) | Rust | 1,228 | 55 KB | Ryu 的引擎无关推理配置基础组件:按请求划分的 `SamplingConfig` (temperature/top_p/top_…` ) | | [`ryu-realtime`](./crates/core/realtime) | Rust | 1,162 | 48 KB | Ryu 的以 Room 为键的实时分发基础组件:一个传输无关的 RoomRegistry,映射 room_id -> 特定房间的 toki… | | [`ryu-search`](./crates/core/search) | Rust | 987 | 41 KB | Ryu 的对话搜索基础组件:sqlite-vec (`vec0`) 语义 KNN 索引,加上无内容的 FTS5 词法 ind… | | [`ryu-eval-code`](./crates/core/eval-code) | Rust | 977 | 37 KB | Ryu 的 Core 端代码评估器:在隔离环境中运行用户 (input, output, expected, vars) -> {score} 函数… | | [`ryu-mcp-catalog`](./crates/core/mcp-catalog) | Rust | 974 | 38 KB | Ryu 的 MCP server 目录基础组件:从官方 Model Context Protocol 注册表浏览和安装 MCP server… | | [`ryu-knowledge`](./crates/core/knowledge) | Rust | 806 | 31 KB | Ryu 的开放知识格式 (OKF) 基础组件:内存模型、宽松的解析器,以及用于 git-shipp… 的序列化器 | | [`ryu-usage`](./crates/core/usage) | Rust | 786 | 30 KB | Ryu 的按 agent 划分的订阅使用量计量基础组件:读取订阅 CLI(Claude Code / Co…)的 OAuth token | | [`ryu-mesh`](./crates/core/mesh) | Rust | 755 | 30 KB | Ryu 的 Mesh 读取/成型基础组件 (#478 P5–P7):可选的 Tailscale/Headscale 平面的读取端 | | [`ryu-tool-registry`](./crates/core/tool-registry) | Rust | 642 | 25 KB | Ryu 的统一工具目录基础组件 (#474):Contract-1 描述符类型(`ToolKind`/`ToolDescriptor`/`Descri…`) | | [`ryu-crypto`](./crates/core/crypto) | Rust | 599 | 23 KB | Ryu 的静态加密基础组件:FieldCipher (ChaCha20-Poly1305 AEAD,带有自描述的 `enc:v1:` 字段… ) | | [`ryu-predict`](./crates/core/predict) | Rust | 585 | 22 KB | Predict:Ryu 的全系统预测输入大脑 | | [`ryu-vad`](./crates/core/vad) | Rust | 500 | 19 KB | Ryu 的语音活动检测 (VAD) 模态基础组件:`detect(frame) -> speech_prob`,馈入 endpointing/ba… | | [`ryu-stt`](./crates/core/stt) | Rust | 480 | 19 KB | Ryu 的语音转文本 (STT) 模态基础组件:`transcribe(audio) -> text`,带有可替换的引擎接缝(in-proce…`) | | [`ryu-email-send`](./crates/core/email-send) | Rust | 449 | 17 KB | Ryu 自托管的 BYOK SMTP 电子邮件接收器:可替换的出站电子邮件传输(`packages…` 中的 SES agent-inbox 路径) | | [`ryu-activity`](./crates/core/activity) | Rust | 332 | 12 KB | Ryu 的统一活动流基础组件:节点执行操作(监控警报、quest…)的跨模块时间线 | | [`ryu-model-format`](./crates/core/model-format) | Rust | 299 | 11 KB | Ryu 的模型权重格式基础组件:`ModelFormat` 枚举(GGUF/Safetensors/MLX),其 wire/serde 映射,以及 t… | | [`ryu-tracing`](./crates/core/tracing) | Rust | 286 | 10 KB | Ryu 的按运行划分的可观测性追踪基础组件:有序的 span 存储(`Span` v1 契约 + SQLite 支持的 `TraceSto…`) | | [`ryu-image`](./crates/core/image) | Rust | 252 | 10 KB | Ryu 的图像生成模态基础组件:`generate(prompt) -> image`,带有可替换的引擎接缝(本地 stab…) | | [`ryu-durable`](./crates/core/durable) | Rust | 250 | 11 KB | Ryu 的持久执行基础组件:可替换的接缝 `DurableEngine` trait(checkpoint / resume / replay of a run to…) | | [`ryu-storage`](./crates/core/storage) | Rust | 203 | 7 KB | Ryu 的插件拥有的键/值存储基础组件:隔离的、以 `(plugin_id, namespace, key)` 为命名空间的 SQLite KV s… | | [`ryu-notify`](./crates/core/notify) | Rust | 193 | 7 KB | Ryu 的共享通知传递网络类型 + 发送基础组件:可替换的频道目标(webhook / Telegra…) | #### Gateway stage crates — 11 个包 · 13,726 LoC 控制层背后的检测/决策引擎。 | 包 | 语言 | LoC | 大小 | 描述 | |---|---|--:|--:|---| | [`ryu-gw-channels`](./crates/gateway/channels) | Rust | 3,368 | 130 KB | Ryu Gateway 频道层引擎:外部消息表面适配器(Telegram 长轮询、Slack Socket Mode、D…) | | [`ryu-gw-providers`](./crates/gateway/providers) | Rust | 3,182 | 117 KB | Ryu Gateway 具体后端提供商:OpenAI/Anthropic/local/core/OpenRouter/Modal/GenAI/Replicate/Fal HTTP 接口… | | [`ryu-gw-firewall`](./crates/gateway/firewall) | Rust | 1,421 | 58 KB | Ryu Gateway 防火墙扫描核心:纯正则表达式检测引擎(精心策划的 PII/密钥/注入/代码注入/到…) | | [`ryu-gw-evals`](./crates/gateway/evals) | Rust | 1,238 | 47 KB | Ryu Gateway evals 阶段:按请求的采样 + 提供商分数 EMA(实时的 EvalsRunner)作为可替换的 EvalsBacke… | | [`ryu-gw-budget`](./crates/gateway/budget) | Rust | 1,225 | 47 KB | Ryu Gateway token-budget 阶段:按用户 / 按 agent / 按 session 划分的 token 预算 + 按时间窗口的执行预算,作为… | | [`ryu-gw-audit`](./crates/gateway/audit) | Rust | 1,211 | 48 KB | Ryu Gateway 审计阶段:SQLite 支持的、仅追加的请求日志 +终身 token 总量 + 查询/汇总,暴露… | | [`ryu-gw-cache`](./crates/gateway/cache) | Rust | 722 | 26 KB | Ryu Gateway 响应缓存阶段:精确匹配的 TTL 缓存 (CacheBackend) 以及 embedding 相似度语义缓存… | | [`ryu-gw-router`](./crates/gateway/router) | Rust | 683 | 26 KB | Ryu Gateway 模型路由核心(Plane A):纯粹的 model->provider 解析逻辑 | | [`ryu-gw-passthrough`](./crates/gateway/passthrough) | Rust | 384 | 15 KB | Ryu Gateway 直通网络格式脱敏引擎:原生格式(Anthropic Messages / OpenAI Responses)的 req… | | [`ryu-gw-governance`](./crates/gateway/governance) | Rust | 259 | 11 KB | Ryu Gateway 市场治理核心:纯粹的 grant-allowlist 匹配 + ed25519 清单签名/验证加密覆盖层… | | [`ryu-gw-contracts`](./crates/gateway/contracts) | Rust | 33 | 1 KB | 在 Ryu Gateway 各阶段之间交换的共享值类型(例如 | #### 自动化与捕获 crates — 5 个包 · 16,158 LoC 桌面感知、输入控制和屏幕/音频捕获。 | 包 | 语言 | LoC | 大小 | 描述 | |---|---|--:|--:|---| | [`ryu-shadow-core`](./crates/ghost/shadow) | Rust | 11,535 | 402 KB | 用于 Shadow 的屏幕/音频/输入捕获、OCR 和语义搜索引擎 | | [`ghost-hands`](./crates/ghost/hands) | Rust | 2,122 | 79 KB | 用于 Ghost 的合成键盘/鼠标/窗口输入 | | [`ghost-eyes`](./crates/ghost/eyes) | Rust | 1,670 | 80 KB | 用于 Ghost 的屏幕感知(AX 树、屏幕捕获、输入监控) | | [`ghost-core`](./crates/ghost/core) | Rust | 589 | 20 KB | 用于 Ghost 桌面自动化 MCP server 的核心自动化原语(配方、存储) | | [`ghost-permissions`](./crates/ghost/permissions) | Rust | 242 | 10 KB | Ghost 所需的 OS 能力(UI 自动化 + 屏幕捕获)的跨平台检查/请求 | #### SDK crates — 4 个包 · 3,092 LoC SDK 内核及其 C-ABI / Node-API / UniFFI 绑定。 | 包 | 语言 | LoC | 大小 | 描述 | |---|---|--:|--:|---| | [`ryu-sdk`](./crates/sdk/core) | Rust | 1,394 | 49 KB | Ryu 开发者 SDK 核心 | | [`ryu-sdk-napi`](./crates/sdk/napi) | Rust | 768 | 25 KB | 将 ryu-sdk Rust 核心作为原生插件暴露给 TypeScript/JavaScript 的 Node-API (napi-rs) 绑定 | | [`ryu-sdk-ffi`](./crates/sdk/ffi) | Rust | 521 | 18 KB | 位于 ryu-sdk Rust 核心之上的 C-ABI 表面,由 Go (cgo) 绑定和任何其他 C-FFI 客户端使用 | | [`ryu-sdk-uniffi`](./crates/sdk/uniffi) | Rust | 409 | 17 KB | 位于 ryu-sdk Rust 核心之上的 UniFFI 绑定表面 | #### 测试 crates — 2 个包 · 1,492 LoC 共享的测试套件。 | 包 | 语言 | LoC | 大小 | 描述 | |---|---|--:|--:|---| | [`ryu-integration-tests`](./crates/testing/integration) | Rust | 1,292 | 52 KB | 专用的分解 SEAM 测试套件:以子进程方式启动 ryu-core(RYU_PROFILE=auditsmoke + 临时 RYU_DIR)并… | | [`ryu-test-sidecar`](./crates/testing/sidecar) | Rust | 200 | 8 KB | 仅由 crates/ryu-integration-tests 用于测试分解功能的、最小化且可控的进程外 sidecar | #### TypeScript 包 — 20 个包 · 203,347 LoC 共享的 TS 表面:SDK、客户端、设计系统、协议。 | 包 | 语言 | LoC | 大小 | 描述 | |---|---|--:|--:|---| | [`@ryu/ui`](./packages/ui) | TypeScript | 53,385 | 1406 KB | — | | [`@ryu/blocks`](./packages/blocks) | TypeScript | 52,445 | 1459 KB | — | | [`@ryu/api`](./packages/api) | TypeScript | 30,168 | 985 KB | — | | [`@ryu/apps`](./packages/ryu-apps) | TypeScript | 10,276 | 261 KB | Ryu Apps widget workspace:共享的 frame-side 桥接器,加上内置的 widget 包(一个独立的 HTML p…) | | [`@ryuhq/sdk`](./packages/sdk) | TypeScript | 9,665 | 326 KB | Ryu 开发者 SDK:类型化的构建器和 CLI,用于编写 plugin.json 插件包 | | [`@ryuhq/core-client`](./packages/core-client) | TypeScript | 9,428 | 278 KB | — | | [`@ryu/app-host`](./packages/app-host) | TypeScript | 8,961 | 331 KB | — | | [`@ryu/marketplace`](./packages/marketplace) | TypeScript | 8,552 | 246 KB | — | | [`@ryu/db`](./packages/db) | TypeScript | 5,746 | 215 KB | — | | [`@ryu/auth`](./packages/auth) | TypeScript | 5,199 | 174 KB | — | | [`@ryu/settings`](./packages/settings) | TypeScript | 2,262 | 59 KB | — | | [`@ryu/mail`](./packages/mail) | TypeScript | 1,594 | 48 KB | — | | [`@ryuhq/protocol`](./packages/protocol) | TypeScript | 1,330 | 40 KB | — | | [`create-ryu-app`](./packages/create-ryu-app) | TypeScript | 1,089 | 36 KB | 搭建一个包含 Runnable、指向 gateway 的模型配置和 plugin.json 清单的 Ryu SDK 初始项目 | | [`@ryu/email`](./packages/email) | TypeScript | 927 | 25 KB | — | | [`@ryu/hotkeys`](./packages/hotkeys) | TypeScript | 760 | 21 KB | — | | [`@ryuhq/client`](./packages/client) | TypeScript | 631 | 17 KB | 用于在任何应用中嵌入 Ryu Core agent 的 TypeScript 客户端 SDK | | [`@ryu/command`](./packages/command) | TypeScript | 583 | 18 KB | — | | [`@ryu/env`](./packages/env) | TypeScript | 346 | 19 KB | — | | [`@ryu/config`](./packages/config) | TypeScript | 0 | 0 KB | 用于 Ryu 包的共享 TypeScript 配置 | ## 贡献 欢迎为 OSS 单元做出贡献 —— 有关构建说明,请参阅每个单元的 README。 请将安全问题私密报告至 security@ryuhq.com。 开源单元基于 Apache-2.0 协议,Gateway(AGPL-3.0)和 Raycast(MIT)除外。 `apps/{desktop,island}` 和共享的 UI 包是 **source-available,而非开源** —— 详见 [`LICENSE-COMMERCIAL.md`](./LICENSE-COMMERCIAL.md);欢迎在 这些条款下对它们进行贡献。Web/server/mobile/extension 和 identity/billing 相关部分归 © 2026 A Major Pte. Ltd. 所有,并存在于私有的 monorepo 中。每个 子目录都有自己的 `LICENSE` 文件;[`LICENSING.md`](./LICENSING.md) 是完整的映射图。 站在 [kernel.sh](https://github.com/onkernel/kernel)(身份保险库)、 [Jan](https://github.com/menloresearch/jan)(本地优先桌面端)、 [Ghost OS](https://github.com/ghostwright/ghost-os)(桌面自动化)和 [Shadow](https://github.com/ghostwright/shadow)(捕获 + 语义记忆)的肩膀上构建。
标签:AI平台, AI智能体, DLL 劫持, 人机协作, 可视化界面, 后端开发, 大语言模型, 工作流编排, 智能体编排, 请求拦截, 调试插件, 逆向工具