<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>代码库记忆 on KnightLi的博客</title>
        <link>https://knightli.com/tags/%E4%BB%A3%E7%A0%81%E5%BA%93%E8%AE%B0%E5%BF%86/</link>
        <description>Recent content in 代码库记忆 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <lastBuildDate>Fri, 10 Jul 2026 11:50:38 +0800</lastBuildDate><atom:link href="https://knightli.com/tags/%E4%BB%A3%E7%A0%81%E5%BA%93%E8%AE%B0%E5%BF%86/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>AI Agent 代码库记忆工具对比：CLAUDE.md、Cursor、Serena、codebase-memory-mcp 怎么选</title>
        <link>https://knightli.com/2026/07/10/ai-agent-codebase-memory-tools-comparison/</link>
        <pubDate>Fri, 10 Jul 2026 11:50:38 +0800</pubDate>
        
        <guid>https://knightli.com/2026/07/10/ai-agent-codebase-memory-tools-comparison/</guid>
        <description>&lt;p&gt;AI Agent 写代码时最常见的问题，不是模型完全不会写，而是它不知道这个代码库真正长什么样。&lt;/p&gt;
&lt;p&gt;它可能不知道入口文件在哪里，不知道某个 helper 已经存在，不知道测试命令怎么跑，也不知道团队约定哪些目录不能碰。于是每次开新会话都要重新解释一遍项目背景，或者让 Agent 反复 &lt;code&gt;grep&lt;/code&gt;、反复读文件、反复把无关内容塞进上下文。&lt;/p&gt;
&lt;p&gt;这就是“代码库记忆工具”要解决的问题。&lt;/p&gt;
&lt;p&gt;不过这类工具并不是一种东西。&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt; 是规则文件；Cursor 做的是 IDE 内索引；Serena 更像给 Agent 加一组语义代码工具；&lt;code&gt;codebase-memory-mcp&lt;/code&gt; 走的是持久知识图谱；RepoPrompt 偏人工上下文打包；Sourcegraph 则更适合企业级多仓库代码理解。&lt;/p&gt;
&lt;p&gt;这篇不讲玄学，直接从使用场景对比：AI Agent 代码库记忆工具怎么选，哪些适合个人项目，哪些适合大仓库，哪些适合团队。&lt;/p&gt;
&lt;h2 id=&#34;先给结论&#34;&gt;先给结论
&lt;/h2&gt;&lt;p&gt;如果你只想快速选型，可以按下面这张表看：&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;工具/路线&lt;/th&gt;
          &lt;th&gt;最适合&lt;/th&gt;
          &lt;th&gt;主要价值&lt;/th&gt;
          &lt;th&gt;不适合&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;AGENTS.md&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;几乎所有项目&lt;/td&gt;
          &lt;td&gt;保存项目规则、命令、禁区、协作约束&lt;/td&gt;
          &lt;td&gt;自动理解复杂调用关系&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Cursor codebase indexing&lt;/td&gt;
          &lt;td&gt;Cursor 用户、IDE 内开发&lt;/td&gt;
          &lt;td&gt;让聊天和编辑能引用当前项目索引&lt;/td&gt;
          &lt;td&gt;跨工具共享、复杂 Agent 编排&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Serena MCP&lt;/td&gt;
          &lt;td&gt;大代码库、语义导航、重构&lt;/td&gt;
          &lt;td&gt;符号级检索、引用查找、语义编辑&lt;/td&gt;
          &lt;td&gt;只想写简单提示词的小项目&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;&lt;code&gt;codebase-memory-mcp&lt;/code&gt;&lt;/td&gt;
          &lt;td&gt;多工具共享代码索引&lt;/td&gt;
          &lt;td&gt;通过 MCP 暴露持久代码知识图谱&lt;/td&gt;
          &lt;td&gt;不想维护额外服务的用户&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;RepoPrompt / RepoPrompt CE&lt;/td&gt;
          &lt;td&gt;需要人工精确控制上下文&lt;/td&gt;
          &lt;td&gt;选择文件、CodeMap、diff，组装可审查上下文&lt;/td&gt;
          &lt;td&gt;想完全自动索引的团队&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;Sourcegraph / Cody&lt;/td&gt;
          &lt;td&gt;企业多仓库、大规模代码理解&lt;/td&gt;
          &lt;td&gt;集中索引、搜索、权限、跨仓库上下文&lt;/td&gt;
          &lt;td&gt;个人小项目、轻量本地工作流&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;我的建议是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小项目：先写 &lt;code&gt;AGENTS.md&lt;/code&gt; 或 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;中型项目：规则文件 + IDE 索引。&lt;/li&gt;
&lt;li&gt;大型单仓库：规则文件 + Serena 或 &lt;code&gt;codebase-memory-mcp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;多仓库团队：规则文件 + MCP 索引工具 + Sourcegraph 这类平台。&lt;/li&gt;
&lt;li&gt;高风险改动：再加 RepoPrompt 这类人工上下文打包工具，先让人审上下文，再让 Agent 动手。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不要一开始就堆满工具。代码库记忆的目标不是“让 Agent 知道一切”，而是让它在当前任务里少猜、少读错、少浪费上下文。&lt;/p&gt;
&lt;h2 id=&#34;先区分三种记忆&#34;&gt;先区分三种“记忆”
&lt;/h2&gt;&lt;p&gt;很多对比文章会把所有工具混在一起，其实它们解决的问题不同。&lt;/p&gt;
&lt;h3 id=&#34;1-规则记忆&#34;&gt;1. 规则记忆
&lt;/h3&gt;&lt;p&gt;代表：&lt;code&gt;CLAUDE.md&lt;/code&gt;、&lt;code&gt;AGENTS.md&lt;/code&gt;、&lt;code&gt;GEMINI.md&lt;/code&gt;、项目 README 中的 AI section。&lt;/p&gt;
&lt;p&gt;它们记录的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;项目技术栈；&lt;/li&gt;
&lt;li&gt;常用命令；&lt;/li&gt;
&lt;li&gt;测试方式；&lt;/li&gt;
&lt;li&gt;目录说明；&lt;/li&gt;
&lt;li&gt;禁止修改的文件；&lt;/li&gt;
&lt;li&gt;代码风格；&lt;/li&gt;
&lt;li&gt;提交和验证规则。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种记忆最便宜，也最稳定。缺点是它不会自动理解代码关系。&lt;/p&gt;
&lt;h3 id=&#34;2-检索记忆&#34;&gt;2. 检索记忆
&lt;/h3&gt;&lt;p&gt;代表：Cursor codebase indexing、Sourcegraph、代码搜索、向量索引、知识图谱。&lt;/p&gt;
&lt;p&gt;它们解决的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;这个函数在哪里定义；&lt;/li&gt;
&lt;li&gt;谁调用了这个接口；&lt;/li&gt;
&lt;li&gt;哪些文件可能相关；&lt;/li&gt;
&lt;li&gt;某个配置在哪些地方出现；&lt;/li&gt;
&lt;li&gt;跨仓库依赖在哪里。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种记忆适合中大型代码库。缺点是需要索引、刷新、权限和忽略规则。&lt;/p&gt;
&lt;h3 id=&#34;3-操作记忆&#34;&gt;3. 操作记忆
&lt;/h3&gt;&lt;p&gt;代表：Serena MCP、带语义编辑能力的 Agent 工具、代码智能 MCP server。&lt;/p&gt;
&lt;p&gt;它们不只是“找到代码”，还会给 Agent 一组更接近 IDE 的工具，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查找 symbol；&lt;/li&gt;
&lt;li&gt;查引用；&lt;/li&gt;
&lt;li&gt;看文件 outline；&lt;/li&gt;
&lt;li&gt;替换函数体；&lt;/li&gt;
&lt;li&gt;重命名 symbol；&lt;/li&gt;
&lt;li&gt;做更小粒度的编辑。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种记忆最适合复杂重构和大仓库导航。缺点是安装、配置和工具选择更复杂。&lt;/p&gt;
&lt;h2 id=&#34;claudemd--agentsmd最基础也最应该先做&#34;&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;AGENTS.md&lt;/code&gt;：最基础，也最应该先做
&lt;/h2&gt;&lt;p&gt;如果一个项目什么代码库记忆都没有，第一步不应该是上复杂索引，而是先补一份项目规则文件。&lt;/p&gt;
&lt;p&gt;例如：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-markdown&#34; data-lang=&#34;markdown&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gh&#34;&gt;# Project Guide
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Commands
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Install: &lt;span class=&#34;sb&#34;&gt;`pnpm install`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Dev: &lt;span class=&#34;sb&#34;&gt;`pnpm dev`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Test: &lt;span class=&#34;sb&#34;&gt;`pnpm test`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Lint: &lt;span class=&#34;sb&#34;&gt;`pnpm lint`&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;gu&#34;&gt;## Rules
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Prefer existing helpers in &lt;span class=&#34;sb&#34;&gt;`src/lib`&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Do not edit database migrations unless explicitly requested.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; Do not delete files without listing paths and waiting for confirmation.
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;-&lt;/span&gt; For UI changes, check mobile and desktop layouts.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这类文件特别适合保存“项目怎么做事”：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前项目用 &lt;code&gt;pnpm&lt;/code&gt; 还是 &lt;code&gt;npm&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;测试命令是 &lt;code&gt;pytest&lt;/code&gt; 还是 &lt;code&gt;vitest&lt;/code&gt;；&lt;/li&gt;
&lt;li&gt;哪些目录是生成物；&lt;/li&gt;
&lt;li&gt;哪些文件不能改；&lt;/li&gt;
&lt;li&gt;改 API 后要跑什么检查；&lt;/li&gt;
&lt;li&gt;团队希望 AI 最后怎么汇报。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的优势是简单、可提交到 Git、团队共享、跨工具可读。Claude Code、Codex、Gemini CLI、Cursor 等工具即使实现细节不同，也都能从这种项目说明里受益。&lt;/p&gt;
&lt;p&gt;缺点也很明显：它是手写规则，不会自动告诉 Agent “这个函数在哪里被调用”。所以它更像地基，不是完整代码索引。&lt;/p&gt;
&lt;p&gt;站内这篇已经详细讲过多项目记忆怎么分层：/2026/07/08/claude-code-multi-project-memory-team-workflow/。&lt;/p&gt;
&lt;h2 id=&#34;cursor-codebase-indexing适合-ide-内闭环&#34;&gt;Cursor codebase indexing：适合 IDE 内闭环
&lt;/h2&gt;&lt;p&gt;Cursor 的 codebase indexing 更适合已经在 Cursor 里日常开发的人。它会为当前代码库建立索引，让聊天、编辑和 &lt;code&gt;@Codebase&lt;/code&gt; 这类上下文引用更容易命中相关文件。&lt;/p&gt;
&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前端、全栈、移动端等日常 IDE 开发；&lt;/li&gt;
&lt;li&gt;希望在编辑器里直接问“这个功能在哪里实现”；&lt;/li&gt;
&lt;li&gt;需要让 AI 根据当前项目补代码；&lt;/li&gt;
&lt;li&gt;不想额外维护 MCP server；&lt;/li&gt;
&lt;li&gt;团队成员主要都用 Cursor。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的优势是入口自然。用户不需要单独打开一个工具，也不需要手动复制大量文件。索引和编辑都在同一个 IDE 里。&lt;/p&gt;
&lt;p&gt;但它也有边界：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;索引主要服务 Cursor 内部工作流；&lt;/li&gt;
&lt;li&gt;跨工具共享能力有限；&lt;/li&gt;
&lt;li&gt;大仓库要注意索引范围和忽略规则；&lt;/li&gt;
&lt;li&gt;不能只依赖它来表达项目规则，仍然需要 &lt;code&gt;AGENTS.md&lt;/code&gt; 或类似文件；&lt;/li&gt;
&lt;li&gt;对生产配置、密钥、生成物目录要做好排除。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你已经遇到 Claude Code token 暴涨、MCP 返回过多、上下文越来越乱这类问题，也要意识到：索引不是越多越好，真正有价值的是“当前任务相关的上下文”。相关排查可以看：/2026/07/08/claude-code-token-usage-spike-troubleshooting-faq/。&lt;/p&gt;
&lt;h2 id=&#34;serena-mcp适合大代码库的语义导航和重构&#34;&gt;Serena MCP：适合大代码库的语义导航和重构
&lt;/h2&gt;&lt;p&gt;Serena 的定位更接近“给 AI Agent 用的 IDE 能力”。官方介绍里强调它提供语义代码检索、编辑、重构和调试工具，并通过 MCP 接入不同客户端。&lt;/p&gt;
&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;大型 Python、Java、TypeScript、Go 等代码库；&lt;/li&gt;
&lt;li&gt;Agent 经常找错函数、读错文件；&lt;/li&gt;
&lt;li&gt;需要查 symbol、引用、声明和实现；&lt;/li&gt;
&lt;li&gt;需要更安全地做跨文件重构；&lt;/li&gt;
&lt;li&gt;想让 Claude Code、Codex、OpenCode、Gemini CLI 等 MCP 客户端共享同一套代码工具。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Serena 的优势在于“符号级”操作。普通 Agent 经常靠全文搜索和行号编辑，复杂项目里容易误伤。语义工具能让它更像 IDE 一样工作：找函数、看引用、替换函数体，而不是把整个文件读进上下文后猜。&lt;/p&gt;
&lt;p&gt;但 Serena 也不是所有人都需要。&lt;/p&gt;
&lt;p&gt;如果你只是写小脚本、改单页应用、做一两个文件的 bug 修复，内置搜索和普通编辑已经够用。Serena 更适合“代码结构复杂，Agent 经常迷路”的项目。&lt;/p&gt;
&lt;p&gt;安装 MCP 工具以后，也要注意工具列表、返回结果和权限边界。MCP 本身排障可以参考：/2026/07/08/mcp-tool-call-failure-troubleshooting-faq/。&lt;/p&gt;
&lt;h2 id=&#34;codebase-memory-mcp适合多工具共享持久代码记忆&#34;&gt;codebase-memory-mcp：适合多工具共享持久代码记忆
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;DeusData/codebase-memory-mcp&lt;/code&gt; 是另一条路线。它把代码库索引成持久知识图谱，然后通过 MCP 提供给支持 MCP 的 Agent 使用。&lt;/p&gt;
&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时使用 Claude Code、Codex、Cursor、Aider、OpenCode 等多个工具；&lt;/li&gt;
&lt;li&gt;希望多个 Agent 共享同一个代码索引；&lt;/li&gt;
&lt;li&gt;项目较大，Agent 经常重复读取同一批文件；&lt;/li&gt;
&lt;li&gt;想减少上下文里塞大量源码；&lt;/li&gt;
&lt;li&gt;想要本地化、可重复的代码查询能力。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它的优势是“持久”和“跨工具”。不像某个 IDE 内置索引只服务一个客户端，MCP server 可以被不同工具接入。对重度 AI 编程用户来说，这类工具更像本地代码情报服务。&lt;/p&gt;
&lt;p&gt;缺点是你要多维护一个组件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;安装和更新；&lt;/li&gt;
&lt;li&gt;索引刷新；&lt;/li&gt;
&lt;li&gt;MCP 配置；&lt;/li&gt;
&lt;li&gt;权限范围；&lt;/li&gt;
&lt;li&gt;忽略规则；&lt;/li&gt;
&lt;li&gt;和不同客户端的兼容性。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你只是偶尔让 AI 改两行代码，没必要上它。如果你每天在多个 Agent 之间切换，它会更有价值。&lt;/p&gt;
&lt;p&gt;站内已经有单独教程：/2026/06/22/codebase-memory-mcp-code-intelligence-guide/。&lt;/p&gt;
&lt;h2 id=&#34;repoprompt适合人工精确控制上下文&#34;&gt;RepoPrompt：适合人工精确控制上下文
&lt;/h2&gt;&lt;p&gt;RepoPrompt 和 RepoPrompt CE 的思路不是“让系统自动读完整个仓库”，而是帮助用户组装一份可审查的上下文。&lt;/p&gt;
&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;想明确控制模型看到哪些文件；&lt;/li&gt;
&lt;li&gt;做复杂需求前，需要人工选择关键文件；&lt;/li&gt;
&lt;li&gt;担心自动索引带入无关内容；&lt;/li&gt;
&lt;li&gt;想把文件、CodeMap、目录结构、Git diff 一起交给 AI；&lt;/li&gt;
&lt;li&gt;做高风险重构、架构评审、代码审查。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这类工具的优势是可控。你可以先看上下文包，再交给模型。它不像全自动 Agent 那样方便，但在关键任务上更稳。&lt;/p&gt;
&lt;p&gt;它尤其适合这种流程：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;人类先选入口文件、相关模块和 diff。&lt;/li&gt;
&lt;li&gt;RepoPrompt 生成上下文包。&lt;/li&gt;
&lt;li&gt;AI 做设计、审查或修改建议。&lt;/li&gt;
&lt;li&gt;真正写代码前再缩小范围。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你的团队经常抱怨“AI 读了一堆无关文件”“回答看起来对但其实拿错上下文”，这种人工打包工具值得考虑。&lt;/p&gt;
&lt;h2 id=&#34;sourcegraph适合企业多仓库和大规模代码理解&#34;&gt;Sourcegraph：适合企业多仓库和大规模代码理解
&lt;/h2&gt;&lt;p&gt;Sourcegraph 的定位更偏企业级代码理解平台。它强调对大型代码库和多仓库环境的索引、搜索、权限和代码演进控制，也把“给人和 Agent 提供完整代码上下文”作为核心卖点。&lt;/p&gt;
&lt;p&gt;它适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多仓库企业团队；&lt;/li&gt;
&lt;li&gt;大型 monorepo；&lt;/li&gt;
&lt;li&gt;跨服务迁移；&lt;/li&gt;
&lt;li&gt;需要权限、审计、SSO、集中搜索；&lt;/li&gt;
&lt;li&gt;Agent 需要理解不止当前本地仓库；&lt;/li&gt;
&lt;li&gt;安全、合规和代码治理要求较高的组织。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;个人开发者通常不需要一上来用 Sourcegraph。它的价值在“规模”：当代码分散在几十个仓库里，靠本地 IDE 索引和几个 Markdown 规则文件已经不够，团队需要一个统一的代码理解层。&lt;/p&gt;
&lt;p&gt;如果你只是一个本地项目，&lt;code&gt;AGENTS.md&lt;/code&gt; + Cursor / Serena / &lt;code&gt;codebase-memory-mcp&lt;/code&gt; 往往更轻。&lt;/p&gt;
&lt;h2 id=&#34;不同项目怎么选&#34;&gt;不同项目怎么选
&lt;/h2&gt;&lt;p&gt;下面按项目规模给一套更实际的选型。&lt;/p&gt;
&lt;h3 id=&#34;个人小项目&#34;&gt;个人小项目
&lt;/h3&gt;&lt;p&gt;推荐组合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AGENTS.md 或 CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ IDE 内置搜索
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;小项目不要把工具链弄得太重。先写清楚命令、目录和禁区，再让 Agent 做小步修改。&lt;/p&gt;
&lt;p&gt;重点不是“记住所有文件”，而是“别用错命令、别误删文件、别改无关目录”。误删防护可以继续看：/2026/07/10/ai-coding-avoid-accidental-file-deletion/。&lt;/p&gt;
&lt;h3 id=&#34;中型业务项目&#34;&gt;中型业务项目
&lt;/h3&gt;&lt;p&gt;推荐组合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AGENTS.md / CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Cursor codebase indexing
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 必要时加 Serena MCP
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;中型项目通常已经有多个模块、测试、构建命令和目录约定。规则文件负责稳定约束，IDE 索引负责日常问答，Serena 负责更复杂的语义导航。&lt;/p&gt;
&lt;h3 id=&#34;大型单仓库&#34;&gt;大型单仓库
&lt;/h3&gt;&lt;p&gt;推荐组合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;AGENTS.md / CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Serena MCP
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ codebase-memory-mcp
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 分目录说明文件
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;大型单仓库最怕 Agent 把整个项目当成一坨文本。应该按模块拆：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;根目录写全局规则；&lt;/li&gt;
&lt;li&gt;子目录写局部规则；&lt;/li&gt;
&lt;li&gt;MCP 工具负责查 symbol 和依赖；&lt;/li&gt;
&lt;li&gt;重要任务先做只读影响面分析；&lt;/li&gt;
&lt;li&gt;修改时只改小范围。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果还会用 Claude Code subagent，可以把“代码检索”和“专项审查”拆成不同角色：/2026/07/10/claude-code-subagent-project-fit-guide/。&lt;/p&gt;
&lt;h3 id=&#34;多仓库团队&#34;&gt;多仓库团队
&lt;/h3&gt;&lt;p&gt;推荐组合：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;每仓库 AGENTS.md / CLAUDE.md
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 团队通用记忆
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ Sourcegraph 或企业代码搜索平台
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ MCP 工具层
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;+ 权限和审计规则
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;多仓库团队最重要的是统一规则和权限。不要让每个 Agent 自己猜：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;哪些仓库能读；&lt;/li&gt;
&lt;li&gt;哪些仓库能改；&lt;/li&gt;
&lt;li&gt;哪些服务之间有依赖；&lt;/li&gt;
&lt;li&gt;哪些迁移必须分阶段；&lt;/li&gt;
&lt;li&gt;哪些生产配置不能碰。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这种场景里，代码库记忆已经不是个人效率工具，而是工程治理的一部分。&lt;/p&gt;
&lt;h2 id=&#34;选型时看这-7-个问题&#34;&gt;选型时看这 7 个问题
&lt;/h2&gt;&lt;p&gt;选工具前，先回答这几个问题：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;代码库有多大？几千行、几十万行还是多仓库？&lt;/li&gt;
&lt;li&gt;Agent 主要问题是“不知道规则”，还是“找不到代码关系”？&lt;/li&gt;
&lt;li&gt;你只用一个 IDE，还是同时用 Codex、Claude Code、Cursor、Aider 等多个工具？&lt;/li&gt;
&lt;li&gt;是否需要团队共享同一份规则和索引？&lt;/li&gt;
&lt;li&gt;是否有密钥、生产配置、客户数据等敏感文件？&lt;/li&gt;
&lt;li&gt;是否经常做跨文件重构和迁移？&lt;/li&gt;
&lt;li&gt;你能接受维护额外 MCP server 或企业平台吗？&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果主要问题是规则混乱，先写 &lt;code&gt;AGENTS.md&lt;/code&gt; / &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果主要问题是 Agent 找不到代码，考虑 Cursor 索引、Serena 或 &lt;code&gt;codebase-memory-mcp&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;如果主要问题是多仓库治理，考虑 Sourcegraph 这类平台。&lt;/p&gt;
&lt;p&gt;如果主要问题是高风险任务上下文要可审查，考虑 RepoPrompt。&lt;/p&gt;
&lt;h2 id=&#34;常见错误&#34;&gt;常见错误
&lt;/h2&gt;&lt;h3 id=&#34;错误一把记忆文件写成项目百科&#34;&gt;错误一：把记忆文件写成项目百科
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; 和 &lt;code&gt;AGENTS.md&lt;/code&gt; 不应该塞进所有历史背景。它们应该只写会影响操作的稳定规则。&lt;/p&gt;
&lt;p&gt;更长的背景文档可以放在 &lt;code&gt;docs/&lt;/code&gt;，然后在规则文件里写“需要时读取哪一份”。&lt;/p&gt;
&lt;h3 id=&#34;错误二索引范围太大&#34;&gt;错误二：索引范围太大
&lt;/h3&gt;&lt;p&gt;不要把这些目录都交给 Agent 当主要上下文：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;node_modules/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;dist/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;build/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;public/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.next/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;.cache/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;coverage/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;logs/
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tmp/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;索引工具要配合 &lt;code&gt;.gitignore&lt;/code&gt;、&lt;code&gt;.cursorignore&lt;/code&gt;、工具自己的 ignore 文件或 MCP 配置使用。否则上下文会变贵、变慢、变脏。&lt;/p&gt;
&lt;h3 id=&#34;错误三把搜索结果当事实&#34;&gt;错误三：把搜索结果当事实
&lt;/h3&gt;&lt;p&gt;代码检索只能说明“找到了一些相关内容”，不代表结论一定正确。&lt;/p&gt;
&lt;p&gt;Agent 仍然需要：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;读入口文件；&lt;/li&gt;
&lt;li&gt;查调用链；&lt;/li&gt;
&lt;li&gt;看测试；&lt;/li&gt;
&lt;li&gt;看配置；&lt;/li&gt;
&lt;li&gt;跑最小验证；&lt;/li&gt;
&lt;li&gt;汇报不确定性。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;错误四忘了权限和隐私&#34;&gt;错误四：忘了权限和隐私
&lt;/h3&gt;&lt;p&gt;代码库记忆工具可能读取大量源码、配置和文档。接入前要确认：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;是否会上传代码；&lt;/li&gt;
&lt;li&gt;索引存在哪里；&lt;/li&gt;
&lt;li&gt;团队成员是否共享索引；&lt;/li&gt;
&lt;li&gt;是否包含 &lt;code&gt;.env&lt;/code&gt;、密钥、客户数据；&lt;/li&gt;
&lt;li&gt;MCP server 是否限制了工作目录；&lt;/li&gt;
&lt;li&gt;日志里是否会打印敏感内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;错误五工具太多规则太少&#34;&gt;错误五：工具太多，规则太少
&lt;/h3&gt;&lt;p&gt;很多团队会同时装 Cursor、Claude Code、Codex、Serena、MCP、代码搜索，但没有一份清楚的项目规则。结果每个工具都能读代码，却都不知道团队希望它怎么做。&lt;/p&gt;
&lt;p&gt;先把规则写清楚，再加索引工具。&lt;/p&gt;
&lt;h2 id=&#34;推荐落地路线&#34;&gt;推荐落地路线
&lt;/h2&gt;&lt;p&gt;如果你现在还没有代码库记忆体系，可以按这个顺序来：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;给项目加一份简短 &lt;code&gt;AGENTS.md&lt;/code&gt; 或 &lt;code&gt;CLAUDE.md&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;写清楚技术栈、命令、目录、禁区和验证方式。&lt;/li&gt;
&lt;li&gt;配好 &lt;code&gt;.gitignore&lt;/code&gt;、&lt;code&gt;.cursorignore&lt;/code&gt; 或索引排除规则。&lt;/li&gt;
&lt;li&gt;日常 IDE 开发先用 Cursor / 内置索引。&lt;/li&gt;
&lt;li&gt;Agent 经常找错代码时，再加 Serena 或 &lt;code&gt;codebase-memory-mcp&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;高风险改动前，用 RepoPrompt 这类工具人工打包上下文。&lt;/li&gt;
&lt;li&gt;多仓库团队再考虑 Sourcegraph 或企业代码搜索平台。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;这样做的好处是每一步都有明确收益，不会一开始就把工具链堆复杂。&lt;/p&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;AI Agent 代码库记忆工具没有唯一答案。它们解决的是不同层次的问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CLAUDE.md&lt;/code&gt; / &lt;code&gt;AGENTS.md&lt;/code&gt; 解决项目规则。&lt;/li&gt;
&lt;li&gt;Cursor indexing 解决 IDE 内上下文。&lt;/li&gt;
&lt;li&gt;Serena MCP 解决语义导航和重构工具。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;codebase-memory-mcp&lt;/code&gt; 解决跨工具持久代码记忆。&lt;/li&gt;
&lt;li&gt;RepoPrompt 解决人工可审查上下文打包。&lt;/li&gt;
&lt;li&gt;Sourcegraph 解决企业级多仓库代码理解。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真正稳的组合，通常不是选一个“最强工具”，而是先用规则文件打底，再按代码库规模增加索引、语义工具和团队治理能力。&lt;/p&gt;
&lt;p&gt;对个人开发者来说，&lt;code&gt;AGENTS.md&lt;/code&gt; + Git + IDE 索引已经能解决很多问题。对重度 AI 编程用户来说，Serena 和 &lt;code&gt;codebase-memory-mcp&lt;/code&gt; 更值得尝试。对企业团队来说，代码库记忆最终会变成权限、搜索、审计和 Agent 协作的一部分。&lt;/p&gt;
&lt;h2 id=&#34;参考资料&#34;&gt;参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/oraios/serena&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Serena GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://oraios.github.io/serena/01-about/000_intro.html&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Serena documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/DeusData/codebase-memory-mcp&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;codebase-memory-mcp GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/repoprompt/repoprompt-ce&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;RepoPrompt CE GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://cursor.com/help/customization/indexing&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Cursor codebase indexing documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://sourcegraph.com/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Sourcegraph official site&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
