我花了18个月,将我的“第二大脑”转化为我的实时研究记忆。让我解释一下。目前,在我的Obsidian中,我有超过5000条笔记,在Readwise中还有另外5000条笔记,还有一些散落在Notion和Google Drive中。而且这一切都在以每月250个文件的速度每周增长。这正是我想要的。在左边,你可以看到我整个Obsidian库,那是一大片庞大的数据。
每当我开始从事某项工作,比如写一篇文章、一个新项目、一个新的代码库、一个新功能,或者任何其他事情时,我都希望从中提取那些对当前工作真正有用的高信号笔记。你可能会问,为什么不直接使用Codex Cloud或Notebook LM呢?我想我确实在用。但你需要一个介于这些工具和你“第二大脑”之间的系统。
让我们回到我问题的根源,那就是我总是在丢失我的研究资料。例如,我的阅读清单简直就是一座坟墓。当我浏览社交媒体并保存那些很棒的X帖子、新文章、新YouTube视频或GitHub仓库时,无论是什么,每当我真正想开始工作时,我从来想不起我的“第二大脑”里有什么,或者我必须花费大量时间才能找到那些我可以在工作中使用的有意义的笔记,对吧?
我面临的另一个问题是,我希望这个系统真正扎根于我的个人笔记、我的个人价值观以及我的个人信仰中。我希望这个系统是个性化的,以反映我自己的思想,对吧?这就是为什么在今天的视频中,路易斯·弗朗索瓦和我将教你如何构建你自己的AI研究操作系统。这也附带了代码,所以你也可以自己尝试一下。
我是保罗·尤申(Paul Iusztin),我是Decoding AI的创始人兼首席执行官,我制作大量关于如何交付AI产品的课程和内容。我也是畅销书《LM工程师手册》的合著者。而在这个视频中我将要教你的AI研究操作系统,正是我在日常工作中使用的系统。现在,我将把接力棒交给路易斯·弗朗索瓦。
谢谢保罗。我是路易斯·弗朗索瓦·布沙尔(Louis-François Bouchard)。我是Towards AI的联合创始人兼CTO,我们在那里构建教育课程。我也是“What's AI”YouTube频道的创作者,我在其中解释AI工程技术。我以前解释过AI研究,但现在我专注于AI工程。我也是《为生产构建AI系统》一书的作者。
在此之前,我是一名博士生。所以,说实话,我靠做研究为生。正如我所说的,我做过AI博士,做过大量的研究和研究工作。现在,我制作课程,写视频,为视频做研究,为公司构建培训,以此谋生。而我所做的这一切都始于非常好的研究。
并且利用我们在Towards AI通过为客户构建项目所获得的大量知识和见解。所以,我也像保罗一样拥有大量的笔记。我们试图以最好的方式利用它们。正如你们将看到的,我们将构建某种工具来利用我们的“第二大脑”,正如你们将看到的,我使用它的方式和保罗使用它的方式之间会有一些差异。
我们构建的这个仓库和这个项目的核心目标是,希望你根据自己的需求对其进行适应。整个目标是如何让研究变得更好,但更具体地说,是如何更好地利用我们已有的东西。所以,让我们深入其中。首先,我们需要确定使用哪种工具以及何时使用,因为我们构建的整个研究系统并不适用于每一个查询。
如果你只需要一个快速的答案,比如几个快速的问题,或者只是那种你基本上可以用Google搜索的东西。好吧,显然,直接Google它,或者问ChatGPT、Cloud,无论你想用哪个系统。但是,这样做的问题是,如果你有很多后续问题,或者这是一个你需要构建的更大项目,并且基本上需要很长的上下文或大量的信息来分享,那么依赖ChatGPT并不是理想的选择。
这也意味着你完全依赖于OpenAI或ChatGPT团队构建的架构。所以,这里的下一步是问自己,对于一个更复杂的问题,你是需要快速行动,还是想构建某个下一个功能并做一些非常困难的事情?如果你只是有一个小仓库用于快速更改,或者写一篇文章,只做一件你知道不会重复多少的事情,绝对使用Codex或Cloud Code或你信任的某个代理。
有时,你需要继续挖掘以使其变得更好,提高效率,进一步优化它。因此,通常当你必须这样做时,你希望你的研究来源、你的研究能够保留下来,并能够引用它们以备将来之需。所以,如果你想要这样一个过程,即你找到的来源、你做的笔记能够随着时间的推移而保留下来,并且代理能够有效地利用这些内容,能够回到这些信息,提出后续问题,甚至更深入地消化内容。
例如,现在当我制作新视频时,我也希望代理和系统能够理解我制作过的以前的视频,以避免内容重复,避免自我重复,并引用其他一些内容。在这种情况下,有一些工具非常有趣,你可能以前尝试过,比如Notebook LM,它在进行研究、高效消化内容和回顾内容方面非常强大。
但是,Notebook LM的问题在于,嗯,首先,主要的问题是你不拥有它。你不能对它做任何你想做的事情。你不能尽可能个性化。它不是原生支持代理的。而且,显然,由于它只是基于浏览器的,它在编码任务方面很弱。所以,它远非理想,无论是对于我和保罗,还是对于大多数AI工程师来说,通常都不是理想的选择。
所以,如果你需要你的代理能够利用你所做的一切,无论是大型研究、新视频,无论你在写什么、做什么、编码什么,你通常希望你的其他代理、你的其他项目能够利用你从刚刚完成的工作中所学到的东西。
有一件事我们要特别建议,尤其是对于生产环境,当然对于产品来说,就是构建某种带有向量数据库的检索增强生成(RAG)管道。但这需要基础设施。它对于快速消化、检查笔记、进行编辑来说,对人类来说并不友好。很难通过手工检查。你需要围绕它构建一切。
这绝对远非理想,对于我想日常使用的东西来说尤其如此。显然,它在规模上非常强大,特别是在产品中非常有趣。但正如我所说的,这个项目是为我们准备的。我不想要像产品那样实时、超级专业的东西。我只想要一个我会使用的东西,并且我的代理和不同项目能够以最好的方式利用它。所以,最后一个问题是
我们需要问自己的问题是,如果你想要拥有所有资源,同时具备更高的个性化,比如构建一个能随时间积累、易于检查和使用的个性化研究助手,就像维基百科一样。你可以拥有海量的来源、文档、视频、对比分析、代码实现、新研究和新主题,并持续添加和复用。在这种情况下,你可能需要自己构建这样的系统。在我们的案例中,我们构建了一个个性化研究操作系统,并将在本次演讲中分享我们构建的内容及方法。
但缺点是需要比直接使用 Cloud Code 更多的设置。目前,使用 Cloud Code 和其他代理工具的主要问题是,当你提供 Codex 链接、PDF 和其他信息(例如我最近的 Loop Engineering 视频)后,下一次会话使用时,你必须重新粘贴所有内容或要求它使用技能。无论 Codex 或 ChatGPT 等工具如何动态构建结构以利用你之前的工作、脚本等,这些信息要么丢失,要么被保存在你需要手动要求复用的技能中,这通常并不理想,且随时间推移会不断膨胀。
问题在于,你提供给模型的所有信息并非瓶颈。瓶颈在于如何在未来利用这些信息。这意味着对于代理而言,上下文窗口变得至关重要,它涵盖了数据库、文件系统、记忆和推理空间。它必须处理所有这些,而当对话停止时,它会丢失一切。事实上,我们不一定需要提供越来越多的上下文来获得更好的研究结果。你需要的是适当的记忆和上下文管理,理想情况下还应包含某种个性,特别是在我制作视频时。
因此,我们决定构建一个主要由 Markdown 文件组成的系统,以便我们和代理都能轻松利用。我不会在此详述细节,因为 Paul 会深入讲解。正如我所说,Paul 有大约 5000 条笔记,而我只有几百条,但这只是为了说明我们并非从零开始。我们都已经拥有某种形式的大型数据库。在我个人方面,我制作了几百个视频并做了大量笔记,因此我需要利用这些年的内容,以及我与团队和客户在为客户构建项目时的许多会议记录,因为通过为客户构建项目我们学到了很多。
我还收集了有趣推文和文章的亮点,我希望所有项目都能利用我的代理技能。因此,我决定转变方向,不再为 Cloud Code 技能设置文件夹,不再将会议摘要保存在 Granola 中,不再将多年的笔记放在 Apple Notes 上,也不再将推文保存在 Chrome 的标签页中。相反,我将所有内容自动移动到了 Obsidian。这只是一个笔记阅读器,当然你不必非要用它,你可以直接本地保存,但我使用 Codex 设置了整个环境,以便 Granola 能自动保存其中。
我的笔记现在都在 Obsidian 中,因为它的界面很好,我喜欢它,而且我可以在手机、电脑、Windows、Mac 等所有设备上使用。总之,我将所有内容移到了 Obsidian,这意味着它们保存在我的本地文件系统中,基本上成为了我研究和构建一切事物的伴侣。我们构建的内容显然利用了这一点。我们为这次研讨会建立了一个名为“AI Research OS”的代码库,其中主要包含用于 Cloud Code 和 Codex 的技能,以及插件,以便能够对某个主题进行深入研究、简单搜索或提炼,使用不同的工具。
最有用且完整的工具是研究工具,例如我在开启新视频主题时会使用它。这个代码库的目标是让你实施它,安装其中的云插件,并根据你的需求进行调整。目前,它可以连接到我本地的 Obsidian 笔记,使用 Readwise、Notebook LM、你的 GitHub 仓库、你发送的任何 GitHub 或 YouTube 视频链接,以及网页链接和文档。
但正如我们最后讨论的那样,还有很多缺失的功能,你可以轻松实现,只需要求 Cloud Coder 或 Codex 去做即可。例如,我用一个提示词在几秒钟内就实现了 YouTube 视频字幕功能。对 Codex 来说实现起来超级容易。因此,整个代码库和项目是我自己工作中非常有用的伴侣。但正如我所说,它实现了大量功能和最先进的上下文管理及记忆管理技术,我认为 AI 工程师需要了解这些。现在,Paul 将深入探讨我们构建的三层系统,包括原始内容、我提到的索引以及所有笔记、研究和工作的类似维基百科的综合版本。他将涵盖我们所做的一切、最终成果以及如何使用的演示。
好的,现在我想回顾我们系统的三个版本及其随时间的演变,最重要的是,我们为何增加了更多的复杂性。在第一版中,我们只想将其范围限定在为代理工程课程创建课程。因此,我们希望保持超级简单,输入是一个主题,输出是研究 Markdown 文件。在输入中,我们包含主题加上一组“黄金链接”,这些链接由我们手动挑选。我们应用了深度研究算法,输出为一个静态的研究 Markdown 文件。
如果我们将架构放大查看,首先我们抓取了这些黄金链接,对吧?因为我们已经知道它们,并将它们用作深度研究算法上下文的种子。这是一个非常强大的技术,因为它让我们对如何构建问题有了更多的上下文。在查询轮次中,我们基本使用了非常经典的深度研究算法,其中有一个主要代理(协调器),它根据初始主题和抓取的上下文创建多个问题。
每个代理管理自己的问题,并使用基于 Google 的 Gemini 查询 Google,收集多个资源。每个代理收集这些资源,返回多个链接,并为每个链接创建执行摘要。然后,它将所有这些信息传回给主要代理。主要代理基本上将所有这些信息以摘要的方式聚合起来,以避免上下文爆炸。我们进行了三轮这样的操作。基本上,在每轮生成六个查询的三轮之后,我们最终得到了
总共有大约四五十个链接。你可以想象那里有很多噪声。因此,我们也应用了一种排序算法,旨在找到信号最强的信息。基本上,我们将每个来源与用户的初始主题进行比较。基于排序分数,我们只完全抓取排名靠前的 K 个元素。而对于其余的链接,我们只保留摘要。然后,我们将所有内容编译成一个研究 MD 文件,作为单个扁平文件,用于我们特定用例中课程的每一课。但正如你所想象的,这相当有限。对于课程来说,它一开始就运作良好。我们很快生成了 35 节课,但我们想要更多。
因此,我们将这种深度研究循环的目标也指向了“第二大脑”。以前,它只针对公共网络,这使得结果相当通用,而且我们必须手动找到所有那些“黄金链接”。通过将这种深度研究循环指向“第二大脑”,我们基本上可以有机地跟踪所有我们真正想要且经过筛选的研究信息,从而将所有那些“黄金链接”有机地收集到我们的深度研究算法中。那么,让我们看看这个新算法的样子。它基本上还是同一个循环,但现在我们针对的是我们自己的来源,而不仅仅是公共网络。
现在,输入只有主题,因为我们不需要黄金链接。正如我所说的,黄金链接实际上是我们要第二大脑系统的反映。理论上,如果你真的想要,也可以添加它们,但这就是新策略的美妙之处,因为你只需输入一些主题,我们就能找到所需的一切。然后,我们仅使用该主题作为种子,以生成查询的上下文。现在,我们执行相同的深度研究算法,即相同的查询轮次,但这次不再只针对公共网络,而是接入了我们所有的“第二大脑”,比如我们的 Obsidian、Readwise、Notebook LM 和 GitHub。
你也可以使用例如 Gemini 深度研究来实现这一点,就像我们使用 Notebook LM 的方式一样,或者可以根据你的需求扩展它。例如,YouTube、Google Drive、Notion 或任何适合你基础设施的工具。现在的想法是,我们将深度研究算法的查询目标指向我们的“第二大脑”加上公共网络。在应用相同的算法(如排序、完全抓取、摘要)并将所有内容编译到这个研究 MD 文件后,我们面临另一个问题:这个研究 MD 文件是静态的,它是一堆静态数据。
通常研究并不是静态的,对吧?当你得到这个文件后,你通常会意识到你想问另一个问题,或者某些信息已经过时,你不再需要它了。或者基本上,你想从这个研究 MD 文件中获取更多内容。这意味着你需要从头开始这一切。而我在上面展示的操作是一项繁琐的工作,它消耗大量的 token,也花费大量时间。因此,你不想从头运行它。这就是为什么你需要在其之上添加一个 Wiki 层。
因此,该系统的 V3 版本实际上是一个深度研究算法加上其上的 LM 知识库,也就是 Wiki 层。所以,新算法如下:我们有来源输入和 Wiki 输出。如前所述,来源可以是 Obsidian、Notebook LM、Google Drive 或 YouTube、Notion,甚至是自定义 URL。这也是强大的,你可以使用如 Bright Data 这样的工具来解析基本上任何单页应用程序、任何类型的网站或任何类型的公开信息。我们可以将其放入。
然后应用相同的深度研究算法。我们将所有内容存储为原始文件,而不是编译成一个研究 MD 文件,现在我们单独存储每个文件。并从所有这些文件中创建一个索引。最终,我们在其上生成一个 Wiki,我们可以对其进行查询。我们可以查询 Wiki 加上索引。好的,这只是新系统的高级架构。让我们深入其中。
我想说的是,你应该忘记你认为需要的基础设施,比如向量数据库、知识图谱、语义搜索、文本搜索。所有这些都很好,但会增加很多复杂性,特别是对于你想轻量级使用的个人 Wiki 或个人研究操作系统。我想要一个仅基于文件的系统,一个非常简单且根植于计算机工作原理的机制。这就是为什么我们将整个系统仅基于文件和引用创建。没有数据库,只有基于引用的简单索引。
它是如何工作的?我们有一个代理读取一个 index.yaml 文件,这基本上是你所有数据的目录,加上每个来源的摘要以及围绕它的一些元数据。例如,在右侧,你可以看到一个 index.yaml 文件的部分内容,其中包含 10 个来源和 38 个作为这些来源衍生品的 Wiki 页面。在 YAML 文件的来源列表中,我们可以看到第一个来源。如你所见,它有指向原始文件的链接以及一些元数据,如来源、标题、作者、出版日期、摘要等,这些可以是灵活的。
下一步是基于这个 index.yaml 文件,我们需要指向所有的 Wiki 页面、所有的 Wiki 衍生品以及所有的原始来源。基本上,这个 index.yaml 文件是我们的代理的入口点。这是我们要交给代理的东西,让它实际推理如何找到我们的数据。它本质上是一个索引。下一步是了解 Wiki 实际上是什么样子的。在左侧,你可以看到 Wiki 的高级结构,其中有 raw 文件夹、wiki 文件夹和索引。
在 raw 文件夹中,我们实际上只有原始数据,这是不可变的。你不想触碰它。索引指向我们需要的一切。而在 wiki 中,我们实际上有由 LLM 创建的衍生品,其中包含多个概念、实体之间的比较,或者仅仅是作为我们问题或我们摄入的仓库反映的简单笔记。我们可以基于一个仓库创建多个笔记,或者基于 LLM 尚未回答的问题创建开放性问题。以及你可以在原始数据之上分析的任何内容。
在右侧,基于 Obsidian,我们可以看到仅基于此索引反映的子图。这仅仅是第一次迭代,但随着 Wiki 的增长,
你可以看到实体与概念之间建立的联系。例如,概念包括工具注册表、上下文压缩、沙箱隔离等;实体则包括开放代码、封闭代码、MCP等。正如你所见,你可以直观且实际地创建这些连接。接下来显而易见的问题是:我们如何查询这个知识库?如前所述,智能体将接收 index.yaml 文件作为输入,其中包含每个来源的摘要和元数据。但接下来会发生什么?
下一步实际上是查看源知识库页面。源知识库页面类似于每个页面的执行摘要,它不仅仅是摘要,而是对每个来源更详细的扩展摘要。有时,智能体只需查看此页面,获取所需信息,然后返回。这非常节省 Token,对吧?如果在此源知识库页面中未找到所需信息,我们还需要链接到知识库的衍生内容,如概念、实体、笔记、比较等。
只有当智能体在上述步骤中仍未找到必要信息时,它才会阅读完整的原始来源。这通常包含整篇文章、整篇论文、整个视频或其他内容。通过这种纯粹的引用和创建简单的层级结构,使得整个过程在 Token 使用上非常高效。现在,最精彩的部分在于这个知识库是“活”的。
例如,每个问题都会在知识库中留下痕迹。对于每个问题,大语言模型可以创建新的概念文件、新的笔记文件、新的比较文件。每个问题都会被记录在日志中。因此,知识库不仅在摄入新数据或进行深度研究时进化,实际上在你开始与其对话时,它就在不断进化。
这才是最精彩的部分。通过这种方式,你可以看到自己真实的反映,看到你尚未理解的内容,以及过去的所有问题。而且,知识库永远不会被冻结。类似于研究实体文件,你可以在任何时候摄入你认为需要的新自定义链接到知识库中,或者运行新的深度研究轮次。
如我之前所说,知识库仅基于你的问题就保持进化。另一个需要理解的重要点是,这个知识库并不凌驾于你的整个“第二大脑”之上。例如,在我的特定用例中,我使用 Tiago Forte 提出的 PARA 方法,将所有数据结构化分为项目、领域、资源和归档。
我将保存的所有笔记、资源和来源(无论是文章还是其他内容)直接管道传输到“资源”部分的扁平列表中。每当需要某物时,我只是在项目或领域中引用它们。这样,Obsidian 就只是一个不可变的快照,大语言模型永远不会触碰它。这是我的数据,我不希望大语言模型触碰我手动编写的个人笔记。
那么,我们如何实际利用这个知识库呢?如前所述,我们有一个作为全局第二大脑的大型 Obsidian 快照。然后,每当我们开始一个新项目时,我们通过我之前解释的深度研究算法引用这个第二大脑,并将其范围缩小到我们的特定项目。
基本上,每当我们想开始做某事时,我们会运行这个深度研究循环,或者开始摄入特定的代码库、文章、笔记等。我们通常是通过一组嵌入到框架中的技能来完成这一点的。项目可以是任何东西,比如撰写新文章、制作新视频、制作一组幻灯片。
我应用这项技术制作了这组幻灯片。你也可以将其应用于更复杂的事情,比如写书、制作课程,或者跟踪整个代码库。你也可以这样使用它。基本上,项目可以是任何你想要将研究转化为工作的地方。项目就是工作,而你的第二大脑就是研究。
现在我想展示几个演示。你需要前往 AI Research OS Workshop 代码库,在这里你可以找到运行我们在本次演示中介绍内容所需的所有技能。所有内容都打包为 Cloud Code 插件,但你也可以很容易地对其进行调整,并使用任何其他框架安装。
此外,在自述文件中,你可以找到如何安装所有其他依赖项的详细信息,因为该系统依赖于 Obsidian、Readwise、Notebook Elements 等工具。因此,你需要设置特定的命令行界面或处理身份验证问题。但我不想浪费你的时间在设置问题上,我想直接进入示例。
我准备了三个示例。第一个是关于我之前撰写的一篇关于智能体 AI 工程的文章的研究。在这些文件中,我有一个关于我想讨论这个主题的所有知识的品牌转储。此外,我还添加了一些我确定要加入此知识库的参考内容。
要针对这些文件触发算法,我们需要打开一个 Cloud 会话,然后调用“研究”技能,并将其指向该文件。就这样。其他所有内容都内置在技能中。通过查看这些文件和主题,它将理解我想要创建一个关于智能体框架工程的知识库的意图,并知道在开始深度研究算法之前,它需要先抓取这些信息,以便在构建深度研究算法的问题时将其用作上下文。
现在我们需要等待一段时间,让智能体基于此进行推理。为了加快速度,我将直接将其置于自动模式。我使用过数百次,我知道它不会删除我电脑上的任何东西,也不会做任何奇怪的事情。现在这是最重要的部分,对吧?它问我希望深度研究算法有多深。我们有轻量、深度、快速。
这主要控制每轮运行多少问题以及运行多少轮。通常轻量或快速就足够了,因为记住这个过程消耗大量 Token。因此,只有当你真的想要查看海量笔记时,才需要执行深度模式。对于这个用例,我将选择轻量模式以加快速度。
在此用例中,它只进行一轮三查询。而对于快速模式,它进行两轮三查询。因此,我建议保持在这个范围内。现在,该过程大约需要 10 到 20 分钟才能实际完成。
看看我的 Obsidian,看看我的 Readwise 和 Notebook LM,并在这些基础上运行查询。我确实运行了这些操作。现在让我们打开之前基于提示词在 Obsidian 中创建的维基,看看里面的内容。我们有三个主要对象:原始文件,基本上是我们找到的内容的原始副本;索引,包含所有指向维基的引用;在 Obsidian 中,我们还可以看到这样一个漂亮的子图,我们可以非常快速地理解正在发生的事情。这是完全基于这个文件创建的。
最有趣的部分在维基内部。那里有比较、概念、实体和来源。来源包含我们原始来源的执行摘要。因此,LLM 每次阅读时并不真正需要阅读原始来源,它只需要执行摘要,而这些摘要是在摄入过程中只计算一次的。例如,对于比较部分,它开箱即用地理解了它需要在形容词 RAG 与文件系统,或压缩与递归语言模型,或基于来源的任何感兴趣的内容之间进行比较。
最有趣的部分实际上是概念。它自动提取了我们需要从这个资源堆中理解的所有概念。例如,如果我们打开智能体循环资源,我们可以自动查看并获得一个漂亮的摘要,其中包含图表、标签,并解释我们需要了解的所有主题内容。我们可以对维基中的所有概念或所有实体做同样的事情。
好的,现在让我们看第二个例子。这是一个简单的例子,我想更多地了解 Harness 工程以及 Harness 是如何工作的。在这个提示词中,我只想摄入三个开源仓库:Open Code、Pi 和 Hermes。我不想进行深度研究,我只想摄入这些仓库并探索诸如总体架构、智能体架构、子智能体、记忆系统和智能体权限流程等主题。
让我们在这个提示词上运行研究。研究将自动克隆所有这些仓库,并在我给出的主题上探索所有仓库,然后在每个仓库的个体层面创建关于它们如何工作的笔记,关于仓库级别的架构如何工作,然后我们可以在维基衍生作品中创建更高级别的笔记,比较所有架构,或者创建聚合架构,如所有 Harness 的总体趋势,并直接探索和学习我们想要了解的关于 Harness 工程的一切。
通常我只是使用自动模式让它自行其是,但我已经运行过了。这是这些 GitHub 仓库的维基,我们有原始文件、索引和维基。在仓库中,我们可以看到所有三个仓库,例如,在 Open Core 仓库内部,我们可以看到空文件,解释特定主题所需的一切,如权限流程、记忆系统等。
我们在所有其他仓库中都能看到这一点,这里最有趣的部分实际上是我们对这些内容进行了比较。我们可以理解这些 Harness 内部架构的差异,或者我们也有从这些仓库中提取的所有概念,我们可以理解这些仓库的关键架构决策。你可以对此进行疯狂探索,如果你想编写自己的 Harness,这非常有用。
第三个例子实际上是最简单的,它只是基于摄入一些简单的链接。我将退出之前的运行,并从头开始运行这个例子。我想向你展示,你也可以在一个非常基本设置中使用它,我只想摄入三个自定义的随机链接。就像之前一样,我传递这个提示词,它就开始研究过程。
我想强调,你可以运行第二个关于 GitHub 仓库的例子,以及这个例子,而不需要任何其他设置,比如不需要设置 Obsidian、Readwise 或其他任何东西。你只需安装这个插件并运行这些例子,因为它除了 Git 和使用 curl 获取这些 URL 外,不依赖于任何其他服务。
如果我们进入 Obsidian 并探索由此例三创建的维基,我们可以看到索引,可以看到包含所有来源的维基本身,每个来源一个执行摘要,以及所有提取的概念、实体等。随着你开始在这些问题上提问,一切开始变得有趣起来。
现在,假设我们想基于由 GitHub 仓库创建的维基,询问一个关于 Harness 工程的问题。我们要做的就是再次点击指向我们刚刚创建的维基的研究字段,然后提出我们的问题。假设我想更多地了解沙箱化,确切地说是远程沙箱化如何工作以及如何集成到核心中。这基本上可以是任何其他问题。
接下来会发生什么,它将查询这个维基,给你一个答案,基于此,你也可以开始创建笔记、比较,或者它可能会提取并找到你关心的新实体。基本上,它会开始更新维基。
好的,那么这个项目将走向何方?你应该做什么?首先,它在某些方面仍然粗糙。它需要更多的连接器,正如你所见。我们需要添加 Google Drive、Notion、Slack 和许多其他对你有用的连接器。但老实说,这对我当前的工作流程或 Paul 来说并不是真的有用。
所以我们还没有添加它们,因为这个项目的核心是对我们有用,并让你接手添加任何你需要的东西。这个项目的另一个主要目标是教授记忆和上下文管理。所以所有这些额外功能对于这个目的来说并不是真的有用。还有一些弱点,比如很难知道哪些来源是过时的,或者与某些其他系统相比是弱还是强。
我们知道我们可以改进这一点,但这确实不是这里的优先级。最后,它显然仍然是一个构建者工作流。你通过 Cloud Code 和 Codex 使用它,对我来说就是在终端里,而我真的很喜欢它。所以它不是一个最终打磨好的带有良好 UI 和 UX 的产品。
这是出于设计考量。因此,我们对此并不十分在意,因为我们的目标是教授 AI 工程,而非打造下一个最佳产品。尽管如此,我们仍有一些即将实施的改进计划,从加强代码检查到优化内存压缩,因为内存管理是一个大问题,且在一般情况下非常复杂,而该领域的最先进技术也在不断进步。
如前所述,我们需要更好的来源溯源机制,以便信任来源、正确排名并在需要时重用它们,同时让用户能够快速判断该来源是否相关。我们还有其他改进计划,但这些主要侧重于优化和未来规划。
关键在于,我们将所有这些功能构建到了另一个产品中,甚至你可以自行构建。因为我们开设了一门名为“智能体工程”的课程,在其中,我们构建了一个类似的深度研究系统,包含写作和研究智能体,旨在通过构建相同目标的学习系统来掌握最佳 AI 工程实践。
这是一门非常深入的课程,预计完成需要约 60 小时,最终项目是构建我刚才描述的多智能体系统。因此,如果您对此次演示和代码库感兴趣,请考虑查看 Towards AI 学院的相关课程,包括“智能体工程”课程,以深入了解围绕智能体构建时的最佳实践。