/ 目錄 / 演練場 / drift
● 社群 dadbodgeoff ⚡ 即開即用

drift

作者 dadbodgeoff · dadbodgeoff/drift

讓 Claude 在每次對話中都能記住你程式碼庫的慣例與過去的決策——不只是今天,而是跨越每個工作階段。

drift 是一個程式碼庫智能 MCP 伺服器。它會掃描你的專案,自動提取程式碼模式與慣例(命名規則、錯誤處理、分層架構),並跨工作階段記住架構決策,讓每次新對話都能繼承團隊的背景脈絡。也可作為離線 CLI 使用。

為什麼要用

核心特性

即時演示

實際使用效果

drift.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "drift": {
      "command": "uvx",
      "args": [
        "drift"
      ],
      "_inferred": true
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "drift",
      "command": "uvx",
      "args": [
        "drift"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "drift": {
      "command": {
        "path": "uvx",
        "args": [
          "drift"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add drift -- uvx drift

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: drift

將 AI 助手引導至你的程式碼庫慣例

👤 厭倦了一直提醒 Claude「不,我們這裡不用 class」的技術負責人 ⏱ ~20 min beginner

何時使用: 在新專案的第一次工作階段,或在大規模重構改變了慣例之後。

前置條件
  • 已安裝 drift — 使用 uvx drift 或全域安裝
步驟
  1. 執行初始掃描
    Run drift scan on this repo. Tell me what patterns you detected around error handling, module structure, and naming.✓ 已複製
    → 包含具體範例的慣例摘要
  2. 記錄你想保留的決策
    Record these team decisions: we use Result<T,E> not exceptions, one controller per feature folder, snake_case for file names. Tag them 'conventions'.✓ 已複製
    → 確認儲存;後續可查詢
  3. 驗證未來的工作階段是否能載入
    In a new session: what conventions does this repo follow?✓ 已複製
    → Claude 能複述你所記錄的決策

結果: 未來每次 AI 工作階段都會預先載入團隊慣例——減少糾正次數,對話更有效率。

注意事項
  • 模式是從現有程式碼推斷的,包括品質不佳的程式碼 — 檢視初始掃描結果,刪除那些其實是你想擺脫的技術債的「慣例」
  • 如果忘記更新,決策記憶會與現實脫節 — 將記憶條目視同文件管理——每季定期檢閱
搭配使用: filesystem · github

在 PR 審查時落實團隊慣例

👤 程式碼審查者 ⏱ ~10 min intermediate

何時使用: 在核准 PR 之前,確認它沒有悄悄破壞團隊的既有模式。

步驟
  1. 載入此 PR 的差異內容
    Load the diff for PR #213 and compare it against the conventions drift has recorded.✓ 已複製
    → 列出符合慣例與不符合慣例的項目
  2. 針對偏差起草審查意見
    For each deviation, draft a polite review comment citing the convention.✓ 已複製
    → 每個發現對應的審查意見文字

結果: 無需審查者記住每條不成文規定,就能進行一致的 PR 審查。

注意事項
  • 新模式可能是刻意為之的——不要過於教條 — 讓作者以「新模式」決策的形式覆寫,並記錄下來供未來 PR 參考
搭配使用: github

維護輕量級架構決策日誌

👤 任何老是忘記當初為何做出某個選擇的團隊 ⏱ ~5 min beginner

何時使用: 用來取代那個沒人會去更新的正式 ADR 資料夾。

步驟
  1. 決策確定時立即記錄
    Record decision: we picked Postgres over DynamoDB because of ad-hoc query needs. Date today. Tags: db, architecture.✓ 已複製
    → 條目儲存並附有 ID
  2. 日後問題再度浮現時查詢
    Why did we pick Postgres?✓ 已複製
    → 已儲存的決策內容浮現

結果: 即使人員流動,組織的知識記憶也能傳承下去。

組合

與其他 MCP 搭配,撬動十倍槓桿

drift + filesystem

drift 負責掌握慣例,filesystem 負責實際編輯

Using the conventions drift has recorded, refactor src/api/users.ts to match. Use filesystem to apply edits.✓ 已複製
drift + github

根據已記錄的慣例審查傳入的 PR

Fetch PR #88, check it against drift conventions, draft review comments for any drift.✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
scan_codebase path: str 第一次工作階段,或大型重構之後 free; CPU-bound
list_conventions tag?: str 在工作階段開始時載入背景脈絡 free
record_decision title: str, body: str, tags?: str[] 當團隊對某個非顯而易見的事項達成共識時 free
query_memory query: str 當 Claude 需要回想過去的背景脈絡時 free (local embeddings)
detect_pattern area: str 臨時查詢「我們這裡通常怎麼做 X?」 free

成本與限制

運行它的成本

API 配額
無——完全本地執行
每次呼叫 Token 數
慣例摘要:約 1k tokens。完整掃描輸出可達 10k+
費用
免費且開放原始碼
提示
工作階段開始時載入慣例摘要,而非完整掃描結果。完整掃描僅在重構時使用。

安全

權限、密鑰、影響範圍

憑證儲存: 僅限本地 SQLite 或檔案系統
資料出站: 預設無資料外傳——完全離線運行

故障排查

常見錯誤與修復

Scan hangs on a large monorepo

透過 .driftignore(語法與 .gitignore 相同)排除自動產生的目錄和第三方套件目錄。

驗證: drift scan --dry-run
Memory query returns nothing relevant

重建本地嵌入向量索引;新增的決策在建立索引之前不會出現在查詢結果中。

驗證: drift reindex
Claude doesn't use recorded conventions

確認 MCP 在你的用戶端設定中排列於最前面,以便在每次工作階段開始時就載入其背景脈絡。

驗證: claude mcp list

替代方案

drift 對比其他方案

替代方案何時用它替代權衡
MARM-Systems你想要的是不限於程式碼的通用跨工作階段記憶對程式碼的感知能力較弱;更偏向通用筆記
llm-context.py你想要的是基於規則的程式碼打包,而非記憶功能沒有持久化層
Plain ADRs in the repo你偏好以文件即程式碼的方式管理AI 每次工作階段都需要重新讀取——token 消耗較高

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills