> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# NOMAD：战时离线智能体
- URL: https://www.hubwiz.com/blog/nomad-wartime-offline-agents/
- Published: 2026-03-25T14:12:21.000Z
- Updated: 2026-03-25T14:12:21.000Z
- Description: 当你依赖的一切都消失时，智能不再是便利，而是生存的关键。
- Author: admin
- Tags: AGENT, NOMAD, #Import 2026-10-14 14:41

**在降级、断联和资源匮乏的环境中，脆弱的设计毫无容错空间。**

> 每一个缺失的服务都成为故障点，每一秒等待基础设施的时间都是你可能无法承受的损失。

**Project N.O.M.A.D.** 正是为这种现实而生。

这是一个基于残酷前提设计的AI系统：假设你需要时什么都不存在——没有云端、没有API密钥、没有网络、没有安全网。

人类积累的知识被封存在本地硬盘上，交给模型使用。

**Project N.O.M.A.D.** 专为现代系统崩溃的环境设计。它集成了本地AI、基于RAG的知识库、离线维基百科、地图和医疗参考。

让我们在世界陷入黑暗之前看看它的样子。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-tQtABjC-prwM3FDbHsF1gw-1.png)

## 1、内置功能

简而言之，N.O.M.A.D. 提供以下开箱即用的功能：

- **AI聊天与知识库**：基于Ollama的本地AI聊天，支持文档上传和语义搜索（通过Qdrant实现RAG）
- **信息库**：通过Kiwix提供离线维基百科、医疗参考、电子书等
- **教育平台**：通过Kolibri提供可汗学院课程及进度跟踪
- **离线地图**：通过ProtoMaps下载区域地图
- **数据工具**：通过CyberChef提供加密、编码和分析功能
- **笔记**：通过FlatNotes提供本地笔记功能
- **系统基准测试**：通过社区排行榜进行硬件评分
- **简易设置向导**：引导式首次配置及精选内容集合

> N.O.M.A.D. 还包括内置工具，如维基百科内容选择器、ZIM库管理器和内容浏览器。

让我们看看它的实际操作。

## 2、开始使用 Project N.O.M.A.D.

[N.O.M.A.D.](https://github.com/Crosstalk-Solutions/project-nomad?ref=hubwiz.com) 提供了适用于任何基于Debian的操作系统（如Ubuntu）的一键安装命令

```
sudo apt-get update && sudo apt-get install -y curl && curl -fsSL https://raw.githubusercontent.com/Crosstalk-Solutions/project-nomad/refs/heads/main/install/install_nomad.sh -o install_nomad.sh && sudo bash install_nomad.sh

```

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-h9oTdf3RzgKP52FYgMyslw.png)

安装完成后，您可以访问 [http://localhost:8080](http://localhost:8080/?ref=hubwiz.com)

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-C4BaIlbESAilgP0EY__q7g.png)

您将看到**指挥中心**

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-4haMotezToh8_mJBJ9J2hw.png)

首先需要访问 [http://localhost:8080/settings](http://localhost:8080/settings?ref=hubwiz.com) 并安装应用程序。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-ZvtrEumkgQWw4Y5aCgRwJg.png)

我从**信息库**开始。

然后可以转到内容浏览器，开始下载符合您需求的精选内容。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-jqp9DmK4vK2j58HHAOdE7Q.png)

接下来，要设置地图，您需要访问 [http://localhost:8080/settings/maps](http://localhost:8080/settings/maps?ref=hubwiz.com)，并从精选地图区域下载地图。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-qwp2hZcrfN7sChTA52BRpw.png)

现在如果您返回 [http://localhost:8080](http://localhost:8080/settings/maps?ref=hubwiz.com)，您将看到**信息库**现已可用

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-VlHLek84Yz_AE8_0lnoDgw.png)

您可以搜索和阅读下载的内容。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-_44d1vsJVdPqDsG0hNNZIQ.png)

您还可以探索地图。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-v9NvvNZdYPcI2CanYQnR1g.png)

它还有一个设置指南，可根据您的需求定制项目。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-G58D4bp23l9H5qkpVhDT8w.png)

如果系统负载过高，您可以通过实时监控和诊断查看系统状态，数据每30秒刷新一次。

![None](https://www.hubwiz.com/blog/content/images/2026/03/1-7nr_4rMrxxFHKckFdTAOCw.png)

这是一个伟大的项目，可能性是无限的，您可以在许多不同方向扩展 [N.O.M.A.D.](https://www.projectnomad.us/?ref=hubwiz.com) 及其智能体。

在您开始之前，我想详细说明一些内容，以防您对它的架构感到好奇。

## 3、架构作为约束满足

N.O.M.A.D. 有一个基于Docker的编排层，管理多个服务。

关键服务包括：

- **Ollama：** 本地LLM推理
- **Qdrant：** 用于语义搜索和RAG的向量数据库
- **Kiwix：** 离线内容服务器（维基百科、医疗参考、电子书）
- **自定义管理服务：** 管理上述所有服务的编排大脑

N.O.M.A.D. 不使用单一的智能体框架，即没有LangChain导入，没有CrewAI依赖。

它将核心智能体模式（如RAG、工具使用、内存、服务编排）作为其代码库中的一等公民实现。

以下是推荐的运行规格：

- 处理器：AMD Ryzen 7或Intel Core i7或更高
- 内存：32GB系统内存
- 显卡：NVIDIA RTX 3060或AMD同等产品或更高（更多显存=可运行更大模型）、
- 存储：至少250GB可用磁盘空间（最好在SSD上）
- 操作系统：基于Debian（推荐Ubuntu）
- 稳定的网络连接（仅在安装时需要）

## 4、容器即智能体模式

N.O.M.A.D. 的架构提出了一种我称之为**容器即智能体**的模式：每个Docker容器封装一个能力（推理、搜索、内容服务），编排层充当协调它们的监督智能体。

这直接映射到**分层监督模式**。

在这种模式中：

- **监督智能体**（管理服务）将任务委托给专业智能体（容器）
- 每个专业智能体都有明确定义的接口（API端点、Docker健康检查）
- 监督者处理故障恢复（重启崩溃的容器、拉取更新）
- 通信通过显式消息传递（HTTP请求、Docker事件）发生，而不是共享内存

容器即智能体模式以进程内通信的便利性换取：

- **故障隔离：** 崩溃的Ollama容器不会影响Qdrant
- **独立扩展：** 您可以为Ollama分配GPU资源而不影响其他服务
- **技术异构性：** 每个容器可以使用其所需的任何运行时
- **部署灵活性：** 容器可以通过滚动更新独立更新

## 5、作业队列：异步智能体执行

N.O.M.A.D. 使用作业队列（`queue_service.ts`）处理长时间运行的任务：嵌入文件、下载模型、运行基准测试、检查更新。

每种作业类型都是一个单独的类（`embed_file_job.ts`、`download_model_job.ts`、`run_benchmark_job.ts`等），具有自己的执行逻辑。

### 为什么智能体需要队列

大多数智能体框架将执行建模为同步的：用户提问，智能体思考，调用工具，返回答案。

这对于简单的聊天机器人交互有效，但在以下情况下会灾难性地失败：

- **工具执行需要几分钟**（嵌入大型文档、运行复杂查询）
- **多个操作需要并行发生**（在嵌入文件时下载模型）
- **系统需要从故障中恢复**（失败的下载应该可重试，而不是丢失）
- **用户期望进度更新**（显示下载百分比、嵌入进度）

N.O.M.A.D. 通过其队列处理所有这些问题。作业是**持久的**（在服务器重启后存活）、**可观察的**（通过`transmit`实时事件系统跟踪进度）和**隔离的**（失败的嵌入作业不会阻塞模型下载）。

## 6、N.O.M.A.D. 做对了什么以及下一步

1. **将模型视为托管依赖项，而不是服务调用。**

无论您是在本地运行Ollama还是在自己的基础设施上托管模型，您的系统都应该拥有模型生命周期，例如版本控制、更新、回退。

**2\. 实现双内存：对话 + 知识库。**

关系数据库中的短期上下文，向量存储中的长期知识。这是有用智能体的最低可行内存架构。

**3\. 使用异步作业队列执行工具。**

在智能体工作时不要阻塞用户。排队作业，流式传输进度，并让用户干预。

**4\. 容器化能力，而不是智能体。**

每个AI能力（推理、搜索、内容）都有自己的容器。编排层协调它们。

这为您提供了故障隔离、独立扩展和技术灵活性。

**5\. 为降级操作设计。**

当服务宕机时会发生什么？当模型变慢时？当存储已满时？

N.O.M.A.D. 处理所有这些情况，因为离线优先的约束迫使团队从第一天起就考虑故障模式。

**6\. 无情地进行基准测试。**

了解您系统的性能范围。在用户实际拥有的硬件上测试，而不仅仅是在您的开发机器上。

如果您对离线系统有任何评论或问题，我很乐意在评论区听到您的想法！

---

原文链接: [Project NOMAD: Offline Agents for Wartime Survival](https://agentnativedev.medium.com/project-nomad-offline-agents-for-wartime-survival-e749bf14b3a8?ref=hubwiz.com)

汇智网翻译整理，转载请标明出处