<?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/zh-tw/tags/%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%BA%AB%E8%A8%98%E6%86%B6/</link>
        <description>Recent content in 程式碼庫記憶 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Fri, 10 Jul 2026 11:50:38 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/%E7%A8%8B%E5%BC%8F%E7%A2%BC%E5%BA%AB%E8%A8%98%E6%86%B6/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>AI Agent 程式碼庫記憶工具對比：CLAUDE.md、Cursor、Serena、codebase-memory-mcp 怎麼選</title>
        <link>https://knightli.com/zh-tw/2026/07/10/ai-agent-codebase-memory-tools-comparison/</link>
        <pubDate>Fri, 10 Jul 2026 11:50:38 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/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;h2 id=&#34;先給結論&#34;&gt;先給結論
&lt;/h2&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;symbol 級檢索、引用查找、語義編輯&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;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;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;h3 id=&#34;3-操作記憶&#34;&gt;3. 操作記憶
&lt;/h3&gt;&lt;p&gt;代表：Serena MCP、帶語義編輯能力的 Agent 工具、程式碼智能 MCP server。&lt;/p&gt;
&lt;p&gt;它們不只是找到程式碼，還提供更接近 IDE 的工具，例如查 symbol、查引用、看 outline、替換函式體、重命名 symbol、做更小粒度的編輯。適合複雜重構和大倉庫導航，但安裝和配置更複雜。&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;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;code&gt;pnpm&lt;/code&gt; 還是 &lt;code&gt;npm&lt;/code&gt;、測試命令、哪些目錄是生成物、哪些檔案不能改、改 API 後要跑什麼檢查、AI 最後怎麼回報。&lt;/p&gt;
&lt;p&gt;它的優勢是簡單、可提交到 Git、團隊共享、跨工具可讀。缺點是它不會告訴 Agent 函式在哪裡被呼叫。它是地基，不是完整程式碼索引。&lt;/p&gt;
&lt;p&gt;站內這篇已經講過多專案記憶怎麼分層：/zh-tw/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;適合 IDE 內開發、在編輯器裡直接問功能位置、根據目前專案補程式、不想維護 MCP server、團隊主要都用 Cursor 的場景。&lt;/p&gt;
&lt;p&gt;邊界也要清楚：索引主要服務 Cursor 內部工作流，跨工具共享有限；大倉庫要注意索引範圍和 ignore；不能只依賴它表達專案規則，仍然需要 &lt;code&gt;AGENTS.md&lt;/code&gt;；生產設定、密鑰和生成物目錄要排除。&lt;/p&gt;
&lt;p&gt;如果你已遇到 Claude Code token 暴漲、MCP 返回過多、上下文越來越亂，請記住：索引不是越多越好，真正有價值的是和目前任務相關的上下文。相關排查可看：/zh-tw/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;它適合大型 Python、Java、TypeScript、Go 等程式碼庫；Agent 經常找錯函式、讀錯檔案；需要查 symbol、引用、宣告和實作；需要更安全地做跨檔重構；也適合讓 Claude Code、Codex、OpenCode、Gemini CLI 等 MCP 客戶端共享同一套工具。&lt;/p&gt;
&lt;p&gt;Serena 的優勢在於 symbol 級操作。普通 Agent 常靠全文搜尋和行號編輯，複雜專案裡容易誤傷。語義工具能讓它更像 IDE 一樣工作。&lt;/p&gt;
&lt;p&gt;如果只是寫小腳本、改單頁應用、一兩個檔案的 bug，普通搜尋和編輯已經夠用。MCP 本身排障可以看：/zh-tw/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;它適合同時使用 Claude Code、Codex、Cursor、Aider、OpenCode 等多個工具；希望多個 Agent 共享同一個程式碼索引；專案較大，Agent 經常重複讀同一批檔案；想減少上下文裡塞大量原始碼；想要本地化、可重複的程式碼查詢能力。&lt;/p&gt;
&lt;p&gt;優勢是「持久」和「跨工具」。缺點是要維護安裝更新、索引刷新、MCP 配置、權限範圍、忽略規則和客戶端相容性。&lt;/p&gt;
&lt;p&gt;如果只是偶爾讓 AI 改兩行程式，沒必要上它。如果每天在多個 Agent 之間切換，它會更有價值。站內已有單獨教程：/zh-tw/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;它適合想明確控制模型看到哪些檔案、複雜需求前需要人工選關鍵檔案、擔心自動索引帶入無關內容、想把檔案、CodeMap、目錄結構、Git diff 一起交給 AI 的場景。高風險重構、架構評審、程式碼審查都適合。&lt;/p&gt;
&lt;p&gt;穩定流程是：人先選入口檔案、相關模組和 diff；RepoPrompt 生成上下文包；AI 做設計、審查或修改建議；真正寫程式前再縮小範圍。&lt;/p&gt;
&lt;h2 id=&#34;sourcegraph適合企業多倉庫&#34;&gt;Sourcegraph：適合企業多倉庫
&lt;/h2&gt;&lt;p&gt;Sourcegraph 更偏企業級程式碼理解平台，強調大型程式碼庫和多倉庫環境的索引、搜尋、權限和程式碼演進控制。&lt;/p&gt;
&lt;p&gt;它適合多倉庫企業團隊、大型 monorepo、跨服務遷移、需要權限/審計/SSO/集中搜尋、Agent 需要理解不止目前本地倉庫、安全合規要求高的組織。&lt;/p&gt;
&lt;p&gt;個人開發者通常不需要一上來用 Sourcegraph。它的價值在規模。&lt;/p&gt;
&lt;h2 id=&#34;不同專案怎麼選&#34;&gt;不同專案怎麼選
&lt;/h2&gt;&lt;h3 id=&#34;個人小專案&#34;&gt;個人小專案
&lt;/h3&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 小步修改。重點不是記住所有檔案，而是別用錯命令、別誤刪檔案、別改無關目錄。誤刪防護可以看：/zh-tw/2026/07/10/ai-coding-avoid-accidental-file-deletion/。&lt;/p&gt;
&lt;h3 id=&#34;中型業務專案&#34;&gt;中型業務專案
&lt;/h3&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;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 把整個專案當成一坨文字。應該按模組拆：根目錄寫全局規則，子目錄寫局部規則，MCP 工具查 symbol 和依賴，重要任務先做只讀影響面分析，修改時只改小範圍。&lt;/p&gt;
&lt;p&gt;如果還會用 Claude Code subagent，可以把「程式碼檢索」和「專項審查」拆成不同角色：/zh-tw/2026/07/10/claude-code-subagent-project-fit-guide/。&lt;/p&gt;
&lt;h3 id=&#34;多倉庫團隊&#34;&gt;多倉庫團隊
&lt;/h3&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;多倉庫團隊最重要的是統一規則和權限。這時程式碼庫記憶已經不是個人效率工具，而是工程治理的一部分。&lt;/p&gt;
&lt;h2 id=&#34;選型時看這-7-個問題&#34;&gt;選型時看這 7 個問題
&lt;/h2&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;。找不到程式碼就考慮 Cursor 索引、Serena 或 &lt;code&gt;codebase-memory-mcp&lt;/code&gt;。多倉庫治理就考慮 Sourcegraph。高風險任務上下文要可審查，就考慮 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;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;程式碼檢索只能說明「找到了一些相關內容」，不代表結論一定正確。Agent 仍然需要讀入口檔案、查呼叫鏈、看測試和設定、跑最小驗證並回報不確定性。&lt;/p&gt;
&lt;h3 id=&#34;忘了權限和隱私&#34;&gt;忘了權限和隱私
&lt;/h3&gt;&lt;p&gt;接入前要確認是否上傳程式碼、索引存在何處、是否共享、是否包含 &lt;code&gt;.env&lt;/code&gt; 和客戶資料、MCP server 是否限制工作目錄、日誌是否會列印敏感內容。&lt;/p&gt;
&lt;h3 id=&#34;工具太多規則太少&#34;&gt;工具太多，規則太少
&lt;/h3&gt;&lt;p&gt;先把規則寫清楚，再加索引工具。&lt;/p&gt;
&lt;h2 id=&#34;推薦落地路線&#34;&gt;推薦落地路線
&lt;/h2&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;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;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>
