nanoinfra Skill 技能
自托管 AI Agent 基础设施运行时
技能简介
nanoinfra 是一款超轻量级开源自托管 AI Agent 运行时,专门面向基础设施管理场景,以 Python 实现,核心设计原则是「可审计性」——将工具、长程记忆、MCP 集成、模型路由、多 Agent 委托、定时自动化和 OpenAI 兼容 API 全部塞进一个足够小的核心,任何人都能读懂源码并自行部署。安全模型上,nanoinfra 采用「能力边界分离」架构:Agent 进程本身不持有凭证,而是由独立进程(executor)持有凭证并对每次远程操作做出 allow / approve / grant / deny 裁决,Agent 只负责提问,不负责执行决策。发布当天即有 PyPI 2.0.0 版本(MIT 许可证,Python ≥3.11)。
核心能力
- 多渠道接入:支持浏览器 WebUI、终端 CLI、API 接口,同时内置 Telegram、Discord、Slack、Signal、Email、Mattermost 等 16 个聊天平台的连接器,AI 始终在熟悉的聊天窗口中响应
- MCP 原生集成:内置 MCP 主机进程,在独立 Linux 账户下以 Landlock 强制隔离运行,每个 MCP 服务器拥有独立的文件系统规则集,互不干扰
- 凭证边界分离:Agent 进程(gateway)不持有任何凭证,凭证和裁决逻辑运行在独立的 executor 进程(nanoinfra-exec)中,两者通过 Unix Socket 通信,每次远程操作必须经过 executor 的能力门审核
- 无梗值守模式:无人值守的调用默认无法到达远程主机,异常操作会触发第二认证路径等待人工确认,拒绝操作在当次会话中锁定,防止 Agent 绕过约束
- 长程记忆系统:内置 Dream 记忆模块,支持跨会话持久化和长期知识管理,Agent 在长程目标执行和定时自动化场景中保持上下文连续性
- 多模型路由与降级:支持 OpenAI 兼容 API、本地 LLM(Ollama / vLLM)和图像生成等多种模型,可配置模型降级链,确保部分模型不可用时自动切换
- WebUI 零构建交付:WebUI 直接打包在发布的 wheel 中,无需单独安装 Node.js 或构建步骤,安装完成即可通过 nanoinfra webui 打开浏览器工作台
- Docker 特权分离:官方容器镜像以 root 启动,完成 executor / fetcher / MCP host 的账户创建和能力边界配置后主动放弃 root 权限,全程无需 --security-opt 或额外 capability 配置
- OpenAI 兼容 API:暴露 OpenAI 兼容的 API 端点,可被其他工具和平台调用,适合作为企业内部 AI 能力网关
- Python SDK:提供 Python SDK,方便在 Python 项目中直接集成 nanoinfra 作为 Agent 运行时
- 可审计小核心:核心代码量受控,所有 Agent 行为(工具调用、记忆写入、模型交互)均可追溯,适合对 AI 操作有合规要求的组织
安装配置
环境要求
- Python 3.11 或更高版本
- 或 Docker(用于容器化部署,推荐生产环境使用)
- 推荐使用 uv 包管理器以获得最佳安装体验
安装步骤
方式一:通过 uv 安装(推荐,最简)
uv tool install nanoinfra
方式二:通过 pip 安装
python -m pip install nanoinfra
若遇到 externally-managed-environment 错误(macOS / Linux 常见),使用 uv tool install 或在虚拟环境中操作。
方式三:Docker 容器安装(生产推荐)
# 首次运行:创建配置和引导
docker run -it --rm -v ~/.nanoinfra:/home/nanoinfra/.nanoinfra
ghcr.io/nanoinfraorg/nanoinfra:latest onboard --wizard
# 启动网关服务
docker run -d --name nanoinfra
-v ~/.nanoinfra:/home/nanoinfra/.nanoinfra
-p 127.0.0.1:8765:8765
ghcr.io/nanoinfraorg/nanoinfra:latest gateway
容器镜像支持 latest、次版本(如 1.0)和精确版本(如 1.0.3)三种标签,生产环境建议固定精确版本。
方式四:源码安装
git clone https://github.com/nanoinfraorg/nanoinfra.git
cd nanoinfra
uv sync
uv run nanoinfra --version
源码安装需要 bun 或 npm 来构建 WebUI(如使用 uv,则通过 lockfile 自动处理)。
初始配置
通过向导引导配置(推荐首次安装)
nanoinfra webui
首次运行会自动创建配置文件和工作区,并打开浏览器进入设置界面,引导配置模型供应商凭证。
手动配置模型提供方
在 ~/.nanoinfra/config.json 中配置 Provider,例如添加 OpenAI:
{
"providers": {
"openai": {
"api_key": "sk-...",
"model": "gpt-4"
}
}
}
详细配置参考官方文档:https://docs.nanoinfra.org/configuration/
使用步骤
第一步:打开 WebUI 并配置模型
nanoinfra webui
浏览器访问 http://127.0.0.1:8765,在 Settings → Models 中选择供应商和模型,保存后即可开始对话。
第二步:创建第一个工作区
在 WebUI 右上角选择或创建工作区(Workspace),不同工作区隔离记忆和配置,适合多项目并行。
第三步:让 Agent 执行基础设施操作
在对话中自然语言描述任务,例如「请帮我检查所有服务器的磁盘使用率,并在超过 80% 时发送告警。」Agent 会通过 MCP / SSH / Ansible 等工具链执行操作,每次操作均需 executor 裁决确认。
第四步:连接聊天平台(可选)
在 Settings → Channels 中配置 Telegram / Discord / Slack 等渠道的机器人 Token,将 nanoinfra 接入团队常用的聊天工具。
第五步:设置定时自动化
nanoinfra cron "0 9 * * *" "检查服务器状态并在异常时告警"
或在 WebUI 的 Automations 面板中图形化配置定时任务和触发条件。
第六步:保持服务后台运行
nanoinfra gateway --background
服务在后台持续运行,即使终端关闭也不中断。可通过以下命令管理:
nanoinfra gateway status # 查看状态
nanoinfra gateway logs # 查看日志
nanoinfra gateway restart # 重启
nanoinfra gateway stop # 停止
适用场景
- 个人 AI 基础设施助理:在私有服务器上运行,处理日志分析、备份检查、告警响应等日常运维任务
- 企业内部 AI 网关:作为组织内的 AI 能力统一出口,对接多种模型,统一管理凭证和权限
- 安全敏感 AI 操作环境:通过能力边界分离架构确保 AI 无法在未经授权的情况下直接操作生产服务器
- 多聊天平台 AI 助手:统一接入 Telegram / Discord / Slack / Email 等多个渠道的 AI 助手
- 长程自动化任务:通过目标(Goals)和定时自动化功能执行需要跨多天、多步骤的基础设施任务
- AI 开发调试:开发者通过 nanoinfra 的 MCP 接口和 WebUI 可观测性功能调试 Agent 行为
- 自托管 AI 产品基础:基于 nanoinfra 的 OpenAI 兼容 API 和 Python SDK 构建自定义 AI 应用
- 隔离环境 AI 测试:在容器中以最小权限运行 AI Agent,测试 AI 生成命令和操作的安全性
适用人群
- DevOps / SRE 工程师:需要 AI 助手处理日常巡检、告警响应、脚本编写的运维人员
- 技术负责人 / CTO:关注 AI 系统可审计性,需要在组织内控层面确保 AI 行为安全可控
- 独立开发者:需要自托管 AI 助手处理开发辅助、服务器管理、自动化任务
- AI 应用开发者:基于 nanoinfra 的 SDK 和 MCP 接口构建需要 AI Agent 能力的工具和产品
- 安全工程师:利用 nanoinfra 的能力边界分离架构,测试 AI 生成命令的安全性
- 系统管理员:在私有环境中管理多台服务器,需要统一的 AI 辅助管理界面
工作原理
nanoinfra 采用双进程协作模型,核心是「Agent 提问、Executor 裁决」的设计原则:
Agent Loop(gateway 进程):运行在 nanoinfra 账户下,负责维护对话上下文、与 LLM 提供方交互、调用工具接口,不持有任何凭证,也不做裁决决策。接收到用户消息后,构建上下文并发送给模型,模型返回工具调用请求,Agent 将请求转发给 executor 并将裁决结果返回给模型。
Executor(nanoinfra-exec 进程):持有凭证库和裁决逻辑,每次接收 Agent 的工具调用请求后,根据能力门控规则(默认严格,无人值守时拒绝所有远程操作)和操作凭证判断是否允许执行。裁决结果(allow / approve / grant / deny)追加到只写的审计日志,该日志 Agent 可读但不可写。若裁决为 deny,拒绝操作在该会话中锁定(latch),即使重启进程也会从审计日志重建拒绝状态。
辅助进程:在完整部署中还有 nanoinfra-fetch(独立账户,运行 Web 搜索和抓取,无权访问用户凭证)和 nanoinfra-mcp(独立账户,运行 MCP 服务器,每个 MCP 服务器有独立的 Landlock 隔离策略)。
渠道接入:gateway 进程同时管理 WebUI、WebSocket、终端、API 等多个渠道的消息路由,以及 Telegram、Discord、Slack 等聊天平台的机器人连接,提供统一的对话入口。
长程记忆:Dream 模块管理跨会话持久化记忆,记忆以分区(partition)组织,不同工作区可有独立的 ops / shared / dev 分区,Agent 在每个分区的访问权限受 MAGNEMO_SCOPE 和 MAGNEMO_PARTITIONS 环境变量控制(当 nanoinfra 与 magnemo 集成时)。
官方链接
- 官网:https://nanoinfra.org/
- GitHub:https://github.com/nanoinfraorg/nanoinfra
- PyPI:https://pypi.org/project/nanoinfra/
- 文档:https://docs.nanoinfra.org/
- 容器镜像:https://github.com/nanoinfraorg/nanoinfra/pkgs/container/nanoinfra
- 最新版:https://github.com/nanoinfraorg/nanoinfra/releases/latest
发布备注:nanoinfra 是 nanobot(作者 Xubin Ren)的活跃分支,由 Alberto Ferrer 维护。发布版本 2.0.0 基于 MIT 许可证,采用 uv/PEP 725 标准发布流程,支持 Python 3.11+。
评论与建议
登录 后参与评论或提建议