nono

GitHub
1.6k 111 简单 2 次阅读 今天Apache-2.0语言模型Agent
AI 解读 由 AI 自动生成,仅供参考

nono 是一款专为 AI 智能体设计的内核级安全沙箱工具。它旨在解决当前 AI 代理普遍面临的权限过大问题——许多代理拥有文件系统访问和 Shell 命令执行权,极易受提示词注入攻击,而传统的软件策略防护往往容易被绕过。

通过非虚拟化方案,nono 能在几秒钟内为任意 CLI 代理创建隔离环境,无需配置 Hypervisor 或挂载容器卷,几乎零延迟。其核心亮点包括基于能力的隔离机制、安全的密钥管理、原子操作回滚以及不可篡改的加密审计链。这些特性确保即使在零信任环境下,AI 的破坏性行为也能被结构性地阻止。

nono 由知名开源项目 Sigstore 的创作者开发,目前支持 macOS 和 Linux 系统,可通过 Homebrew 快速安装。虽然正处于早期 Alpha 阶段,暂不推荐用于生产环境,但对于希望安全测试、运行本地 AI 代理的开发者和技术研究人员来说,nono 提供了一个极具潜力的安全解决方案。

使用场景

某资深后端工程师正在本地运行 AI 编程助手(如 Claude Code),让其自动重构核心业务代码并协助调试涉及数据库连接的服务。

没有 nono 时

  • 担心 AI 因提示词注入误删生产环境文件,传统策略容易被绕过,缺乏底层强制隔离。
  • API 密钥需明文传入环境变量,存在被恶意读取或意外泄露的高安全风险。
  • 一旦 AI 执行了破坏性命令,手动排查和恢复耗时费力,且容易遗漏关键变更。
  • 无法追溯 AI 具体调用了哪些接口或修改了哪些配置,缺乏完整的操作审计记录。

使用 nono 后

  • nono 提供内核级沙箱隔离,无需配置虚拟机,从结构上使危险操作变得不可能执行。
  • 内置安全密钥管理,AI 代理仅在受控能力范围内访问凭证,彻底杜绝明文暴露。
  • 支持原子化快照与回滚,操作失误后可瞬间恢复到安全状态,零延迟开销。
  • 生成加密不可变的审计链,完整记录操作溯源,轻松满足企业级合规与安全要求。

nono 让开发者能在零信任环境中安全地释放 AI 代理的生产力,无需牺牲系统安全性。

运行环境要求

操作系统
  • macOS
  • Linux
GPU

未说明

内存

未说明

依赖
notes1. 当前为早期 Alpha 版本,未经过全面安全审计,不建议在生产环境使用;2. Linux 需内核 5.13+ (Landlock),macOS 需 10.5+ (Seatbelt);3. Windows 支持即将推出;4. 基于内核隔离沙箱,无需配置 Hypervisor 或容器卷挂载;5. 提供 CLI、Rust 库、Python 和 TypeScript 绑定。
python未说明
Rust (核心库)
nono-py
nono-ts
nono hero image

快速开始

nono logo

一种让危险操作在结构上根本不可能发生的 AI 代理安全方案。

来自 Sigstore 的创作者
安全软件证明的标准,已被 PyPI、npm、brew 和 Maven Central 使用

License CI Status Documentation

Join Discord agent-sign GitHub Action

[!WARNING] 这是一个尚未经过全面安全审计的早期 Alpha 版本。尽管我们已采取措施实施强大的安全机制,但仍可能存在未被发现的问题。在我们发布稳定的 1.0 版本之前,不建议将其用于生产环境。

[!IMPORTANT] 积极的开发可能会导致中断——如果出现问题,很可能是我们的原因,而不是您。

  • Supervisor: 我们正在开发一种运行时生命周期管理功能,使 Supervisor 成为默认的执行模式,并引入 psattachdetachinspectstop 等命令。#502
  • Packages & Skills: 针对编码代理的自定义钩子、技能和脚本系统——社区注册表或任何 Git 仓库都可以作为来源。#459
  • Policy: 我们仍在继续努力,使所有功能完全可组合且基于组策略。#446

AI 代理通常拥有文件系统访问权限、可以执行 Shell 命令,并且极易受到提示注入攻击。传统的应对方式是使用护栏和策略。然而,问题在于这些策略可能被绕过,而护栏也可能被“说服”失效。

有了 nono,您无需担心这些问题。no-no 可以在几秒钟内将您的代理包裹在一个内核隔离的沙箱中——内置 API 密钥保护、破坏性操作防护以及完整的快照与回滚功能。无需配置虚拟机管理程序,无需挂载容器卷,也不存在延迟开销。


平台支持: 目前支持 macOS 和 Linux,Windows 即将推出。

Homebrew (macOS/Linux)

brew install nono

其他安装选项

预编译的二进制文件和包管理器安装说明,请参阅安装指南


CLI

CLI 是最快上手的方式!无启动延迟,无需安装虚拟机管理程序、运行时或挂载卷……只需一条命令即可实现沙箱化并提供保护。

# 任何 CLI 代理——只需在 -- 后面加上您的命令
nono run --profile claude-code -- claude
nono run --profile codex -- codex
nono run --profile opencode -- opencode
nono run --profile openclaw -- openclaw
nono run --profile swival -- swival

nono run --allow-cwd -- python3 my_agent.py
nono run --allow-cwd -- npx @anthropic/agent-framework

# MCP 服务器、代理,任何东西!
nono run --read /data -- npx @modelcontextprotocol/server-filesystem /data
nono run --profile pydantic-ai-agent --allow logs/ -- uv run my_agent.py
nono run --profile custom-profile -- node agent.js

内置针对 Claude CodeCodexOpenCodeOpenClawSwival 的配置文件——或者您也可以通过自定义权限来定义自己的配置文件。


Library

核心是一个 Rust 库,可以通过原生绑定嵌入到任何应用程序中。该库是一个无策略的沙箱基础组件——它仅应用客户端明确请求的内容。

Rust Rust — crates.io

use nono::{CapabilitySet, Sandbox};

let mut caps = CapabilitySet::new();
caps.allow_read("/data/models")?;
caps.allow_write("/tmp/workspace")?;

Sandbox::apply(&caps)?;  // 不可逆——从此时起由内核强制执行

Python Python — nono-py

from nono_py import CapabilitySet, AccessMode, apply

caps = CapabilitySet()
caps.allow_path("/data/models", AccessMode.READ)
caps.allow_path("/tmp/workspace", AccessMode.READ_WRITE)

apply(caps)  # 应用能力集

TypeScript TypeScript — nono-ts

import { CapabilitySet, AccessMode, apply } from "nono-ts";

const caps = new CapabilitySet();
caps.allowPath("/data/models", AccessMode.Read);
caps.allowPath("/tmp/workspace", AccessMode.ReadWrite);

apply(caps);  // 不可逆——从此时起由内核强制执行

功能

内核强制执行的沙箱

no-no 应用操作系统级别的限制,这些限制无法从沙箱进程内部被绕过或提升权限。权限以执行前授予的能力形式定义——一旦沙箱被应用,便不可逆转。所有子进程都会继承相同的限制。

平台 机制 最低内核版本
macOS Seatbelt 10.5+
Linux Landlock 5.13+
# 授予对 src 的读取权限,对 output 的写入权限——其余一切均由内核禁止
nono run --read ./src --write ./output -- cargo build

凭证注入

两种模式:代理注入会将凭证完全保留在沙箱之外——代理连接到 localhost,代理会将真实的 API 密钥注入到上游请求中。环境变量注入则会从操作系统密钥链、1Password 或 Apple Passwords 中加载秘密,并在沙箱锁定之前将其注入为环境变量。

# 代理模式——代理甚至在其自身内存中都看不到 API 密钥
nono run --network-profile claude-code --proxy-credential openai -- my-agent

# 环境变量模式——更简单,但秘密存在于进程环境中
nono run --env-credential openai_api_key --allow-cwd -- my-agent

# 1Password — 将 URI 引用映射到目标环境变量
nono run --env-credential-map 'op://Development/OpenAI/credential' OPENAI_API_KEY --allow-cwd -- my-agent

# Apple Passwords (macOS) — 将 URI 引用映射到目标环境变量
nono run --env-credential-map 'apple-password://github.com/alice@example.com' GITHUB_PASSWORD --allow-cwd -- my-agent

代理技能溯源与供应链安全

指令文件(SKILLS.md、CLAUDE.md、AGENTS.md、AGENT.MD)及其相关工件(如脚本)是供应链攻击的潜在途径。nono 使用 Sigstore 的 DSSE 封装和 in-toto/SLSA 样式的声明,对这些文件进行加密签名并验证。它支持基于密钥的签名(系统密钥库)和无密钥签名(通过 GitHub Actions + Fulcio + Rekor 实现的 OIDC)。在执行时,nono 会验证签名、检查签名证书是否来自受信根证书,并验证声明中的谓词(例如:在过去 30 天内签名、由受信维护者签名)。

nono-attest GitHub Action

您可以在 GitHub Actions 工作流中直接对指令文件进行签名。用户随后可以验证这些文件是否确实来自预期的仓库和分支,并且是由受信维护者签名的。

网络过滤

通过本地代理实现基于白名单的主机过滤。沙箱会阻止所有直接的出站连接——代理只能访问明确允许的主机。云元数据端点则被硬编码为禁止访问。

nono run --allow-proxy api.openai.com --allow-proxy api.anthropic.com -- my-agent

# 保留 claude-code 配置文件,但在此会话中允许无限制的网络访问
nono run --profile claude-code --allow-net -- claude

监督与能力扩展

在 Linux 系统上,当代理需要访问其沙箱之外的资源时,seccomp 用户通知机制会拦截系统调用。监督程序会提示用户,然后直接注入文件描述符——代理本身不会执行 open() 系统调用。无论是否获得批准,敏感路径始终无法授予访问权限。

nono run --rollback --supervised --profile claude-code --allow-cwd -- claude

撤销与快照

在沙箱执行之前和期间,会对您的工作目录进行内容寻址式快照。使用 SHA-256 进行去重,并通过默克尔树承诺来验证完整性。您可以交互式地查看并恢复单个文件或整个目录。对于已知可再生的目录(如 .gittargetnode_modules 等)以及包含超过 10,000 个文件的目录,系统会自动将其排除在快照之外,以避免在大型项目中出现卡顿。

# 使用 zero 标志——自动排除大型或可再生目录
nono run --rollback --allow . -- npm test

# 强制包含一个被自动排除的目录
nono run --rollback --rollback-include target -- cargo build

# 排除自定义目录不参与撤销操作
nono run --rollback --rollback-exclude vendor -- go test ./...

# 完全禁用撤销功能
nono run --no-rollback --allow . -- npm test

nono rollback list
nono rollback restore

可组合策略组

安全策略以命名组的形式定义在一个 JSON 文件中。配置文件通过名称引用这些组——从而可以从可重用的构建模块中组合出细粒度的策略。

{
  "deny_credentials": {
    "deny": { "access": ["~/.ssh", "~/.gnupg", "~/.aws", "~/.kube"] }
  },
  "node_runtime": {
    "allow": { "read": ["~/.nvm", "~/.fnm", "~/.npm"] }
  }
}

破坏性命令拦截

危险命令(rmddchmodsudoscp)会在执行前被拦截。您可以通过 --allow-command 参数在每次调用时覆盖拦截,或者通过配置文件中的 allowed_commands 设置永久允许某些命令。此外,还可以使用 add_deny_commands 来额外阻止特定命令。

$ nono run --allow-cwd -- rm -rf /
nono: blocked command: rm

# 在每次调用时覆盖拦截
nono run --allow-cwd --allow-command rm -- rm ./temp-file.txt

# 通过配置文件覆盖
# { "security": { "allowed_commands": ["rm"] } }
nono run --profile my-profile -- rm /tmp/old-file.txt

# 在配置文件中阻止特定命令(使用 add_deny_commands)——同时配合 add_deny_access 来阻止对套接字的访问
# { "policy": { "add_deny_access": ["/var/run/docker.sock"], "add_deny_commands": ["docker", "kubectl"] } }
nono run --profile no-docker -- claude

[!WARNING] 命令拦截是在内核沙箱之上的一层纵深防御。如果使用 sh -c '...' 或包装脚本,仍有可能绕过此机制——真正的安全边界在于沙箱的文件系统限制。

主题

nono 自带多个受流行终端配色方案启发的颜色主题,默认主题为 Catppuccin Mocha

主题 描述
mocha Catppuccin Mocha — 温暖的深色(默认)
latte Catppuccin Latte — 干净的浅色
frappe Catppuccin Frappe — 柔和的深色
macchiato Catppuccin Macchiato — 深邃而鲜艳的深色
tokyo-night Tokyo Night — 冷色调的蓝色和紫色
minimal 灰度配橙色点缀
# 每次调用时指定
nono --theme tokyo-night run --allow-cwd -- my-agent

# 通过环境变量设置
export NONO_THEME=latte

# 通过配置文件 (~/.config/nono/config.toml)
# [ui]
# theme = "frappe"

审计追踪

每个受监督的会话都会自动记录命令、时间、退出码、网络事件以及加密快照的承诺信息,并以结构化 JSON 格式保存。您可以通过 --no-audit 参数选择关闭审计功能。

nono audit list
nono audit show 20260216-193311-20751 --json

快速入门

Homebrew(macOS/Linux)

brew install nono

其他 Linux 安装选项

有关预编译二进制文件和包管理器安装说明,请参阅安装指南

从源代码编译

有关从源代码编译的信息,请参阅开发指南

支持的客户端

nono 内置了针对热门 AI 编程代理的配置文件。每个配置文件都定义了经过审核的最小权限。

客户端 配置文件 文档
Claude Code claude-code 指南
Codex codex 指南
OpenCode opencode 指南
OpenClaw openclaw 指南
Swival swival 指南

自定义配置文件可以通过 "extends": "claude-code"(或多个:"extends": ["claude-code", "node-dev"])来扩展内置配置,继承所有设置并添加覆盖。nono 是代理无关的,适用于任何 CLI 命令。更多使用细节、配置和集成指南,请参阅完整文档

使用 nono 的项目

项目 仓库
claw-wrap GitHub

架构

nono 采用 Cargo 工作区结构:

  • nono (crates/nono/) -- 核心库。一个无策略的沙箱原语,仅应用客户端显式请求的内容。
  • nono-cli (crates/nono-cli/) -- CLI 可执行文件。负责所有安全策略、配置文件、钩子及用户界面。
  • nono-ffi (bindings/c/) -- 自动生成头文件的 C FFI 绑定。

各语言特定的绑定由单独的仓库维护:

语言 仓库
Python nono-py PyPI
TypeScript nono-ts npm

贡献

我们鼓励使用 AI 工具为 nono 做贡献。然而,在提交之前,您必须理解并仔细审查任何由 AI 生成的代码。nono 的安全性至关重要——请务必彻底审查和测试您的代码,尤其是在核心沙箱功能相关部分。如果您不理解某项更改的工作原理,请在提交 PR 之前先在 Discord 中寻求帮助。

安全

如果您发现安全漏洞,请不要公开提交问题。相反,请遵循我们安全政策中规定的负责任披露流程。

许可证

Apache-2.0

版本历史

v0.29.12026/04/04
v0.29.02026/04/03
v0.28.02026/04/03
v0.27.02026/04/02
v0.26.12026/03/31
v0.25.02026/03/26
v0.24.02026/03/25
v0.23.12026/03/25
v0.23.02026/03/24
v0.22.12026/03/23
v0.22.02026/03/21
v0.21.02026/03/21
v0.20.02026/03/18
v0.19.02026/03/18
v0.18.02026/03/16
v0.17.12026/03/13
v0.17.02026/03/12
v0.16.02026/03/10
v0.15.02026/03/09
v0.14.02026/03/08

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|昨天
Agent图像开发框架