数据截至 (上游 commit 136cd875b154)
nao 是什么 · 全景与阅读地图
30 秒导读: nao 是一个开源的"分析 agent"框架。数据团队先用一个 Python 命令行工具(
nao-core)把公司的数据库、表结构、文档、规则编成一个"上下文文件夹";然后启动一个聊天网页,业务同事用自然语言问数("上季度北美营收环比多少?"),后台的 AI agent 会像人一样在这个文件夹里翻找、对真实数仓执行 SQL、把结果画成图表或数据故事,一边生成一边流式显示在聊天里。本章只给"大盘",各机制细节留给 01–05 章。
1. 这是什么(零基础也能懂)
一句话定义: nao 是一个面向数据团队的开源分析 agent 框架——GitHub 仓库 getnao/nao,pip 包名 nao-core(见 cli/pyproject.toml:2)。
它服务两类完全不同的人,这一点是理解全局的钥匙:
| 读者 | 他们用 nao 干什么 | 交互方式 |
|---|---|---|
| 数据团队 / 分析工程师 | 搭建并"喂养"agent 的上下文:接数仓、灌元数据、写规则、跑评测 | nao-core 命令行(init / sync / chat / test) |
| 业务用户 | 用大白话问数、看图、给反馈 | 浏览器里的聊天 UI(http://localhost:5005) |
为什么需要它: 让 LLM 回答"我们公司的数据问题"难点从来不是"调用模型",而是模型不知道你的表长什么样、指标怎么算、口径有哪些坑。nao 的答案是:把这些知识沉淀成文件,让 agent 能按需翻阅,而不是一次性塞进提示词。
核心能力(README.md:36-50):
- 🧱 开放的上下文构建器 —— 数据、元数据、建模、文档、工具、MCP,想放什么放什么,像文件系统一样组织。
- 🏳️ 数据栈无关 —— 任意数仓、任意 LLM 都能接(
cli/pyproject.toml:48-69列了 Postgres/BigQuery/Snowflake/DuckDB… 和 OpenAI/Anthropic/Mistral/Gemini/Ollama)。 - 🔒 可自托管、用自己的 key —— 数据不出你的环境。
- 🤖 自然语言到洞察 + 原生可视化 + 透明推理 + 一键反馈 —— 面向业务用户的四件套。
用起来什么样(README.md:52-113): 数据团队跑五条命令就有了一个能问数的 agent。
pip install nao-core # 1. 装 CLI
nao init # 2. 建项目(问你项目名、要不要连库/仓库/LLM key/Slack)
nao debug # 3. 自检配置
nao sync # 4. 把数据源同步进"上下文文件夹"
nao chat # 5. 启动聊天 UI,浏览器打开 localhost:5005 开始问数
一句话直觉/类比: 把 nao 想成给 AI 配了一个"公司数据资料室 + 一部能连数仓的电话"。nao-core 负责把资料室建好、上架资料;聊天里的 agent 负责进资料室翻资料、必要时打电话(SQL)去仓库取数,再把答案讲给你听。
本节不出现底层代码;下面开始看"大盘怎么转"。