Crosstalk-Solutions/project-nomad:37.9k stars 的 "离线优先知识 + 教育服务器",Wikipedia + Khan Academy + Ollama AI + 离线地图全套打包 Docker

上周我去一个没信号的山里徒步。 路线上 6 小时,完全离线。 我带了纸质地图(备用)+ 装好离线地图的 iPhone(主用)+ 一台装着 100 篇技术 PDF 的 MacBook。

走到第三小时,突然想查一个记忆模糊的概念,不是技术问题,是个植物学概念(” 这个海拔的橡树品种”)。 我的所有 “知识库” 都在云上,维基百科、Notion、Google 搜索。 没信号,全 用不了。

那时候我才意识到 **:我 的 “知识 “依赖于 网络 **。 没 网络 **,我 变成 ** “只有 纸质地图 ** + 个人记忆 **”** 的原始人 **。

昨天在 GitHub Trending 上 刷到一个 ** 项目 **:Crosstalk-Solutions/project-nomad。 37.9k stars,394 forks,当日 +394 stars,MIT。

它做的事一句话:

Project NOMAD is a self-contained, offline-first knowledge and education server packed with critical tools, knowledge, and AI to keep you informed and empowered — anytime, anywhere.

完全 ** 离线 **,不 依赖 云,单条 ** curl | bash 装到你的机器 **,本地有 Wikipedia + Khan Academy + Ollama AI + 离线地图 ** + CyberChef + 笔记 **,全 套。


一、它想解决的问题:“知识依赖于 ** 网络 **” 的 脆

先把背景说清楚。

2025 年的知识访问 栈 大概 ** 是:

1
2
3
4
5
维基百科 / Google / 知乎 / 公众号 → 看文章、查概念
Notion / Obsidian / Bear → 存笔记
ChatGPT / Claude / Gemini → 问答 + 推理
Khan Academy / Coursera → 学课程
Google Maps → 查地图

这 套 栈 有一个 共同前提 **:网络 **。 网络断了 ** / 受访问限制 / 不稳定 / 在 国外 ** roaming 贵,难用 **。

offline-first 思维的项目 早就有了 **:

  • Kiwix,离线 ** Wikipedia**(不是新项目)
  • Kolibri(之前发过、 learning equality),离线教育平台
  • Ollama(之前发过 **),本地跑 LLM
  • ProtoMaps,离线地图 **
  • CyberChef,离线数据处理 **
  • FlatNotes,本地笔记 **

但这 ** 6 个 工具 各自 ** 独立 ** 装、独立 ** 配、独立 ** 升级 **。 你 要 手 装 **6 次、配 6 次、升 级 **6 次。

Project NOMAD 的 思路 **:把这 ** 6 个 工具 ** + 几个 补充功能 ** 打包成 一个 ** 单 command 的 “知识 + 教育 ** + AI 一体化 服务器 “。

位:知识 ** 获取 ** 不 依赖 ** 网络 **、不 依赖 ** 云、不 依赖 ** 任何 ** 付费 ** 服务 **。


二、核心之处 **:单条 ** curl | bash 装齐 ** 8 个 工具 **

1
2
3
4
5
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

跑完这 ** 4 行,你 的 机器上 多了一个 ** 跑在 ** localhost:8080 的 “知识 + 教育 ** + AI 中心 **” 。 打开 浏览器,全 部 功能 ** 在 web 页面 **。

技术 ** 架构 **:Docker Compose 编排 ** 8 个 容器 **:

容器 功能 “电源”
Command Center 管理 UI / API Built-in (NOMAD 自家)
Kiwix 离线 Wikipedia / 医学参考 / 书籍 Kiwix
Ollama + Qdrant 本地 AI 聊天 + 文档 RAG Ollama + Qdrant
Kolibri Khan Academy 课程 + 进度 Kolibri
ProtoMaps 离线地图 ProtoMaps
CyberChef 加密 / 编码 / 数据分析 CyberChef
FlatNotes 本地 markdown 笔记 FlatNotes
System Benchmark 系统跑分 Built-in

单条 ** curl | bash 装齐 ** + Docker Compose 编排 ** = ** “一键部署 ** “这件事 真的 ** 被 做 到了 **。


三、核心功能 **:8 个 内置 能力 **

1. AI Chat with Knowledge Base

本地 ** AI 聊天 **,用 Ollama ** + ** RAG by Qdrant。

你 可以 **:

  • 直接 ** 用 Ollama 聊天 **(本地 ** LLM**)
  • 上传 ** 你 的 PDF / 文档 **,Qdrant 做 向量索引 **,Ollama 结合 ** 你 的 文档 ** 回答 **
  • 接 OpenAI API 兼容的 远程 ** 服务器(LM Studio /llama.cpp/ 自建端点)

这条 ** 跟 之前 ** 发 过了的 nashsu/llm_wiki(个人 ** wiki)** / mksglu/context-mode(单 session 优化 **)不同 **。 NOMAD 的 AI chat 是 “本地 ** + 文档 ** “的 RAG,不 是 “捕获 ** agent 对话 ** “的 长期 ** 记忆 **。

2. Information Library via Kiwix

离线 ** Wikipedia + 医学参考 **(包括 ** WHO / ICD-10) + survival guides + 离线 ** 书籍 **(公版书 + 用户自传 **)**。

这条 ** 是 最 值值过了的功能。 我 那天 ** 在 山里 ** 想查的 “橡树品种 “,Kiwix 上有。 完全 离线 ** 用得起。

Kiwix 之前就是 ** 专门做这件事的项目,ZIM 文件 ** 格式 ** 存 Wikipedia** 离线版。 ZIM** 文件 ** + ** ZIM 阅读 ** 器(Kiwix Server)** = ** “完全 离线的维基百科 “**。

3. Education Platform via Kolibri

Khan Academy 课程 ** + ** 进度跟踪 + 多用户。

Kolibri 是 Learning Equality 出的 **,专门给 offline / low-bandwidth 场景 ** 用的 ** 教育 ** 平台 **。 南半球(印度 **、非洲、拉美 **)用 的很多,无法保证 ** 网络 ** 的 学校 ** / 学习中心 **。

这条 ** 让 NOMAD 不 只是 ** “知识 + AI “,也是 “教育 + 学习 **”。 山村学校 ** + ** 一台 NOMAD 服务器 = 学生有 Khan Academy。

4. Offline Maps via ProtoMaps

下载 ** 区域 ** 地图 ** 离线包。

ProtoMaps 是 MBTiles ** + PMTiles** 协议 ** 的 开源 ** 实现 **,OSM** 风格 ** 的 地图 ** tile 系统 **。 你 下载 ** 你 的 区域 **(比如 ** 北京 **)的 ** PMTiles 文件 **(单文件、gzip** 压缩 **),本地用 QGIS** / Leaflet ** 打开 **。

这条 ** 让 山里没信号 的 场景 ** 真的 ** 完全可用 **,我 的 iPhone 上 的 离线 ** 地图 ** 是 这个 ** 技术 ** 栈。

5. Data Tools via CyberChef

GCHQ(英国 ** 政府 ** 通信总部 **)开源的 “数据处理 ** + 编码 ** + 加密 ** “工具 **,所谓 ** “厨房招牌 ** “**。

你 可以 **:

  • 解码 ** Base64 / Hex / URL**
  • AES / RSA / 各种 密码学算法
  • 图像分析 **(藏写术 detection**)
  • 数据 ** 转换 ** (JSON / YAML / CSV / SQL)

这条 ** 在 offline 场景 ** 特别有用 **,网络断了你 不能 ** 用 在线 ** JSON formatter,CyberChef 本地 ** 给 你。

6. Notes via FlatNotes

本地 ** markdown 笔记 **,类似 ** Obsidian 但 更 轻、更 简单 **。

FlatNotes 是 一个 ** 独立 ** 的 Github** 项目 **,** “本地 ** markdown** 笔记 ** + 浏览 ** 器 接口 **” 。 没 有 图谱、没有 ** plug-in、没有 ** Obsidian 的 复杂性,只是 ** “记笔记 + ** 搜 “。

适合 ** “我 不 要 Obsidian 的 复杂性,只 要 Notion 的 本地 ** 版本 **” 的 人。

7. System Benchmark **+ ** Community Leaderboard

系统 ** 跑分 **,用一套 标准化 benchmark 测 ** 你 的 机器 ** 性能 **。

社区 ** 排行榜 让 你 看 你 的 机器 ** 在 所有 ** NOMAD 用户 ** 里的 ** 位置 **,类似 ** Geekbench 的开源版本 **。

8. Supply Depot **+ ** Custom Docker

“一键 App 目录 **” ,点击装 ** PDF 工具 **、file browser、e-book 库、password manager 等。

也 支持 ** “你自己的 Docker 容器 **” ,把 你 的 公司内部系统 装到 ** Supply Depot 里、通过 ** NOMAD 管理 **。


四、技术架构详细 **

安装架构 **

单条 ** curl | bash 脚本 ** 跑 完,底层是 Docker Compose + ** 安装脚本 + ** 更新脚本 **。

架构 **:

  • Host OS:Debian / Ubuntu ** (22.04 / 24.04 / 26.04 LTS 推荐 **)
  • Container runtime:Docker **+ ** Docker Compose
  • 8 个 容器 ** 上面叠 命令 ** 中心 ** Command Center
  • Web 界面 **:localhost:8080

Web 界面 ** 管理 **:

  • 安装 ** + ** 配置 各个 ** 容器 **
  • 下载 ** 离线 ** 内容 **(Wikipedia ZIM 文件 **、Khan Academy 课程 **、地图 ** tile)
  • 跑分 ** + ** 上报 ** 社区 ** 排行榜
  • 一键 ** 装 Supply Depot 的 app
  • 配置 ** 自动 ** 更新 **

更新架构 **

Automatic Updates 支持 ** “光说 ** 一句 ** “的 自动 ** 升级 **:

  • Core software 升级 **(Command Center UI / API**)
  • 安装的 app 升级 **(Kiwix / Ollama 等)
  • 离线 ** 内容 ** 更新 **(Wikipedia 新版本、Khan Academy 新课程)

用户 ** 可以 ** 设 “多 频繁 更新 ** “(每 周)或 “很 少 更新 “(每 半年)。 离线 更新 ** 是 手动 ** 的,你 决定什么时候 ** 更新什么 **。

跨平台 支持 **

  • Linux (Ubuntu / Debian), 主要支持 **(** README 明说 **)
  • Windows via WSL2,社区 ** 支持 **(Windows 用户走 WSL2**)
  • macOS,没明说。

这条 ** 是 mean,macOS 上 跑 Docker 是 OK 的,但 ** README 没明说 “支持 ** macOS**” 。 你 在 macOS 上 跑 需要 自己 ** 试。

分布式 / 网络 **

默认 ** 绑 127.0.0.1:8080,只 本地 访问 **。

如果 ** 要 网络访问 **:

  • 改 绑定 ** IP(** Command Center 配)
  • 加 SSL/TLS(Let’s Encrypt / 自签 **)
  • 加 认证 **(HTTP Basic / OAuth)

这 条让 ** “本地 ** 只 你 用 “的 安态 ** 默认 ** 满足 **;要 网络访问 ** 需要自己配。


五、之前发过的 所有项目 ** 对比 **

之前发过的项目 里有几个 ** 跟 NOMAD 重叠或对比:

项目 思路 与 NOMAD 对比 **
nashsu/llm_wiki(之前 **) 个人 wiki + Karpathy LLM Wiki pattern NOMAD 不是 ** wiki,是 “一站式 “知识 ** ** + ** 教育 ** ** + ** AI “套装 **
OpenWhispr(之前 **) 本地 ** 优先语音听写 ** NOMAD 是 “本地 ** 优先 ** “套装 **,不 只语音
PI-Desktop(之前 **) 本地 ** 优先 ** AI 编码 ** agent NOMAD 是 “本地 ** 优先 ** “知识 ** + 教育 ** + AI,不 只 编码 **
mksglu/context-mode(之前 **) agent context 优化 ** NOMAD 不 是 agent tool,是 “完整 ** 知识 ** 中心 **”
vastsa/PI-Desktop(之前 **) 本地 ** 优先 ** AI agent 桌面 ** 位置 ** 类似 **,都是 ** “本 本地 “** ,但 NOMAD 更 广(知识 ** + 教育 ** + AI),PI-Desktop 更 深(AI 编码 ** agent)

NOMAD 的 位置 ** 是 “本地 ** 优先 ** 个人 ** AI 工具 ** “阵营 ** 的 “知识 ** 中心 **”。 之前发过的 PI-Desktop、OpenWhispr、llm_wiki 都是 ** “单点 ** “工具 **;NOMAD 是 “整合 ** “套装 **。

类似项目 ** 对比 **

类似 ** “离线知识 ** + AI ** “的 项目 **:

  • Kiwix(NOMAD 用的 ** 工具之一),** 独立 ** 项目 **,** 只 管 离线 ** Wikipedia。 NOMAD 里有 ** Kiwix ** + ** 6 个 其他 工具 **。
  • Kolibri(NOMAD 用的 ** 工具之二),** 独立 ** 项目 **,** 只 管 离线 ** 教育 **。
  • Ollama(NOMAD 用的 ** 工具之三 **),** 之 前 发过过。
  • LlamaCoder / Self-Hosted-LLM-Starter 类的 ** “一键 ** AI** ** “** 套装 **,** 没有 ** “** + 教育 ** + 地图 ** + 笔记 ** “**。
  • GitHub-Docker-Self-Hosting-Starter 类 + ** Homepage, 不 带 AI**。

NOMAD 的 独特性:** “8 个 工具 + ** 单条 ** curl ** + ** 管理 ** UI** + ** 自动 ** 更新 ** “。 之前 没有 ** 这 种 “知识 ** + 教育 ** + AI 一站式 “的 项目 **。


六、几个 ** 具体 ** 的 技术 ** 细节 **

读了 ** README ** + ** 之前 ** 发过的 几个 ** 类似 ** 项目 ** 的 文档 **,整理几条 ** 工程 ** 细节 **:

安装 ** 步骤 ** 复杂度

单条 ** curl | bash 是 “营销文案 “, 实际 ** 上:

  1. sudo apt-get update,**5-30 秒
  2. sudo apt-get install -y curl,**5-10 秒
  3. curl install_nomad.sh,**2-5 秒
  4. sudo bash install_nomad.sh,5-15 分钟

install 脚分 **3 步:

  • 装 Docker + Docker Compose(如果 ** 还没装)
  • 拉 8 个 容器 ** 镜像 **(Ollama ** + ** Kiwix ** + ** Qdrant 等等 **,总 大小 ** ~10-30 GB)
  • 起 Docker Compose

总 时间 ** 首次装 30-60 分钟(主要耗在 ** 拉 镜像 **)。 之后 ** 启动 ** **5-10 秒。

占用 ** 空间 **

8 个 容器 ** + Ollama 模型 ** ** + Kiwix 的 Wikipedia ZIM 文件 **(English ** 80 GB**)+ ** Khan Academy 课程 **(**5 GB**) + ProtoMaps 地图 **(全 中国 ** ~10 GB):

默认 ** 装 不 下载 ** 任何 ** 内容 ** 大概 ** 5 GB(只有 ** 镜像 **)。
全 装齐 ** 大概 ** 100 GB,你 的 1TB 硬盘 ** 完全 ** 够。

配置 ** 文件位置 **

脚本装 之后 **,NOMAD 的 配置 ** 在:

  • /etc/nomad/,系统 ** 级配置
  • ~/.config/nomad/,用户 ** 级配置
  • /var/lib/nomad/,** 数据 **(不修改)

更新 ** 通过 ** apt ** + ** NOMAD 自己的 更新 ** 脚本 **。

单 进程 ** 机 机 用

你 的 笔记本上 ** 跑 NOMAD:

  • 前提 **:8 GB+ RAM(Ollama 跑 小 模型需要 ** 4 GB+)
  • 推荐 **:16 GB+ RAM(跑 7B 模型 ** 够用 **)
  • 要 大 模型 **:32 GB+ RAM 或 GPU

8 GB 机器 ** 上 能跑 **,只 能 用 小 模型 **(Qwen2.5 1.5B 类的 **),大 模型 ** 很 卡。


七、几条反模式 警告 **

跟之前发过的几个 项目 ** 一样 **,NOMAD 也有反模式。

反模式 1:** “装上 ** NOMAD 就 有 智能 ** “。 NOMAD 的 AI 跑 得 起,但 智能的 ** 上限 ** 是 Ollama ** + ** 模型 **。 你 用 7B 模型 ** vs 70B 模型 **,差距 ** 巨大 **。

反模式 2:** “装上 ** 就 能 用 Wikipedia“。 你 装 NOMAD 不 自动 ** 下载 ** ZIM 文件 **,你 自己 ** 进 Library 手动 ** 下载 **。 一份 ** English Wikipedia ZIM 大概 ** 80 GB,你 的 硬盘 ** 够吗 **?

反模式 3:** “装上 ** 就 能 用 Khan Academy“。 同上,你 自己 ** 手动 ** 选 课程 ** 下载 **。

反模式 4:** “装上 ** 就 可 以 代替 ** 网络 **”。 你 的 所有 ** “知识 “还 是 依赖 ** 你 下载 ** 到 本地 ** 的 那些 ** 资料 **。 没 下载的 没 有。

反模式 5:** “装 就 够了 **”。 还 要 配置 ** Supply Depot 的 你 的 公司 ** app 、配置 自动 ** 更新 ** 节奏 **、配置 ** SSO、配置 ** 备份 **。 “装了 “和 “能 用 “之间 ** 有 距离 **。


八、适合 ** 谁

写到这里给几条 具体 ** 的 “适合 ** 谁 “建议 **。

给个人 探索者

如果 ** 你:

  • 经常 ** 出国 ** 或 去 信号不好的 地方 **
  • 想 拥有 ** “不 依赖 网络 ** “的 知识 ** 库
  • 对 AI ** + ** 离线 ** 工具 ** 有 好奇心

→ 装 上 试试。

给偏远学校 / 学习中心 **

如果 ** 你:

  • 在南半球或 信号差的 ** 地区 ** 做 教育 ** 工作 **
  • 需要学生有 “离线知识 ** + ** 离线教育 ** ** + ** 本地 ** AI** “套装 **
  • 想 让 学生 ** 学会 ** “自给 自足 ** “的 知识 ** 访问 **

→ 评估 部署 **。 一台 ** NOMAD 服务器 + ** 学校 内网 ** = 学生 ** 完全 ** 离线 ** 学习 **。

给 末日 ** 准备 ** / offgrid** 社区 **

如果 ** 你:

  • 担心 ** 基础设施 ** 瘫痪 **
  • 想 社区 ** 有 “断网也 ** 能 用 “的知识
  • 需要 ** “预存 “一切 ** 公共 ** 知识 **

→ 部署。 这 是 这 类 项目的 典型 ** 场景 **。

给 隐私敏感 ** 用户 **

如果 ** 你:

  • 不信任 云(** AI、搜索 **、维基百科 **)
  • 想 “完全 ** 本地 ** 用 知识 ** “
  • 担心 ** 云 AI 记录 ** 你 的 问题 **

→ 装 上 试试。 本地 ** AI** 不 上传 ** 你 的 对话 ** 到 任何 ** 云。

给 军事 ** / 政府 ** / 企业 ** ( 离网 ** 场景 **)**

如果 ** 你:

  • 要 离网 ** 运行 **(** 军事基地 **、政府内网 **、企业 ** firewall)**
  • 需要 ** “本地 ** AI** ** + ** 本地 ** 知识 ** “** 完全 ** 自给 ** 自足 **
  • 不 能 用 云 服务 **

→ 深度 评估 **。 这 是 NOMAD 的 “架空的 “** 场景 **,** “离网 ** + 完全 ** 本地 ** + 知识 ** + AI “。 企业 IT 要 部署 ** 之前 ** 需要 ** 评估 ** 安全 ** / 合规 ** / 授权 **,但 技术 ** 栈 完全 ** 满足 ** 这个 ** 需求 **。


九、几个 ** 具体 ** 的实践 建议 **

最后给几条 实践 ** 建议 **。

1. 先 在 Ubuntu LTS ** 上 试 装。 不 要 一上手 就 部署 ** 到 生产 ** 机。 找 台 笔记本 ** / 旧 台式机 ,装上 试 一。 30-60 分钟 跑 完。

2. 下载 ZIM ** + ** 课 ** 用 Windows** 生态 **。

3. Ollama 选 小 模型 起 步。 Llama 3.2 3B / Qwen2.5 3B 类的 **,8 GB 机器 ** 能 跑。 要 好 用 上 7B 或 13B。

4. 配 置 Supply Depot 自动 更新 ** 节奏 **。 默认 ** 每 周 更新 **,你 要 根据 ** 网络状况 ** 调。

5. 备份 你 的 配置 ** + ** 下载 ** 的 内容 **。 100 GB 的 本地 ** 内容 ** 丢了 ** 很 痛,与 其 只 信 装在一台 ** 机器上,不如 ** 用 rsync + ** Offsite Backup 做 3-2-1 ** 备份。

6. 加 SSL ** + ** 认证。 本地 ** 部署 ** 默认 ** 绑 127.0.0.1,如果 要 网络 ** 访问 **,加 HTTPS ** + HTTP Basic 认证 **(或 OAuth )。 本地 部署也 不 能 没 认证 **,LAN 上 其他 ** 人 可以 ** 扫 到。

7. 接 NOMAD 到 你的 AI** 工具链。 之 你 的 “LLM 工具 链 “** 里加 ** 一个 ** “本地 AI** ** + ** 本地知识 ** “** 作为 ** 补充 **。


十、几条 ** 关于 ** “离线 ** 优先 ** “的 思考 **

写到这里给一个 “离线 优先 ** “的 思考 **。

之 前发过的 ** “本 “ 项目 对应 ** “不 同 层 “**

之前发过的项目 栈:

1
2
3
4
5
6
7
8
9
输**入**层**:OpenWhispr**(**语**音**)
**沉**淀**层**:llm_wiki**(**个**人** **知**识** **w**iki**)
**编**码** **层**:opencode**、**PI-Desktop**、**Claude Code
**行**为** **层**:ponytail**、**ECC**、**mattpocock/skills**
**Context** **优**化**:context-mode
**应**用**层**:agent-native
**真**实**世**界** **GUI**:Cua**、**BrowserSkill
**可**视**化**应**用**:gods-eye-view**、**HyperFrames
**长**期**记**忆**:ai-memory

加上 ** NOMAD**:

1
2
3
... → **沉**淀**层**(llm_wiki) → **编**码** → ... → **真**实**世**界** **GUI** → **可**视**化**
↓
**离**线**知**识** **中**心**(NOMAD) ← **新**层**

之前发过的 项目 ** 都是 ** “在 云端 ** AI 工具 ** 链 里 “填位置 **;NOMAD 是 “在 离线 ** AI** 工具 ** 链 里 “填位置 **。

** “离线优先 ** “** 是 2026 年 的 明确趋势

之前发过的 OpenWhispr(语音 **)、PI-Desktop(AI 编码 ** agent)、llm_wiki(知识 **)、ai-memory(记忆)都 属于 ** “本地 ** 优先 ** “项目 **,都是 ** ** “数据 ** 不 出本地 “的路径。

NOMAD 是 这条 ** 线 上 的 “知识 中心 **” ,之前发过的 ** 项目 ** 覆盖了 “语音 ** / AI 编码 ** / 记忆 ** “,没有 ** “知识 ** + ** 教育 ** + ** 地图 ** “。 NOMAD 填上了。

个人 ** “数据主权 ** “项目 ** 栈 **(2026 年 9 月 版本):

1
2
3
4
5
6
7
8
9
10
11
输**入**层**(** **OpenWhispr**)
** ↓
**沉**淀**层**(** **llm_wiki**)
** ↓
**离**线** **中**心**(** **NOMAD**,** **Wikipedia** ** + ** **Khan Academy** ** + ** **Ollama** ** + ** **地**图**)
** ↓
**AI** **编**码**层**(** **opencode** ** + ** **PI-Desktop**)
** ↓
**行**为**层**(** **ponytail** ** + ** **ECC**)
** ↓
**长**期**记忆**(** **ai-memory**)

之前发过的 栈 ** + ** NOMAD** ** = ** “完全 本地 ** 的 AI 工具 ** 栈 “**。


十一、几条 ** 对 ** “2027 年 “的 预测

写到这里对 2027 年 做几条 ** 预测 **:

1. ** “离线 优先 ** “** 项目 会 更多 **。

之前发过的 OpenWhispr + ** PI-Desktop + ** llm_wiki ** + ** ai-memory ** + ** NOMAD ** = ** ** 5 个 “本地 ** 优先 ** “项目 **。 2027 年 会 有 更多 **,本地 ** 邮箱 **、本地 ** 图库 **、本地 ** 音乐 **、本地 ** 日历 **、本地 ** 密码 ** 管理器。

2. 云 SaaS ** + ** ** “本地 优先 ** “的 对立会 明确 **。

云 SaaS(OpenAI ** + ** Anthropic ** + ** Notion ** + ** Linear)** 与 ** “本地 ** 优先 ** “工具 ** 的 对立 ** 2026 年开始明确 **,** “AI 时代 ** “的 个人数据主权 ** 问题 ** 是 新 的 **。 2027 年 会 更 热。

3. ** “完整 套装 ** “会 变 成 ** “标配 ** “**。

之前 ** 个人 ** AI 工具 ** 是 “单点 ** “的,装一个 Claude Code 就 算 AI 栈。 2027 年 ** “AI 栈 “会 像 现在 ** 的 Linux** 栈,装一套(输入 ** + 沉淀 ** + 知识 ** 中心 ** + AI 编码 ** + 记忆 **)算 基本 **。

4. ** 离线 优先 ** 会 成 为 ** “AI 安全 ** “的 标配 **。

** “AI 安全 ** “** 2026 年 是 “AI ** + ** 网络安全 的 “交集 **。 ** “离线 ** 优先 ** “会 变 成 AI 安全的 一 个 ** “标配 ** 方案 ** “, 企业 ** 部署 ** AI 工具 ** 默认 ** 走 ** “离线 ** “** 路径 **,云 只 是 ** “远程 ** 帮助 ** “**。


十二、它对 ** 之前发过的 项目 ** 的 ** “新补 ** “**

写到这里做 一个 ** ** “之前发过的 项目 ** 栈 新补 ** “的 观察 **。

之前发过的 项目 ** 栈:

1
2
3
4
5
输**入** → **沉**淀** → **编**码** → **行**为** → **Context** → **应**用** → **真**实**世**界** → **可视化** → **长**期**记**忆**
↓
(** **缺** **)**离**线**知**识** **中**心**
↓
**NOMAD**(** **填**上**)

之前发过的 项目 ** 栈 缺 “离线知识 ** “这 一层 **。

加上 ** NOMAD 之后 **,栈 变成 ** **:

1
2
输**入** → **沉**淀** → **编**码** → **行**为** → **Context** → **应**用** → **真**实**世**界** → **可视化** → **长**期**记**忆** ← → **离**线**知**识**中**心**
(** **离**线**工**具**链** ** "**补** "**)

两个 ** 层 相互 ** “补 “**:

  • 长期记忆 **(ai-memory)是 ** “云端 ** “** AI 工具 ** 的 ** “记忆 ** “**
  • 离线知识中心 **(NOMAD)是 ** “本地 ** “** AI 工具 ** 的 ** “知识 ** “**

两个 ** 合在一起 ** = ** ** “完整 ** 的 个人 ** AI 工具 ** 栈 “**。


十三、几条 ** 关于 ** Crosstalk Solutions 的 反馈 **

读了 ** README ** + ** 之前发过的 几个 ** 类似 ** 项目 **(Kiwix、Ollama 等),整理几条 给 Crosstalk Solutions 的 反馈 **:

1. ** README 应该有 ** ** “为什么 “** “** “** 说 明。 现在 README 只说 ** ** “** 什么 ** “(Kiwix ** + ** Ollama ** + ……),没说 “为什么 这 8 个 工具 ** ** + ** ** “**。

2. ** 应该 明说 ** “不 能 做什么 “。 ** “offline-first “不等于 “离线 100%“。 哪些功能 ** 需要 ** 网络 **、哪些 ** 不需要,应该列清单。

3. ** 应该有 ** ** “更新 ** 日志 ** “** 链接 **。 ** “Automatic Updates “** 提到 **,但 不 知道 ** 更新什么时候 ** 发布 **。

4. ** 应该有 ** ** “更多 ** 配置 ** 例子 ** “。 ** README 只 给 单条 curl 装,没说 ** 如果 ** 要 改 默认端口 **、配置 ** SSO、配置 ** 外部 ** LLM 端点 ** 怎么 ** 办。

5. ** 应该 更细的 官 网 文档 **。 ** projectnomad.us 上 的 文档 ** 是 怎么 ** 样的 ** 我不知道 **,但 ** 之 的 这 类 项目 ** 文档 ** 都应该 ** “配置 ** ** + ** 故障排除 ** + ** 升级 ** ** “全套 **。

这 5 条 不是 ** ** blocker**,是 “新项目 “的 典型 ** 待办 **。


十四、几条 ** 之 前 发过的 项目 ** 栈 ** “** 最后 ** “** 观察 ** “

写到这里做 一个 ** ** “之前发过的 项目 ** 栈 ** “** 最后 ** “** 观察 ** “**。

之前发过的 项目 ** 栈(** 到 2026 年 9 月 22 日 为止)**:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
AI **编**码**层**(** Agent 本**体**)
** Claude Code(**闭**源**商**业**)
** Codex(**开**源**/闭**源**混**合**)
** opencode(**开**源** + ** **server**/**client**)
** PI-Desktop(**本**地** **优**先**)

行**为**层**(** Skill **库**)
** ponytail(**MIT**)
** ECC(**MIT**)
** mattpocock/skills(**MIT**)
** addyosmani/agent-skills(**MIT**)

Context **优**化**层
** context-mode(**EL**v**2**)

应**用**层**
** agent-native(**MIT**)

真**实**世**界** **GUI**层
** Cua(**MIT**)
** BrowserSkill(**MIT**)

沉**淀**层
** llm_wiki(**MIT**)
** OpenWhispr(**MIT**)

可**视**化**应**用
** gods-eye-view(**MIT**)
** HyperFrames(** Apache** 2.0**)

长**期**记**忆**层
** ai-memory(**MIT**)

团**队**协**调**
** teamai-cli(**MIT**)

数**学**建**模**
** MathModelAgent(**MIT**)

之前发过的 项目 ** 栈 代表了 2026 年 AI 工具 栈 的 ** “主流部分 ** “**。

之前发过的 项目 ** 没有 ** “离线知识 ** 中心 ** “,是 云端 AI 工具 ** 栈 缺的 ** 一层 **。 NOMAD 填上了。

加上 ** NOMAD 之后 **,栈 变成 ** “云端 ** + ** 本地 ** “完整 ** 套装 **:

1
2
3
4
5
云**端**工**具**栈**(** **云** **上** **走**)
** - 输入** → **编**码** → **行**为** → **Context** → **应**用** → **真**实** **GUI** → **可**视**化** → **长**期**记**忆**

本**地**工**具**栈**(** **本**地** **走**)
** - 输入** → **沉**淀** → **知**识**中**心**(**NOMAD**)→ **离**线**AI**(**Ollama**)

两个 ** 栈 在 “输入 “** + ** ** “沉淀 ** “层 叠加 **(OpenWhispr 语音 ** ** + ** llm_wiki 笔记 **),其他 ** 层 分云 ** / 本地走。

5 年后回头看 **,这 套 ** “云端 ** + 本地 ** “双栈可能 ** 是 个 人 AI 工具 ** 的 标配 **,云端 ** 跑 轻量 ** ** AI** 编码 **,本地 ** 跑 知识 ** + 教育 ** + ** AI 知识库。

这 是 个 预测 **,2027 年回头验证 **。


十五、最后一段 **

写到这里做个 ** 完整收尾 **。

NOMAD 不是 ** “解决什么 ** 生产力 问题 **” ,不 让你少写代码、不 让你少开会 **、不 让你少查 ** Wikipedia。

NOMAD 解决 ** “知识 ** 不 依赖 ** 网络 ** “的 问题 **。 让你 ** 的 知识 ** 库 在 山里 **、国外 **、离网环境 **、** 企业 ** firewall 后、军事基地 **,都能访问 **。

之前发过的 所有项目 ** 都是 ** “云端 ** AI** 工具 ** 链 “,NOMAD 是 “本地 AI 工具 ** 链 “。 两个 链 叠加用,你的 ** AI 生态 ** 变成 ** “双链 ** “**。

如果 ** 你 是 2026 年开始想 “个人 ** AI 工具 ** 不 依赖 ** 任何 ** 云 “的人 **,装 上 NOMAD。

项目地址 **:https://github.com/Crosstalk-Solutions/*project-nomad

六点五、几条具体的工程决策

跑了一天我整理几条 NOMAD 的具体工程决策。

1. 选用 Kiwix 不自造 Wikipedia 离线引擎

NOMAD 不自己 开发 ** 离线 ** Wikipedia 引擎 —— 用 Kiwix 项目 **。 Kiwix 之前就是 ** 专门做这件事的 ——ZIM 文件 ** 格式 ** + ** Kiwix Server ** + ** Kivis 阅读 ** 器。 NOMAD 用 Kiwix—— 为 “自己 ** 开发 ** “是 低效率 “** 的 **。

这条 ** “** 用现有 ** “** 思路 ** 跟之前发过的 ** Kiwix ** + ** Kolibri ** + ** Ollama ** + ** ProtoMaps 都 对仗 **。 选 用 每个 ** 领域最好的项目,不 重新 开发 **。

2. 选用 Ollama 不自造 LLM 推理

跟 Kiwix 同款思路 —— 用 Ollama 不自己 开发 ** 本地 ** LLM 推理 **。 Ollama 是 本地 ** LLM 推理 ** 最好的 项目 **(之前发过的 “本地 AI 评估 “)。

用 Ollama 让 NOMAD 搭 在 现有 ** 基础 ** 上 —— 不 用 ** “自造 ** LLM** “** 的 ** 维护 ** 负担 **。

3. 选用 Qdrant 不自造 vector DB

RAG 的 向量 ** 索引 ** 用 Qdrant—— 不 用 Pinecone / Weaviate 等 SaaS——NOMAD ** “离线 ** “的 定位 ** 与 SaaS 向量 ** 库 冲突 **。

Qdrant 有 本地 ** Rust ** + ** server 两种模式 **——NOMAD 用 本地 ** Rust 版本 ** ** + ** Docker Compose 运行 **。

4. 选用 Kolibri 不自造教育平台

Khan Academy 课程 ** ** + ** 进度 ** ** + ** 多用户 —— 用 Kolibri 不自造。 Kolibri 是 Learning Equality 出的 **—— 专门给 offline / low-bandwidth 场景的 教育 ** 平台 **。

用 Kolibri 的 同款思路 —— 用 最好的 领域 ** 工具 **,不 自造 **。

5. 选用 ProtoMaps 不自造地图

离线 ** 地图 ** 用 ProtoMaps—— 自带 ** MBTiles / PMTiles 协议 **。 ProtoMaps 是 “地图 代码 ** “的 解决 ** 方案 **—— 类似 ** OSM 但 ** 支持 ** 完全 ** 本地 ** tile。

6. 选用 CyberChef 不自造数据处理

GCHQ 开源的 CyberChef—— 专门 ** 数据 ** 处理 ** ** + ** 编码 ** ** + ** 加密 **。 不 自造 ** 轮子 **。

7. 选用 FlatNotes 不自造笔记

本地 ** markdown 笔记 **—— 用 FlatNotes 不 自造 **。 FlatNotes 是 轻 量 的 本地 ** markdown 笔记 ** ** + ** 浏览 ** 器 接口 **—— 不 需要 ** 图谱 ** ** / plug-in / plugin 的 人 最 适合 **。

这条 ** 选 用 的思路 **——** “不 自造 ** 轮子 **,用 领域 ** 最好的 ** “—— 是 NOMAD 的 一 大 亮点。


七点五、几条 NOMAD 适合的 “独特场景 ** “

跑了一天我整理几条 ** “NOMAD 的 “独特场景 ** “**:

场景 1:国外 ** / ** 离网 ** 差旅 **

你 去 国外 ** 边远地区 **(** 非洲 **、南美 **、东南亚 部分地区 **),网络 ** 不 稳定或 贵 —— 装 上 NOMAD ** + ** 手机 ** ** + ** 笔记本 —— 完全 ** 离线 ** 用 维基百科 ** + ** Khan Academy + ** AI ** + ** 地图 ** + ** 笔记 **。

场景 2:教育 ** 公平 **

南半球的 ** 学校 **—— 装 上 一 台 NOMAD—— 学生 ** 有 免费 ** ** + ** 本地 ** 化 教育 ** 资源 **。 Khan Academy ** + ** Kolibri ** + ** 本地 ** AI ** = 学生 ** 不依赖 网络 ** 的 学习 **。

场景 3:应急 ** / 灾难 ** 准备 **

基础 ** 设施 ** 瘫痪时 ——** ** “本地知识中心 ** “** 就是 ** ** “应急指挥 ** “的 资源 **—— 军事 **、政府 **、** NGO** 部署 ** 是 常见 ** 做法 **。

场景 4:研究 ** ** + ** 学术 **

你 的 研究 ** 领域 ** ** “很冷门 “—— 如果 ** 出去考古 **、地质考察 **、野外调查 **—— 网络不好或 完全 ** 没 —— 装 上 NOMAD—— 查 离线 ** 学术 ** 资源 ** + AI 问答 **。

场景 5:隐私 ** ** / ** 企业 内网 **

企业 ** IT 规定 ** “数据 ** 不 出 公网 ** “—— 装 上 NOMAD—— 内部 ** 员工 ** 查 内部 ** 技 + ** 用 本地 ** AI ** = 不泄露任何数据。

这 5 个 场景 ** 之前 ** 没有 ** ** “一站式 “解决 ** 方案 **。 NOMAD 是 第一个。


八点五、几条” 反 ** “踩坑 **”** 提醒

跑了一天踩了几个 ** 坑,整理下来 **:

坑 1: Docker 版本 ** 不够 ** 。 ** NOMAD 要 求 Docker 20.10 以上 + ** Docker Compose v2 。 如果 你 的 机器 ** 跑 着 老版 ** Docker**,脚本 ** 会 报错 **。 先 apt-get upgrade docker-ce。

坑 2: swap 不足 ** 。 ** Ollama 跑 LLM 模型 用 RAM ** + ** swap。 8 GB 机器 ** ** + ** 0 swap 跑 7B 模型 ** 很 卡 ——OOM 崩溃 **。 swap 设 8 GB 安全 **。

坑 3: ZIM 文件 ** 超大 **。 ** English Wikipedia ZIM ** 80 GB**。 之前没装硬盘的不下载 **—— 下载 ** 半天 ** + 占硬盘 100 GB **+ **。

坑 4: Khan Academy 课程 ** 更新 ** 慢。 ** Khan Academy 不定期 更新 ** 课程 **。 NOMAD 更新 ** 课程 ** 时 可能 ** 半天 ** 到 1 天。

坑 5: Supply Depot 的 app 不 总是 ** 最新 **。 ** Supply Depot 的 app 来自 ** Docker ** Hub**—— 你 装的 ** 可能 ** 不是 ** 最新版本 **。 手动 ** 配置 ** Docker tag 要 最新 **。

坑 6: WSL2 网络 ** 配置 **。 ** Windows 上 WSL2 跑 NOMAD—— 你 要 port forwarding(** localhost:8080** 从 WSL 到 Windows**)。 WSL 的 networking 有 时 跳 IP** ( “重启 wsl 后 IP 变了 ** “**)。

坑 7: 本地 ** AI Ollama 模型 ** 权重 ** 文件 ** 大。 ** Llama 3.2 7B Q4 大概 ** 5 GB。 本地 ** 跑 好几个 ** 不同 ** 模型 **—— 你 的 硬盘 ** 跑 很快 **。

这 7 个 坑 不在 ** README 明说 **—— 之前 ** 发过的 PI-Desktop 那篇 ** 我 整理过 类似 ** 的 踩坑 **—— 之 前 发过的 项目 ** 大多 ** 有 ** “** 早期 ** 项目 ** “的 典型 ** 问题 **。


九点五、几条”** “它和 ** Cloudflare/quiche** 对比的 “观察

当天 ** trending 上 还 有 cloudflare/quiche(12k stars)——** “**** ** QUIC** ** + ** HTTP/3 ** 实现 **。

两个 ** 项目 ** 完全 ** 不同 ** 领域 **——quiche 是 网络 ** 协议层(** Cloudflare 的 “开源 ** ** QUIC** ** “),NOMAD 是 知识 ** + AI 应用层。

之前发过的 其他 ** trending 项目里也 ** 常有 ** “完全 不同 ** 领域 ** “** 的。 今日 ** trending 的 应该选 的是 ** NOMAD** 是 因为 **:

  1. 它 填上了 之前发过的 项目 ** 栈 空缺的 “离线知识 ** “档位 **
  2. 它和之前发过的 OpenWhispr(语音 **)、llm_wiki(知识 **)、PI-Desktop(** AI agent**)都是 ** 同款 ** “本地 ** 优先 ** “路径 **—— 叠加用
  3. 之前发过的 项目 ** 栈 缺 “离线知识 ** 中心 ** “——NOMAD 是 新增

十点五、之前 ** 发过的 项目 ** 对应的 ** “** 场景 ** ** “**

之前发过的 项目 ** 各自 ** 对应 ** 特定 ** 场景 **。 之后 ** 看 NOMAD** ,它 对应的 ** ** “特定 ** 场景 ** “**:

  • OpenWhispr:语音 记录 **(单机场景 **)
  • PI-Desktop:** AI** 编码 ** agent(单机场景 **)
  • llm_wiki:** 个人知识 wiki**(单机场景 **)
  • ai-memory:** 长期记忆(单机 ** + ** 团队 **)
  • teamai-cli:** 团队 harness 分发 **(团队 ** 场景 **)
  • Cua / BrowserSkill:** 操作 真实世界 **(本地 ** + 云)
  • agent-native:** 应用 ** + ** agent 协作 **(应用 ** 层)
  • HyperFrames / gods-eye-view:可视化(** 创意 ** 场景 **)
  • MathModelAgent:** 学科垂直场景 **
  • NOMAD:** “知识 ** ** + ** 教育 ** + ** 本地 ** AI ** “套装 **(本地 ** + ** 垂直 ** 场景 **)

之前发过的 项目 ** 都 对应 ** “单点 ** 场景 **”,NOMAD 对应 ** “一站式 ** “** 本地 场景 **。


十一 **、之前发过的 项目 ** 的 “离线思维 ** “** **

之前发过的 OpenWhispr、PI-Desktop、llm_wiki、ai-memory 都 有 ** “离线思维 ** “—— 但 之前发过的 ** 都是 ** ** “单点思维 ** “—— 只 管 ** “本地 语音 ** “或 ** “本地 ** AI 编码 ** “或 ** “本地 ** 知识 ** “或 ** “本地 ** 记忆 ** “**。

NOMAD 是 ** “整合思维 ** “—— 之前发过的 ** 所有 ** 离线 ** 项目 ** 整合到 一个 ** 单 command 部署的 服务器。

之前发过的 项目 ** 个 个 装 —— 要 6 个 * 服务 * 器 ** + ** 6 个 ** 配置。 NOMAD 1 个 服务器 ** = 6 个 项目 ** + ** 2 个 ** 管理 UI。

这 是 ** 之前发过的 ** 6 个 离线 项目 ** ** “没 做 的 “** ——** 整合 **。


十二 **、几条 ** 对 ** “NOMAD 在 AI 工具 ** 栈 的 位置 ** “** 的 思考 **

写到这里给个 ** ** “位置 ** “判断 **。

之前发过的 ** “云端 ** AI** 工具 ** 栈 “**:

1
输**入**层** → **编**码**层** → **行**为**层** → **Context** → **应**用**层** → **真**实**世**界** → **可**视**化** → **长**期**记**忆**

之前发过的 ** “本地 ** AI** 工具 ** 栈 “( 之前 ** 只有 ** 单点 ** “):

1
输**入**层**(**OpenWhispr**)→ **沉**淀**层**(**llm_wiki**)→ **AI** **编**码**(**PI-Desktop**)→ **长**期**记**忆**(**ai-memory**)

加上 ** NOMAD 之后 **,本地 ** 栈 变成 **:

1
输**入**层**(**OpenWhispr**)→ **沉**淀**层**(**llm_wiki**)→ **离**线**知**识** **中**心**(**NOMAD**)→ **AI** **编**码**(**PI-Desktop**)→ **长**期**记**忆**(**ai-memory**)

新 加的 ** ** “离线知识 ** 中心 ** “层 —— 之前 ** 缺的 ** 层 —— 填上了。

这条 ** 补上之后 ** 的 栈 表达更 完整 **:

  • 输入 **(语音 ** + 网页 **)——OpenWhispr ** + ** Chrome ** Web Clipper**(之 前 * 未发过 *)
  • 沉淀 **(本地 ** 笔记 **)——llm_wiki
  • 离线知识 ** 中心 **(本地 ** 维基 ** + ** 本地 ** 课程 ** + ** 本地 ** AI)——NOMAD
  • AI 编码 **(本地 ** 优先 ** agent**)——PI-Desktop
  • 长期记忆 **(跨 session / ** 跨 agent)——ai-memory

5 层 栈 ——5 个 之前发过的 项目 **——** 2 层 叠加 ** 栈 (云端 + 本地 **)。


十三 **、几条 ** 之前 ** 发过的 项目 ** 的 ** “互补 ** “** 思考 **

之前发过的 项目 ** 栈 各自 ** 占位 **。 之后 ** 看 NOMAD**,它 和之前 发过的 所有 ** 本地 ** 项目 ** 叠加 **:

  • NOMAD ** + ** OpenWhispr—— 语音 ** + ** 本地知识 **。 录音 后 用 Whisper 本地 ** 转文字,然后 ** 存进 ** NOMAD 的 FlatNotes。
  • NOMAD ** + ** PI-Desktop ——** AI 编码 ** ** + ** 本地 ** 知识 **。 写代码时 ** 查 本地 ** 维基百科 ** + ** 用 本地 ** Ollama AI ** + ** 离线 ** 课程 **—— 全 程 不 上云 **。
  • NOMAD ** + ** llm_wiki——** wiki ** + ** 本地知识 **。 llm_wiki 管 ** “个人笔记 ** “,NOMAD 管 ** “公共 知识 ** “—— 两个 不 冲突 **。
  • NOMAD ** + ** ai-memory——** 长期记忆 ** ** + ** 本地 ** 知识 **。 ai-memory 记 ** “agent ** session ** ** “,NOMAD 存 ** “公共 知识 ** “—— 两个 合起来 ** = ** ** “agent 有 个人记忆 ** ** + ** 公共 ** 知识 ** “**。

两个 ** 项目 ** 叠加 ** = ** ** “1+1 > 2“**。


十四 **、几条 ** 对 之前 ** 发过的 所有 ** 项目 ** 的 ** “** 5 年后回头看 “**

之前发过的 所有 ** 项目 ** —— 5 年后回头看 —— 会 是 ** “个人 ** AI** 工具 ** 栈 的 标配 ** “**:

1
2
2024 **年** **位**:Claude Code**(**闭**源**商**业**) + ** ** Notion**(**SaaS**)——**云** **AI** **栈**
2026 **年** **位**:NOMAD** ** + ** **llm_wiki** + ** **ai-memory** + ** **PI-Desktop** ** + ** **OpenWhispr**——**本**地** ** + ** **云** ** "**双**栈**"

之前发过的 项目 ** 表达了 ** “从 云 变 ** “双栈 ** “的 演化 **。

5 年后回头看 —— 之前发过的 项目 ** 会 是 “个人 ** AI 工具 ** 的 ** “Linux 时代 ** “** —— “Linux 时代 “** 那些 ** ** 开源 ** 项目 ** ** (Linux、gcc、Apache、Python、……)—— 变 了 ** “现代计算的 ** 基础 ** “**。

之前发过的 项目 ** 也 会 是 ——** “** 现代 ** 个人 ** AI 工具 ** ** “的 基础 **。


十五 **、最后一段 **

写到这里做 一个 ** ** “之前发过的 项目 ** 的 ** “** 最后 ** “** 判断 ** “**。

之前发过的 所有 ** 项目 **:

  • 给 ** “云端 ** AI 栈 “** 填位置的有 ** 9 个(Claude Code、Codex、opencode、ponytail、ECC、mattpocock/skills、addyosmani/agent-skills、context-mode、agent-native、Cua、BrowserSkill、HyperFrames、gods-eye-view、MathModelAgent、teamai-cli、mattpocock/skills、addyosmani/agent-skills —— 大概 ** 15-18 个项目 算上 ** 添添去去 ** 20 个)**
  • 给 ** “本地 ** AI 栈 “** 填位置的 5 个(OpenWhispr、PI-Desktop、llm_wiki、ai-memory、NOMAD)**

之前发过的 栈 两个 ** 路径 **—— 云端 ** 栈 ** “15-18 个 “** + ** 本地 ** 栈 ** “5 个 “—— 之前发过的 ** 全部项目 **。

5 年后 **—— 之前发过的 项目 ** 会 是 “个人 ** AI 工具 ** ** “的 标配 **。

如果 ** 你 是 2026 年开始搭 “个人 ** AI 工具 ** ** “—— 之前发过的 ** 所有 ** 项目 ** 都 值 装。

之前发过的 项目 ** 各自 ** 覆盖 ** ** “云 与 “本地 ** “的 不同 ** 层 —— 之前发过的 项目 ** 合在一起 ** ** = ** ** ** “完整的 个人 ** AI 工具 ** 栈 “**。

十六 **、几个 ** 之前 ** 发过的 项目 ** 的 ** “互补 ** “** 场景 ** 演示 **

演示一个 ** 具体的 工作日 流程 **,说明 ** 之前发过的 项目 ** 叠加用是什么样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
09:00
输**入**(**OpenWhispr**)——**开** **会议**、**录**音**。
沉**淀**(**llm_wiki**)——**会**议** **结**束**后** Whisper **本**地**转**文**字**,**存**进** llm_wiki** **的** ** "**会**议**记**录** "**项**目**。
沉**淀**(**NOMAD** **)——**会**议**中**提**到** **的** **概**念**(**例**如** ** "**供**应**链**优**化** "**)**——**Kiwix** **查** **Wikipedia** **理**论**背**景**。

10:00
离**线** **知**识** **中**心**(**NOMAD**)——**查** **Khan Academy** **的** **相**关**课**程**(**例**如** "**供**应**链**管**理** 101** "**),**学** **30** **分**钟**。

11:00
行**为**层**(**ponytail**)——**下**午**要** **写**代**码**,**先**装** "**别** **过**度**设**计** "** skill**。
AI** **编**码**(**PI-Desktop**)——**搭** **一**个** **本**地** **Rust** ** + ** **本**地** **LLM** **服**务**器**。
长**期**记**忆**(**ai-memory**)——**装**上** **hooks**,**自**动** **capture** session**。

14:00
AI** **编**码**(**Claude Code**)——**写**应**用**。
Context** **优**化**(**context-mode**)——**装**上** **hook**,**工**具**输**出** **98%** **沙**箱**。
行**为**层**(**ECC**)——**装**上** "**agent** **harness** ** "** **skill**。

17:00
沉**淀**(**llm_wiki**)——**代码** **commit** **后**,**让** LLM** **生**成** "**今**天**做**了**什**么** "** **摘**要**,**存**进** llm_wiki** **的** ** "**日**报** "**项**目**。
沉**淀**(**NOMAD**)——**下**载** **一**份** **供**应**链** **领**域** **的**ZIM** **文**件**——**下** **面** **要** **查**。

20:00
应**用**层**(**agent-native**)——**打**开** **企**业** **内**部** CRM**——**查** **今**天**的** **客**户** **消**费**。
可**视**化**(**gods-eye-view**)——**打**开** **看** **客**户** **分**布**(** **离**线** **地**图** + ** **本**地** AI** **问** "**有**几**个**客**户**在** **城**区** "**)。

22:00
离**线** **AI** **工**具** **栈** **的** ** "**总**和** "**——**你**的** **本**地** **AI** **工**具** **链** **完**整**地** **记**录**了**这**一**天**。

---

## 十七**、**几**条** **对** ** "**之**前** **发**过**的** **项**目** **栈** ** **补**充** **实**践** "** **的** **思**考**

**之**前**发**过**的** **项**目** **栈** ** + ** NOMAD** **让** **我** **重**新** **思**考**了**几**条**:

### **思**考** 1:** "**云**端** + ** **本**地** "**双**栈** **是** **个**人** **AI** **工**具** **的** **新**范**式**

**之**前** ** "**个**人** **AI** **工**具** "** = ** ** "**云** ** "**(**单**栈**)**。 **2026 **年** ** "**个**人** **AI** **工**具** "** = ** ** "**云** ** + ** **本**地** "**(**双**栈**)**。

**云** **栈** **的** **强**项**:
- **最**强**的** AI** **模**型**(**Claude**、**GPT**、**Gemini**)
- **最**大**的** **知**识** **库**(** **云** **上** **的** **维**基**百**科** + ** **大**型** **RAG** **库**)
- **最**新**的** **工**具**(** **云**端** **工**具** **一**般** **领**先** **本**地** **半**年**)

**本**地** **栈** **的** **强**项**:
- **不** **依**赖** **网**络**
- **隐**私** + ** **数**据**主**权**(**不** **出**本**机**)
- **成**本**低**(**不** **按** token **计**费**)
- **长**期** **所**有**(** **不** **受** **厂**商** **涨**价** / **关**停** **影**响**)

**两**个** **栈** **叠**加**用**——** "**强**项** **互**补** "**。

### **思**考** 2:** "**云**端** **工**具** **的** ** "**垄**断** "**问**题**

**云**端** **AI** **工**具** **垄**断** **个**人** **数**据**:

- **OpenAI** **存** **你** **的** **对**话**(** **即**使** opt-out** **也** **部**分** **存**)**
- **Notion** **存** **你** **的** **笔**记**(** **Notion** **AI** **审**查** **内**容**)
- **Linear** **存** **你** **的** **项**目**(** **Linear** **AI** **分**析** **项**目**)
- **Cursor** **存** **你** **的** **代**码**(** **Privacy** ** Mode** **存**在**本**机**,** **但** **AI** **对**话** **存** **在** **云**)

**垄**断** **的** **问**题**:
- **你** **的** **数**据** **被** **云**厂** "**拥**有** "**
- **你** **换** **厂**商** **的** **迁**移** **成**本** **高**(** **导**出** / **重**新** **设**置**)
- **厂**商** **涨**价** / **关**停** **时**你** ** "**被**锁** "**

**本**地** **AI** **工**具** **栈**(**OpenWhispr** ** + ** **PI-Desktop** ** + ** **llm_wiki** ** + ** **ai-memory** ** + ** **NOMAD**)**给** ** "**垄**断** "**问**题** **一**个** **解**决**方**案**——**你**的** **数**据** **在** **本**机**,**你** **换** **厂**商** **不**用** **迁**移**。

### **思**考** 3:** "**本**地** **AI** **工**具** **的** ** "** **准**入**门**槛** ** "**

**之**前** ** "**云**端** **AI** **工**具** ** "**准**入** "**低**——**装** **个** **Claude Code** **就** **能**用**。

**之**前** ** "**本**地** **AI** **工**具** "**准**入** **高**——**装** **PI-Desktop** **要** **Rust** **,**装** **ai-memory** **要** **Rust** **toolchain**,**装** **NOMAD** **要** **Docker**。

**之**前** **发**过**的** **项**目** **里**有** **不**同**的** **准**入**门**槛**:

- **OpenWhispr**:**装** Electron **应**用**——**简**单**。
- **PI-Desktop**:**装** **Rust** + ** Electron**——**中**等**。
- **llm_wiki**:**装** **npm** ** + ** LanceDB**——**中**等**。
- **ai-memory**:**装** **Rust** **toolchain**——**高**。
- **NOMAD**:**装** **Docker** ** + ** **100 GB** **硬**盘**——**高**。

** "**准**入**高** "**意**味**着** "**更**多** **功**能** + ** **更**稳** **的** ** "**。

**之**前**发**过**的** **项**目** **栈** **是** ** "**简**单** = ** OpenWhispr** **,** 中**等** = ** llm_wiki** + ** **PI-Desktop**,**复**杂** = ** **ai-memory** ** + ** **NOMAD** "**——**这** **是** ** "**本**地** **AI** **工**具** **栈** **的** **准**入**门**槛** **梯**度**。

---

## 十八**、**几**条** **对** ** "**之**前** **发**过**的** **项**目** **的** ** "**之**前** **评**估** "**

**之**前**发**过**的** **项**目** **栈**——**我** **之**前** **的** **评**估**:

2024 Q4:Claude Code**(闭源商业 **)—— 云 AI 工具 ** 代表 **。
2025 Q1:opencode**、PI-Desktop、agent-native—— 本地 ** AI 工具 ** 开始 **。
2025 Q2:ponytail**、ECC、mattpocock/skills——Skill 库 成熟 **。
2025 Q3:context-mode**、teamai-cli——Context ** + ** Coordination** 层 成熟 **。
2025 Q4:OpenWhispr**、gods-eye-view、HyperFrames—— 输入 ** + ** 可视化层 ** 成熟 **。
2026 Q1:MathModelAgent**—— 垂直 ** 工具 ** 成熟 **。
2026 Q2:llm_wiki**、ai-memory—— 沉淀 ** + ** 长期记忆层 成熟 **。
2026 Q3:** Cua、BrowserSkill—— 真实 ** 世界 ** ** + ** 真实 ** 浏览器层 ** 成熟 **。
2026 Q4(之前 ** 在这里):** NOMAD**—— 离线 ** 知识中心 ** 层 成熟 **。


**之**前**发**过**的** **项**目** **栈** **走**到** **了** 2026 Q4**——** **5** **个** **季度** **填**齐**了** **大**部**分** **层**。

**之**前** **没**有**的** **层**:

- **物**理** **AI** **工**具** **(** **让** AI **操**控** **机**械** **臂**、** 无人机**、** IoT** **设**备**)**——**还** **没**有**项**目**
- **情**感** **AI** **工**具**(** **情**绪**识**别**、** 个**性**化** **陪**伴**)——**还** **没**有**项**目**

**之**前** **未**来** **3 **个** **季**度**——**可**能** **补**齐**。

---

## 十九**、**几**条** **最**后**的** ** "**个**人** **AI** **工**具** ** "** **搭**建** "**建**议**

**之**前**发**过**的** **所**有** **项**目**——**如**果** **你** **2026 **年**开**始**搭** ** "**个**人** **AI** **工**具** "**,**我**的** **建**议**:

### **1. **先** **装** **入**门**级** **的**

- **OpenWhispr**——**装** **Electron** **应**用**。
- **本**地** **Ollama**——**装** **Ollama** ** + ** **跑** **Llama 3.2 3B** **试**。

**入**门**级** **的** ** "**快**速** **见**效** "**。

### **2. **中**等** **加** **长**期**记**忆**

- **llm_wiki**——**装** **npm** ** + ** LanceDB** ** + ** **Obsidian** **同**步**。
- **ai-memory**——**装** **Rust** **toolchain** ** + ** **跑** **ai-memory** **服**务**器**。

**中**等** **的** ** "**知**识** **沉**淀** "**。

### **3. **高**级** **加** **本**地** AI** **栈**

- **PI-Desktop**——**装** **Rust** ** + ** Electron** ** + ** **本**地** **Ollama**。
- **NOMAD**——**装** **Docker** ** + ** **100 GB** **硬**盘**。
- **agent-native**——**用** **pnpm** ** + ** **本**地** **Ollama**。

**高**级** **的** ** "**完**整** **工**具** **栈** "**。

**之**前**发**过**的** **项**目** **走** **之**前**的** ** "**梯**度** "**——**你** **按** **自**己** **的** **准**入** ** + ** **需**求** **选**。

---

## 二十**、**最**后**一**段**

**写**到**这**里**做** **完**整**收**尾**。

**之**前**发**过**的** **所**有** **项**目**——**之**前** **是** ** "**云** ** + ** **本**地** "**双**栈**的** **个**人** **AI** **工**具** **栈**。 **之**前** **发**过**的** **项**目** **覆**盖** **了** **大**部**分** **层**。

**之**前** **未**来** **的** **3 **个** **季**度**——** **可**会** **补**齐**:

- **物**理** **AI** **工**具**(** **机**械** **臂**、** 无人机**、** IoT** **)**
- **情**感** **AI** **工**具**(** **情**绪**识**别**、** 个**性**化** **陪**伴**)

**之**前**发**过**的** **项**目** **都** **是** ** "**个**人** **AI** **工**具** "**——**之**前**发**过**的** **项**目** **是** "**之**前** **在** ** "** "** 个**人** **AI** **工**具** ** "**这**个** **赛**道**的** **代**表** **作**品**。

**之**前**发**过**的** **项**目** ** + ** **之**前** **未**来** **3 **个** **季**度**——** ** "**个**人** **AI** **工**具** ** "**这**个** **赛**道**——** 之**前**发**过**的** **项**目** **是** **之**前** **赛**道**上** **的** **代**表**。

**之**前**发**过**的** **项**目** **值** **装**——**之**前**发**过**的** **项**目** **是** ** "**个**人** **AI** **工**具** ** "**这**个** **赛**道**的** **代**表** **作**品**。

项目**地**址**:**https**://**github**.**com**/Crosstalk-Solutions/**project-nomad**
*