Ryvos/ryvos

GitHub: Ryvos/ryvos

用 Rust 编写的开源自主 AI 助手,以单一二进制交付,具备五级安全模型、62 个沙箱隔离工具、14 个 LLM 提供商支持和 DAG 工作流引擎。

Stars: 4 | Forks: 3

Ryvos # Ryvos ### 您的自主 AI 助手 —— 安全、快速且始终在线。 [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Rust](https://img.shields.io/badge/rust-1.75%2B-orange.svg)](https://www.rust-lang.org) [![Release](https://img.shields.io/github/v/release/Ryvos/ryvos?color=F07030)](https://github.com/Ryvos/ryvos/releases) [![CI](https://img.shields.io/github/actions/workflow/status/Ryvos/ryvos/ci.yml?label=CI)](https://github.com/Ryvos/ryvos/actions) **目标驱动 Agent · 多提供商 LLM · DAG 工作流 · 原生 MCP · 默认沙箱隔离 · 单一二进制文件** [快速开始](#quick-start) · [为什么选择 Ryvos](#why-ryvos) · [功能特性](#features) · [架构设计](#architecture) · [安全保障](#security-model) · [路线图](#roadmap)
## 什么是 Ryvos? Ryvos 是一个开源的自主个人 AI 助手,您可以在自己的硬件上运行。它连接到 14 个 LLM 提供商(Anthropic, OpenAI, Gemini, Azure, Ollama, Groq, OpenRouter, Together, Fireworks, Cerebras, xAI, Mistral, Perplexity, DeepSeek),通过 62 个沙箱隔离工具执行任务,并可通过您已使用的渠道 —— Telegram, Discord, Slack, Webhooks —— 联系您,此外还提供内置 Web UI 和终端界面。 使用 Rust 编写。以单一二进制文件发布。仅占用 15–30 MB 内存。 ``` cargo install --path . ryvos init # Pick your LLM provider, paste an API key ryvos # Start talking to your assistant ``` ## 为什么选择 Ryvos? 自主 AI 助手正在爆发式增长 —— 但当前这一代产品建立在从未为全天候自主运行而设计的 TypeScript 和 Python 运行时之上: - **缺乏安全模型** —— 社区技能以完全系统访问权限运行任意代码。 - **缺乏目标感知** —— Agent 运行直到达到 max_turns,而不是直到任务完成。 - **高资源占用** —— 空闲时占用 200-500MB 内存,垃圾回收暂停,冷启动缓慢。 - **脆弱的部署** —— 需要 Node.js ≥22,npm 生态系统,容器编排。 Ryvos 从零开始用 Rust 构建,具有不同的优先级: | | 典型 AI 助手 | Ryvos | |---|---|---| | **语言** | TypeScript / Python | Rust | | **内存** | 200–500 MB | 15–30 MB | | **执行模型** | 运行直到 max_turns | 目标驱动,带 Judge 判决 | | **工具安全性** | 无(任意代码) | 5 级分类 + Docker 沙箱 | | **危险命令检测** | 无 | 9 种内置模式(rm -rf, DROP TABLE, curl\|bash 等) | | **部署** | npm/pip + runtime + Docker | 单一静态二进制文件 | | **MCP 支持** | 插件/社区 | 原生(stdio + SSE/Streamable HTTP) | | **并行工具执行** | 罕见 | 内置 | | **多 Agent 工作流** | 独立编排层 | 内置 DAG 引擎 + Orchestrator | | **渠道适配器** | 独立项目 | 内置(Telegram, Discord, Slack) | | **HTTP Gateway** | 独立项目 | 内置 Web UI + RBAC | ## 功能特性 ### 目标驱动执行 - **带加权成功标准的目标** —— 通过 `OutputContains`、`OutputEquals`、`LlmJudge` 或 `Custom` 标准定义什么叫“完成”,每个标准都有独立的权重 - **约束条件** —— 对时间、成本、安全、范围和质量设定硬性和软性限制 - **两级 Judge** —— Level 0(确定性快速检查)+ 评估完整对话上下文的 LLM ConversationJudge - **裁决结果** —— `Accept(confidence)`、`Retry(reason, hint)`、`Escalate(reason)` 或 `Continue` —— Agent 持续运行直到目标达成或轮次耗尽 ### 自主 Agent - **ReAct Agent 循环**,支持工具调用、反思和流式响应 - **并行工具执行** —— 多个工具在互不依赖时并行运行 - **多提供商 LLM** —— 14 个提供商:Anthropic, OpenAI, Gemini, Azure, Cohere, Ollama, Groq, OpenRouter, Together, Fireworks, Cerebras, xAI, Mistral, Perplexity, DeepSeek - **会话持久化** —— 基于 SQLite 的对话历史和跨重启记忆 - **子 Agent 生成** —— 以更严格的安全策略将任务委派给子 Agent - **生命周期钩子** —— 在启动、消息、工具调用、响应、轮次完成、工具错误、会话开始/结束时触发 shell 命令 - **检查点/恢复** —— Agent 状态在每轮后持久化到 SQLite;崩溃的运行会自动恢复 - **决策追踪** —— 记录每个工具调用选择及其替代方案、置信度分数和结果(token、延迟、成功) - **结构化输出验证** —— 启发式修复(去除代码围栏、平衡 JSON 括号、强制最大长度)+ 可选的 LLM 修复以符合预期 schema ### DAG 工作流引擎 - **图执行** —— 将多步骤工作流定义为 Agent 节点的有向无环图 - **节点类型** —— 每个节点是独立的 Agent 运行,具有自己的系统提示、工具、目标和最大轮次 - **边条件** —— `Always`、`OnSuccess`、`OnFailure`、`Conditional(expression)`、`LlmDecide(prompt)` - **移交上下文** —— 共享键值存储,用于通过 JSON 提取在节点间传递数据 - **多 Agent Orchestrator** —— 基于能力的路由,支持 `Parallel`、`Relay` 和 `Broadcast` 分发模式 ### 多渠道收件箱 - **Telegram, Discord, Slack** —— 在您已使用的平台上与助手对话 - **按渠道 DM 策略** —— 每个渠道的允许列表、开放或禁用访问控制 - **HTTP/WebSocket Gateway** —— 基于 Axum 的服务器,带嵌入式 Web UI,用于浏览器访问 - **终端 UI** —— 完整的基于 ratatui 的 TUI,带自适应横幅和流式输出 - **交互式 REPL** —— 快速命令行使用 - **Daemon 模式** —— 使用 `--gateway` 标志的始终在线后台服务 - **Cron 调度器** —— 使用 cron 表达式的周期性任务,跨重启持久化 - **心跳** —— 定期主动 Agent 检查,具有智能抑制和告警路由 ### 安全(内置而非外挂) - **5 级工具分类**(T0 安全 → T4 关键),具有自动层级升级 - **危险模式检测** —— 在执行前通过正则表达式检测破坏性命令 - **Docker 沙箱** —— 可选的容器隔离,具有内存限制、网络隔离和超时 - **人工确认审批** —— 高风险工具调用的可配置审批流程 - **沙箱隔离技能** —— 用户扩展在 Lua/Rhai 中运行,而非任意系统代码 - **子 Agent 限制** —— 生成的 Agent 默认使用更严格的安全策略 - **Guardian 看门狗** —— 检测停滞、死循环(重复调用同一工具)和预算超支;注入纠正提示 ### 可观测性 - **JSONL 运行时日志** —— 三级日志(L1 运行摘要,L2 每轮详情,L3 工具执行)—— 抗崩溃的仅追加格式 - **决策日志** —— 基于 SQLite 的每个工具调用决策日志,包含替代方案和结果 - **作用域 EventBus** —— 按类型、会话或节点订阅过滤事件,用于监控和集成 - **目标评估事件** —— 将 `GoalEvaluated` 和 `JudgeVerdict` 事件流式传输到 TUI、gateway 或自定义订阅者 - **Token 使用追踪** —— 每轮和每次运行的输入/输出 token 计数 ### 工具与扩展性 - **62 个内置工具** —— shell、文件 I/O、git、代码分析、网络/HTTP、系统、数据转换、调度、数据库、会话、记忆、通知 - **原生 MCP** —— 连接到 Model Context Protocol 服务器(stdio + SSE/Streamable HTTP 传输) - **即插即用技能** —— 位于 `~/.ryvos/skills/` 的 Lua/Rhai 脚本,带有 manifest 声明的 schema 和沙箱要求 - **工具注册表** —— 内置工具 + 通过 MCP 或技能提供的自定义工具 - **基于角色的 API 密钥** —— 网关访问的 Viewer, Operator, Admin 角色 - **阶段感知上下文压缩** —— 按阶段(规划、执行)标记消息;受保护消息在压缩后保留;按阶段分组摘要 - **三层提示组合** —— Identity (SOUL.md) → Narrative(摘要、Agent)→ Focus(当前目标 + 约束) - **Soul 访谈** —— `ryvos soul` 运行 5 个问题的个性访谈,生成 SOUL.md,塑造 Agent 的沟通方式、语气、主动性和操作员上下文 ## 快速开始 ### 安装 ``` # 从源代码构建 (需要 Rust 1.75+) cargo install --path . ```
其他安装方法 ``` # 一键安装 (Linux / macOS) curl -fsSL https://raw.githubusercontent.com/Ryvos/ryvos/main/install.sh | sh # 锁定特定版本 RYVOS_VERSION=v0.1.0 curl -fsSL https://raw.githubusercontent.com/Ryvos/ryvos/main/install.sh | sh # 自定义安装目录 RYVOS_INSTALL_DIR=/usr/local/bin curl -fsSL https://raw.githubusercontent.com/Ryvos/ryvos/main/install.sh | sh ```
Ryvos demo — security gate blocks rm -rf *安全网关自动拦截危险命令(T4)—— 无需确认。*
### 开始使用 ``` # 交互式设置 — 选择 provider,配置安全性,安装服务 ryvos init # 使用默认值的非交互式设置 ryvos init -y --provider ollama --model-id qwen2.5:7b # 开始与您的助手对话 ryvos # 或提出快速问题 ryvos run "What meetings do I have tomorrow?" # 启动终端 UI ryvos tui # 启动 Web UI + HTTP/WebSocket gateway ryvos serve # 全天候助手:Telegram + Discord + Slack + gateway ryvos daemon --gateway # 检查系统健康状况 ryvos doctor ``` ### 卸载 ``` rm ~/.local/bin/ryvos rm -rf ~/.ryvos # optional: remove config and data ``` ### Shell 补全 ``` # bash ryvos completions bash > ~/.local/share/bash-completion/completions/ryvos # zsh ryvos completions zsh > ~/.zfunc/_ryvos # fish ryvos completions fish > ~/.config/fish/completions/ryvos.fish ``` ### 命令 | 命令 | 描述 | |---------|-------------| | `ryvos` | 交互式对话(默认) | | `ryvos run ` | 提问,获取答案,退出 | | `ryvos tui` | 带流式输出的终端 UI | | `ryvos serve` | Web UI + HTTP/WebSocket gateway | | `ryvos daemon` | 始终在线的助手 | | `ryvos daemon --gateway` | 始终在线 + Web UI 合并为一个进程 | | `ryvos init` | 交互式设置向导 | | `ryvos init -y` | 使用默认值的非交互式设置 | | `ryvos soul` | 个性化您的 Agent(5 个问题访谈 → SOUL.md) | | `ryvos config` | 打印已解析的配置 | | `ryvos doctor` | 系统健康检查(API, 工作区, DB, 渠道, cron, MCP, 安全) | | `ryvos health` | 工具健康统计 | | `ryvos mcp list` | 列出已配置的 MCP 服务器 | | `ryvos mcp add ` | 添加 MCP 服务器 | | `ryvos completions ` | 生成 shell 补全 | ## 架构设计 Ryvos 是一个包含 10 个 crate 的 Cargo workspace。它们共同构成了一个完整的自主助手 —— 目标驱动的 LLM 推理、DAG 工作流编排、工具执行、安全实施、持久化记忆、多渠道收件箱和可观测性 —— 全部集成在一个二进制文件中。 ``` ┌─────────────────────────────────────────────────────┐ │ ryvos (CLI) │ ├──────────┬──────────┬───────────┬───────────────────┤ │ ryvos-tui│ ryvos- │ ryvos- │ ryvos-channels │ │ (TUI) │ gateway │ agent │ (Telegram/Discord/ │ │ │(HTTP/WS) │ │ Slack) │ ├──────────┴──────────┤ ├───────────────────┤ │ ryvos-skills │ │ ryvos-mcp │ │ (Lua/Rhai loader) │ │ (MCP client) │ ├─────────────────────┼───────────┼───────────────────┤ │ ryvos-tools │ ryvos-llm │ ryvos-memory │ │ (tool registry) │(streaming │ (SQLite store) │ │ │ client) │ │ ├─────────────────────┴───────────┴───────────────────┤ │ ryvos-core │ │ (config, error types, event bus, security, │ │ goal system, traits, types) │ └─────────────────────────────────────────────────────┘ ``` | Crate | 用途 | |-------|---------| | `ryvos-core` | 配置、错误类型、作用域 EventBus、安全策略、目标系统、trait | | `ryvos-llm` | 带流式支持的 LLM 客户端抽象(Anthropic, OpenAI 及兼容服务) | | `ryvos-tools` | 工具注册表,11 个类别的 62 个内置工具 | | `ryvos-agent` | ReAct 循环、SecurityGate、ApprovalBroker、Guardian 看门狗、Judge、GoalEvaluator、OutputValidator、CheckpointStore、RunLogger、CronScheduler、GraphExecutor、MultiAgentOrchestrator | | `ryvos-memory` | 基于 SQLite 的会话和历史存储 | | `ryvos-gateway` | Axum HTTP/WS 服务器、Web UI、基于角色的认证中间件 | | `ryvos-channels` | Telegram, Discord, Slack 适配器,带 DM 策略实施 | | `ryvos-mcp` | MCP 客户端(stdio + SSE 传输),带采样控制 | | `ryvos-skills` | 即插即用技能加载器,带 manifest 验证 | | `ryvos-tui` | 基于 ratatui 的终端 UI,带自适应横幅 | ## 安全模型 安全性在 **SecurityGate 中间件** 处强制执行 —— 每个工具调用在执行前都要经过它。 ### 工具层级系统 每个工具声明一个安全层级。SecurityGate 将有效层级与您的策略进行比较,决定:**Allow**、**Deny** 或 **NeedsApproval**。 | 层级 | 风险级别 | 示例 | 默认策略 | |------|-----------|---------|----------------| | T0 | 安全 | 读取文件、列出目录 | 自动 | | T1 | 低 | 网页搜索、读取 URL | 自动批准 | | T2 | 中 | 写入文件、编辑文件 | 需要批准 | | T3 | 高 | Shell 命令、生成 Agent | 需要批准 | | T4 | 关键 | rm -rf, DROP TABLE, curl\|bash | 拒绝 | ### 危险模式检测 SecurityGate 使用正则表达式模式检查工具输入,并**自动升级**到 T4: ``` rm -rf git --force DROP TABLE chmod 777 mkfs dd >/dev/* curl|bash wget|sh ``` ### Docker 沙箱 Shell 命令可选择在隔离的 Docker 容器内运行: ``` [agent.sandbox] enabled = true memory_mb = 512 timeout_secs = 120 network = "none" # No network access mount_workspace = true # Only mount the agent workspace ``` ### 人工确认审批 高风险工具调用会暂停并等待明确批准 —— 通过 REPL 提示、TUI 对话框、Discord 按钮、Telegram 消息或 gateway WebSocket: ``` [security] auto_approve_up_to = "t1" # t0-t1 run automatically deny_above = "t3" # t4 blocked outright (default) approval_timeout_secs = 60 # Unapproved requests timeout ``` 网关是**默认拒绝**的 —— 如果工具调用的参数无法解析,它会升级到 T4 并拒绝执行,而不是静默允许。 ### 子 Agent 限制 生成子 Agent 的 Agent 会自动应用**更严格的策略** —— 防止通过 Agent 链实现权限提升。 ## 配置 配置位于 `~/.ryvos/config.toml`(由 `ryvos init` 创建)。您也可以在当前目录放置 `ryvos.toml`。环境变量使用 `${VAR}` 语法展开。 ``` [agent] max_turns = 25 max_duration_secs = 600 parallel_tools = true enable_summarization = true # 可选:每次运行后的目标驱动自评估 enable_self_eval = true # 可选:检查点 / 恢复崩溃的运行 [agent.checkpoint] enabled = true # 可选:JSONL 运行时日志 [agent.log] enabled = true log_dir = "~/.ryvos/logs" # 可选:Guardian watchdog [agent.guardian] stall_timeout_secs = 60 doom_loop_threshold = 5 budget_tokens = 100000 [model] provider = "anthropic" model_id = "claude-sonnet-4-20250514" api_key = "${ANTHROPIC_API_KEY}" # Ollama 示例: # provider = "ollama" # model_id = "qwen2.5:7b" # base_url = "http://localhost:11434/v1/chat/completions" [security] auto_approve_up_to = "t1" deny_above = "t4" approval_timeout_secs = 60 [gateway] bind = "127.0.0.1:18789" [[gateway.api_keys]] name = "web-ui" key = "rk_..." role = "operator" # viewer | operator | admin [channels.telegram] bot_token = "${TELEGRAM_BOT_TOKEN}" dm_policy = "allowlist" allowed_users = [123456789] [mcp.servers.filesystem] transport = { type = "stdio", command = "npx", args = ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"] } ``` ## 路线图 ### 已完成 - [x] 带加权成功标准的目标驱动执行 - [x] 两级 Judge 系统(确定性 + LLM) - [x] 决策追踪和失败日志 - [x] 结构化输出验证和修复 - [x] JSONL 运行时日志(L1/L2/L3) - [x] 阶段感知上下文压缩 - [x] 三层提示组合 - [x] 检查点/恢复 - [x] DAG 工作流引擎(图执行) - [x] 带基于能力路由的多 Agent Orchestrator - [x] 带过滤订阅的作用域 EventBus - [x] 带持久化恢复的 Cron 调度器 - [x] Guardian 看门狗(停滞、死循环、预算检测) - [x] 多渠道收件箱 - [x] 带 Web UI 的 HTTP/WebSocket gateway - [x] 带智能抑制和告警路由的心跳系统 ### 即将推出 - [ ] 通过 GitHub Releases 提供预构建二进制文件 - [ ] 通过 crates.io 支持 `cargo install ryvos` - [ ] WhatsApp, Signal, iMessage 和 Google Chat 渠道适配器 - [ ] 语音模式 —— 唤醒词检测 + 语音转文字 + TTS - [ ] 通过 WebSocket 的移动伴侣应用 - [ ] 浏览器控制 —— 导航、点击、提取、截图 - [ ] Live Canvas —— Web UI 中的实时文档/工件编辑 - [ ] Ryvos Cloud —— 托管助手与托管会话 - [ ] SOC 2 合规文档 - [ ] 签名并验证的技能市场 - [ ] MCP 采样支持(服务器发起的 LLM 调用) ## 贡献 我们欢迎各种贡献。有关指南,请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 [MIT](LICENSE)
标签:AI代理, AI助手, Anthropic, API密钥扫描, Awesome, CIS基准, DAG工作流, DeepSeek, Discord机器人, DLL 劫持, Gemini, LLM评估, LLM集成, Mistral, Ollama, OpenAI, rizin, Rust, Slack集成, Telegram机器人, Webhook, 个人AI, 低资源占用, 内存规避, 力导向图, 单文件部署, 即时通讯集成, 可视化界面, 多模型支持, 大语言模型, 工具调用, 开源, 本地部署, 沙箱安全, 熵值分析, 端到端加密, 系统管理, 网络安全, 网络安全, 网络流量审计, 网络调试, 自主智能体, 自动化, 请求拦截, 通知系统, 隐私保护, 隐私保护