Perplexity CEO Aravind Srinivas 宣布每个 Perplexity Project 都是一个 Git 仓库,团队为此构建了面向智能体的 G...
一个仓库,一群智能体
这种设计的核心思路是把多个智能体想象成同一个代码库里的开发者。每个智能体有独立的临时工作空间,完成阶段性任务后把结果推送到共享的 S3 仓库。仓库本身保留完整的历史记录,谁改了什么、什么时候提交的,一清二楚。
这听起来像是把工程实践平移到了 AI 协作领域。但实际执行时需要解决几个具体问题:冲突检测、上下文隔离、以及如何保证每个智能体只看到它该看到的东西。

智能体协作与共享仓库流程
沙箱与共享的边界
沙箱的存在解决了最基础的隔离问题。每个智能体开始时拿到的是仓库的快照,所有写入操作都在本地完成,只有最终提交才会进入共享层。这种模式天然支持并行工作,也避免了早期探索阶段的互相干扰。
冲突率低的原因在于任务的阶段性分工。智能体通常被分配处理不同的文件或模块,而不是在同一位置反复修改。这也解释了为什么选择 Git 作为底层协作协议------它的分布式特性和明确的合并语义,天然适配这种"独立工作、定期同步"的模式。
ls/grep 为何够用
团队选择了最简单的文件检索方式:列出文件和全文搜索。这看起来有点反直觉,毕竟当前主流的 AI 应用大多依赖向量数据库和语义检索。
原因在于任务性质的差异。金融文档分析这类任务中,信息往往藏在特定的文件路径、配置项或代码片段里。ls 能快速获取目录结构,grep 能在毫秒级完成关键词匹配。对于结构化或半结构化数据,这种朴素方案比 embedding 计算更快、更可预测。
更重要的是可解释性。当智能体说"我在第 3 层的 config.yaml 里找到了这个参数",所有人都能验证。而语义检索的结果往往是黑盒,难以追溯信息来源。
准确率 63% 的由来
63% 对 37% 的对比,反映的是检索策略对最终质量的直接影响。这个数据来自金融文档分析场景,具体任务包括提取合规条款、匹配交易记录、验证披露完整性等。
传统 RAG 方案在这种场景下的瓶颈在于上下文碎片化。向量检索返回的是语义相似的片段,但这些片段可能来自不同的文件或版本。智能体拿到的是散落的线索,需要自己拼接完整逻辑,这增加了出错概率。

两种检索策略的效果对比
结构化检索的优势在于保留了文件的原始层级关系。智能体通过目录树可以快速定位到具体模块,通过全文搜索能在精确位置找到关键信息。这种"先找到再理解"的流程,比"凭感觉匹配"更可控。
传统 RAG 的边界
这不是说 RAG 完全无效,而是说它在特定场景下有明确的适用边界。当文档数量大、语义分散、且对精确性要求不高时,语义检索依然合适。但当任务需要追溯具体条款、验证特定字段、或在多个版本中做对比时,结构化检索的优势就显现出来了。
金融文档分析恰恰属于后者。合规条款的表述通常高度规范化,关键数字和日期需要在特定位置找到,上下文错误可能导致严重的合规风险。在这种情况下,模糊匹配带来的不确定性反而是更大的成本。
结构化检索的优势
Perplexity 的设计实际上借鉴了代码搜索工具的工作方式。开发者在日常工作中,很少依赖语义检索来查找代码------更多时候是先用 find 定位文件类型,再用 grep 搜索关键词。这种组合之所以有效,是因为它尊重了代码本身的结构化特征。
同样的逻辑可以迁移到文档分析场景。将文档按类型、部门、日期建立索引,智能体先通过索引缩小范围,再在精确位置搜索。这种两步策略既保留了目录导航的效率,又避免了全量语义检索的计算开销。
项目即仓库的取舍
将 Project 设计为 Git 仓库,本质上是在选择一种协作协议。这种设计适合任务明确、需要并行处理、且结果需要可追溯的场景。对于单次查询或探索性对话,这种设计反而增加了不必要的复杂度。
风险在于状态管理。虽然冲突率低,但一旦发生重大合并冲突,可能需要人工介入。此外,仓库规模的持续增长也会带来性能问题,特别是当文件数量达到数万级别时,索引构建和搜索延迟会成为新的瓶颈。
何时适合这种设计
如果你的团队正在构建多智能体协作系统,或者需要管理大量相关文档的分析任务,这种模式值得尝试。特别适合以下情况:任务可以明确拆分为子问题、需要保留完整的处理历史、对结果的准确性要求较高。
风险与限制
不适合的场景同样明确:一次性问答、探索性研究、文档数量极少的简单任务。在这些场景下,语义检索或简单的关键词匹配可能更高效。
此外,这种设计假设智能体能够正确理解文件结构并进行有序提交。如果智能体的输出格式不稳定,或者频繁产生重复内容,仓库质量会快速恶化。
下一步能做什么
如果你正在评估是否引入类似机制,可以先从最小的可用形态开始:一个共享仓库、基础的文件索引、以及 ls/grep 式的检索能力。不需要一开始就构建完整的 Git forge,先验证这种协作模式是否能解决你当前的痛点。
具体来说,可以尝试以下步骤:第一,确定哪些任务值得拆分为并行子任务;第二,建立一个基础的仓库结构和索引机制;第三,观察智能体的提交频率和冲突率,评估是否需要引入更精细的冲突解决策略。
这种设计反映了一个更广泛的趋势:当 AI 应用从单点查询走向多智能体协作时,传统的检索和存储方式需要重新思考。Git 作为一种经过验证的协作协议,为这个问题提供了一个现成的答案。至于它是否适用于你的场景,取决于你对精确性、可追溯性和并行能力的具体需求。
智能体如何协作
这个设计的核心问题在于:当多个 AI 智能体同时工作时,它们怎么知道彼此做了什么?
传统的做法是引入消息队列、事件总线或者共享内存------这些都是分布式系统的老问题。Perplexity 的做法更简单:让每个智能体在自己的工作目录下写文件,然后用标准的 git 命令提交变更。其他智能体通过 pull 获取最新状态。

多智能体协作的混沌现场

多智能体协作流程
每个智能体拥有独立的 working directory,这个目录就是它的沙箱。它在沙箱里读取文档、分析数据、生成报告,最后把结果提交到共享仓库。其他智能体可以 pull 这些变更,基于最新的文件状态继续工作。
冲突率低于 2% 这个数字值得玩味。它说明大多数时候,不同智能体在处理不同的文件、不同的任务分支。只有少数情况下,两个智能体同时修改了同一份文档。
与传统 RAG 的对比
这里的关键机制是:为什么不直接用向量搜索来检索上下文?
向量搜索擅长的是「找相似」------给定一段文本,找到语义相近的其他文本。但多智能体协作需要的不是「相似」,而是「精确」。Agent A 需要知道 Agent B 具体改了哪一行代码、改了什么内容,而不是一个语义相近的模糊匹配。
ls 和 grep 在这个场景下反而更准确。ls 让你看到完整的文件列表和目录结构,grep 让你在文件中精确查找特定字符串。这两种操作的输出是确定性的------你看到的和文件里写的一模一样。
而语义搜索的召回率再高,也存在截断、丢失、错误匹配的问题。金融文档分析任务上,一个关键词的遗漏可能导致整个结论出错。

检索方式对比
63% 准确率对比 37% 的差距不是微小的提升,而是量级的区别。在金融文档分析这种对准确性要求极高的场景下,这 26 个百分点可能意味着一份报告能否被信任。
更准确地说,这个对比揭示了一个被忽视的事实:大多数 RAG 系统的瓶颈不在于生成能力,而在于检索质量。向量搜索作为检索层,在设计上就无法保证精确性------它优化的是语义相关性,而非事实准确性。
沙箱与共享的边界
ls 和 grep 看起来朴素,但在文件数量可控的项目里足够用。一个金融文档分析任务通常涉及几十个 PDF 和 CSV,文件总数不会超过几百个。grep 在这个规模下的延迟可以忽略不计,而语义搜索需要额外的 embedding 模型和索引维护成本。
更关键的问题是:语义搜索在什么情况下会失效?当一个任务需要精确引用某个段落的位置、编号或时间戳时,向量相似度只能告诉你哪些文档相关,但不能告诉你「第几页第几行」。grep 能直接定位到文本行,这对于需要溯源的金融分析来说是刚需。
沙箱和共享仓库之间的边界由提交行为定义。智能体在沙箱里的操作不直接影响其他智能体看到的内容,只有提交成功后变更才可见。这个设计把并发安全转移给了 Git,开发者不需要自己实现锁或事务。
ls/grep 为何够用
这里的核心洞察是:检索方式的选择取决于任务类型。对于开放式问答,语义搜索的优势明显。对于需要精确引用的分析任务,基于文件的搜索反而更可靠。
金融分析任务有一个特点:答案往往不在某一段落的语义相似性里,而在具体的数字、日期、条款编号中。grep 擅长找这些确定性的字符串匹配,而 embedding 模型对数字和日期的编码能力相对较弱。
这不代表语义搜索没有价值,而是说在特定场景下,朴素检索配合多智能体协作能够取得更好的结果。Perplexity 团队选择 ls 和 grep 不是因为技术落后,而是因为他们把问题重新定义成了文件级协作,而不是文档级检索。
何时适合这种设计
当你面对以下特征的任务时,项目即仓库的模式值得考虑:
需要多步推理,且每步的输出可以作为下一步的输入。
需要引用具体文档的具体位置,而不仅仅是主题相似。
涉及多个智能体并行工作,且工作范围可以预分配。
结果需要可追溯的历史记录,用于审计或复盘。
金融合规、法律文档分析、技术调研报告,都属于这一类。
何时不适用
对于开放式探索任务、创意生成、单文档总结,传统 RAG 或纯对话式交互更合适。项目即仓库引入的协作开销在这些场景下没有回报。
同样,如果文件数量规模超过数万,grep 的性能会成为瓶颈,这时需要考虑引入索引层,而这又会滑向传统 RAG 的设计。
落地路径与边界条件
如果你正在评估是否采用类似的架构,可以从一个简单的实验开始:选一个当前用 RAG 解决但准确率不达标的任务,把文档按来源分类放入目录,让两个智能体分别在不同的子目录中工作,最后汇总结果。观察冲突率和最终质量,再决定是否需要更复杂的协调机制。
这个实验的成本很低,因为你不需要从头构建 Git forge,现有的工具链已经足够支持基本的沙箱-提交-合并流程。

架构选型决策路径
项目即仓库不是一个通用解决方案,而是一个针对特定任务类型的架构选择。它在需要证据链和多智能体协作的场景下展现出明显的准确率优势,但也带来了协作约定和基础设施依赖的代价。正确的设计判断,是在任务特征和架构成本之间找到匹配点。
参考文献
延伸入口
- 原文归档:tobemagic.github.io/ai-magician...
- 公众号:计算机魔术师
