返回首页
24小时热榜
嗨,HN,我是Arlan,我正在构建Nia(<a href="https://trynia.ai" rel="nofollow">https://trynia.ai</a>),这是一个针对AI编码代理的最先进上下文层。Nia使得Cursor、Claude Code和其他MCP客户端能够索引和查询真实的代码库和文档,从而避免因过时或错误的来源而产生的幻觉,其应用不仅限于编码代理,还适用于任何需要跨领域扎实上下文的AI系统。
编码代理的效果取决于你提供的上下文。通用模型通常是在公共代码和文档上训练的,而这些内容往往是过时的,它们通常不知道你实际的代码库、内部维基或你使用的第三方SDK的确切版本。结果是非常熟悉的:你将URL和代码片段粘贴到提示中,代理自信地使用过时的API或错误的框架版本,而你花费的时间比自己编写代码还要多,主要是在验证和修正这些错误。一旦模型在生成代码方面足够优秀,提供精确、最新的上下文就成为了瓶颈。
几个月前,我在哈萨克斯坦的高中时首次遇到这种模式,当时我对代码生成工具非常着迷,尝试了所有能找到的编码代理。当我进入YC并与其他团队交流时,我再次看到了这种情况,他们也在尝试在实际工作中使用代理。
Nia的第一个版本基本上是“我个人的MCP服务器,知道我的代码库和喜欢的文档网站,这样我就不必再将URL粘贴到Cursor中了。”一旦我看到自己的工作流程变得更加顺畅,显然这应该是一个其他人也可以使用的产品。
在技术层面上,Nia是一个具有MCP接口和API的索引和检索服务。你可以将其指向GitHub代码库、框架或提供商文档、SDK页面、PDF手册等来源。我们使用一些简单的启发式方法来获取和解析这些内容,识别代码结构、标题和表格,然后将其规范化为块,并构建多个索引:一个用于自然语言查询的语义索引,带有嵌入;一个用于函数、类、类型和端点的符号和用法索引;一个文件、符号和外部文档之间的基本参考图;以及用于需要在原始文本中进行确定性匹配的正则表达式和文件树搜索。
当代理调用Nia时,它会发送一个自然语言查询以及可选提示,如当前文件路径、堆栈跟踪或代码库。Nia结合BM25风格的搜索、嵌入相似性和图遍历来对相关片段进行排名,并且可以返回精确的位置,例如“这个文件中的函数定义及其使用的三个地方”,而不仅仅是模糊的段落。调用代理随后决定如何在自己的提示中使用这些片段。
一个Nia部署可以同时服务多个代理和多个项目。例如,你可以让Cursor、Claude Code和一个基于浏览器的代理都指向同一个Nia实例,该实例了解你的单体代码库、内部维基和你关心的提供商文档。我们保持一个与代理无关的会话记录,跟踪使用了哪些来源以及用户接受了哪些片段。任何MCP客户端都可以附加到该会话ID,获取当前上下文并扩展它,因此切换工具并不意味着失去已经发现的内容。
为了保持索引的新鲜度而不必重新处理所有内容,我们投入了大量工作。后台工作者定期重新获取配置的来源,检测哪些文件或页面发生了变化,并增量重新索引。这一点很重要,因为我见过的最糟糕的“幻觉”实际上是模型引用了错误版本的有效文档。修复这个问题更多地涉及版本和变更跟踪,而不是模型质量。
我们为Nia提供了一套不断增长的预索引公共来源。目前包括约6000个来自常见框架和提供商文档的包,以及来自PyPI、npm和RubyGems等生态系统的数千个库的包搜索,以及一个预索引的/explore页面,任何人都可以贡献他们的来源!这个想法是,新的用户可以安装Nia,不连接任何东西,仍然可以获得常见库的有用答案。然后,一旦你添加了自己的代码库和内部文档,这些私有来源就会合并到同一个索引中。
到目前为止,人们使用Nia的一些示例包括:- 通过索引提供商文档和示例代码库,从一个支付提供商或API版本迁移到另一个,允许代理提出和迭代补丁;- 通过直接索引框架源,而不仅仅依赖可能过时的官方文档,回答“我如何在这个框架中做X”;- 将一个不熟悉的公共代码库转变为一个临时维基以自我入门,在这里你可以提出结构性问题并跳转到特定的文件、函数或提交;- 构建一个浏览器代理,使用最新的代码和文档回答问题,即使公共文档滞后。
Nia是一个付费产品(<a href="https://www.trynia.ai/" rel="nofollow">https://www.trynia.ai/</a>),但我们有一个免费层,应该足够个人在真实项目中试用。除此之外,还有一个自助付费计划,适合重度个人使用,以及组织计划,具有更高的限制、SOC 2、基于座位的计费和希望在自己环境中保持索引的团队选项。对于私有的GitHub代码库,我们可以在本地克隆和索引,以确保代码不会离开你的基础设施。
我们存储账户详细信息和基本的遥测数据,如查询计数和错误,以便运营服务,并存储你明确连接的内容的处理表示(块、元数据、嵌入和小图),以便我们能够回答查询。我们不会在客户内容上训练基础模型,也不会出售用户数据。
此外,我可以看到Nia在代理领域的更大背景中发挥作用,因为为这些系统提供可靠上下文是一个全球性问题。早期信号显示,人们已经在使用Nia处理医疗数据,通过索引Paul Graham的所有文章来克隆他并将其转变为AI代理,使用Naval的档案构建个性化代理等等。
我非常希望将Nia交到更多已经在积极推动编码代理的工程师手中,看看它在哪些地方出现问题。我特别希望听到关于故障模式、烦人的入门步骤、检索逻辑明显错误或不完整的地方,或者任何我应该解决的安全问题的反馈。我会在讨论中回答问题,分享更多技术细节,并收集你愿意提供的任何严厉反馈!