桃子桃子快讯
返回首页
工具

NexusRun:把 AI 智能体打包成可移植的单一文件

开源工具 NexusRun 将模型、提示词、工具与凭据封装为单一可移植包,依赖 llama.cpp 或 Ollama 本…

2026.08.19 · 周三5 分钟阅读

NexusRun 是一个面向本地部署场景的开源 AI 智能体打包与运行框架,核心思路是把模型引用、提示词、工具调用与凭据声明统一封装进一个可移植文件,让智能体在任意目标机器上「开箱即用」,同时保持数据不出本地网络。

项目概览

NexusRun 的二进制仅约 11 MB,使用 Go 编写,需要 Go 1.26 及以上版本即可编译,除自身外不依赖任何外部运行时。它建立在 llama.cpp 或 Ollama 等已有本地推理引擎之上,不替代这些引擎,而是补齐「打包、分发、如实反馈」这一层能力。项目仓库为 verdictlayer/nexusrun,已在 GitHub 开源。

使用方式被简化为三条命令:

  • nexus init my-agent --model llama3.1:8b 生成一个 YAML 配置文件,用户可在其中编辑提示词与工具配置。
  • nexus run ./my-agent -p "hello" 直接从本地目录运行该智能体,方便迭代提示词。
  • nexus push my-agent:0.1.0 ghcr.io/you/my-agent:0.1.0 把智能体推送到任意容器镜像仓库;若目标环境无网络,可用 nexus build --seal 把模型一并封进文件,通过 U 盘等方式物理搬运。

单文件描述智能体

NexusRun 用一份可读的 YAML 文件(nexus.yaml)完整描述一个智能体的行为,结构大致如下:

  • models:仅引用外部模型(如 ollama:llama3.1:8b),不把模型权重本身写进文件,使配置保持在 KB 级别而非 GB 级别。
  • entrypoint:声明入口类型与系统提示词。
  • mcp_servers:声明智能体依赖的 MCP 工具服务器,可指定来源(如 GitHub 仓库)、版本与启动命令,并配合 sandbox.allowed_paths 由内核对工具可访问路径进行约束——「未声明即拒绝」。
  • secrets:只声明所需密钥名称,密钥值加密保存在运行机器本地,不会写入可分发的文件本身。

这种设计让智能体既「安全可提交」(不含明文凭据、不含模型权重),又「安全可分享」(读者可直接阅读文件了解它能做什么、不能做什么)。

面向不可控的运行环境

NexusRun 把重点放在「别人的笔记本、混合硬件机架、门店里的 kiosk、从没联网过的设备」这一类目标机器上,认为这才是智能体真正需要工作的场景。为此它做了三件事:

  • 数据留在本地:完全离线运行,模型可被打包封进文件随智能体一同搬运,运行成本不会随调用次数增长。
  • 硬件感知选模:当目标机器没有合适的 GPU 时,NexusRun 会显式提示回退到 CPU,并基于该机器实际表现给智能体打分;当一个模型得分过低时(例如某机器上得分 0/3),框架会自动拒绝该模型并挑选替代者,因为「答案取决于硬件与模型,而不只取决于提示词」。
  • 沙箱隔离执行:MCP 工具服务器在沙箱内运行,文件写入与对外网络访问均受限于 YAML 中声明的范围,验证显示沙箱外没有出现未声明的文件写入或外向连接。

实际运行示例

项目给出了一段终端演示:在断网、无 API Key 的笔记本上,使用 nexus run notes-agent -p "When does the launch window open?" 运行一个内置智能体。智能体通过 llama.cpp 在 CPU 上启动一个 MCP 笔记服务器,调用 notes__list_notesnotes__read_note 两个工具,从 launch.txt 中读到「The launch window opens on 14 March 2027.」并输出结果。本次运行共消耗 54 tokens,速度约 7.0 tok/s,跨 3 轮完成 2 次工具调用。

小结

NexusRun 并非要取代 llama.cpp 或 Ollama,而是在它们之上补一层「让智能体可以被打包、被分享、被如实描述并被安全运行」的中间件。对于需要在隔离环境、共享设备或离线场景中分发 AI 智能体的开发者而言,它提供了一种结构化的打包与沙箱方案;但作为来源不广的开源新项目,其生态成熟度、长期维护与社区采纳情况仍有待观察。

信源