第一印象与界面
在访问getnao.io网站时,我就被其清晰的定位所吸引:“为上下文工程而构建的分析代理”。着陆页展示了一个终端风格的工作流程,给人一种强烈的开发者优先之感。通过简单的 npm install -g nao 安装CLI后,我运行了 nao init,终端中随即出现了一个文件系统结构——包含数据库、文档、查询、代码仓库和语义等目录。仪表盘(即命令行本身)会以树状视图显示你代理的上下文。这里没有臃肿的图形用户界面,对于面向数据工程师和分析工程师的工具来说,这很合理。默认的LLM是Claude Sonnet 4.5,但你可以使用自己的API密钥。通过 nao chat 启动的聊天界面,呈现出一个简约但功能完备的界面,我在其中询问“按月显示唯一用户数”,并观察代理如何探索我所定义的上下文。响应时间大约10秒,还算合理,生成的SQL也足够准确。
Nao的工作原理:上下文工程
Nao解决了许多以分析为核心的LLM代理所面临的一个特定痛点:不可靠的上下文。Nao并没有将架构转储或原始文档直接丢给LLM,而是将上下文视为一个结构化的文件系统。你可以在 nao-agent 目录中,将每个元素——表列、概要总结、业务定义、示例查询甚至规则——定义为Markdown文件或模板。nao_config.yaml 文件则统筹一切:数据库连接(BigQuery、Snowflake等)、代码仓库引用(dbt、Looker)以及像Notion页面这样的外部来源。当你运行 nao sync 时,代理会从这些来源拉取实时元数据,并将其写入你的上下文文件夹。这种方法比简单地将文档站点向量化要精细得多。你甚至可以编写单元测试:根据问题创建预期的SQL,然后运行 nao test 来评估回答率、token消耗和耗时。在我的测试中,它在11个问题上报告了81.8%的通过率——这是一个衡量可靠性的具体指标。该工具的核心假设是,代理的可靠性与上下文质量直接相关,而文件系统的抽象方式使上下文变得明确且可版本控制。
技术能力与定价
在底层,Nao通过你自己的API密钥(例如Claude Sonnet 4.5、GPT-4)来使用你选择的LLM。它通过 accessors 字段支持与主流数据库(BigQuery、Snowflake、Postgres)的连接器——选项包括列、描述、预览和性能分析。代码仓库(dbt、Looker)和外部文档(Notion)也是一等公民。整个项目是100%开源的,托管在GitHub的nao-labs组织下。网站上没有公开定价信息,但该模式鼓励自带密钥和自行托管,这意味着你只需支付来自自己LLM提供商的token消耗。对于想要托管版本的用户,网站提到“使用你自己的LLM密钥部署聊天功能”——暗示可能存在托管层级,但未提供定价详情。与LangChain的分析助手或基于RAG的工具等替代方案相比,Nao专注于显式的、文件系统风格的上下文工程,这是其独特之处。它让你能精细控制代理能看到什么,并且测试工具让你可以迭代。它最适合那些已经拥有结构化数据文档(dbt文档、Looker探索)并且希望构建一个可靠的自然语言查询界面,而又不想重新发明上下文管道的团队。偏爱低代码、可视化方法的开发者可能会觉得CLI和YAML配置过于繁琐。
建议与局限性
Nao的优势在于其开源本质、上下文即文件系统的范式以及内置的可靠性测试。我真心相信,这是我见过的让分析代理值得信赖的最实用的方法之一。然而,它也存在一些实际的局限性。该工具假设你已经拥有相当成熟的数据基础设施——一个dbt项目、一个数据仓库以及一个愿意维护上下文文件的团队。对于非开发人员来说,上手难度较高;没有用于配置上下文来源或管理测试的图形界面。此外,代理的性能严重依赖于你上下文文件的质量——描述编写不佳或缺少性能分析数据都会降低准确性。为了进行概念验证,我不得不手动编写了几个Markdown文件。该工具目前还缺乏对实时聊天分析或用户反馈循环的内置支持,尽管监控选项卡显示了聊天历史。总的来说,我推荐那些熟悉命令行并且想要一个透明、可测试的分析代理的数据团队使用Nao。如果你需要一个即插即用、带可视化编辑器的解决方案,请另寻他处。访问Nao网站 https://getnao.io 自行探索。
评论