MCP

FAVA Trails:給 AI agent 的 Git 原生共享記憶(MCP)

如果你想讓多個 AI agent 共享一份可版本化、可追溯的記憶,FAVA Trails 值得一試:它把 agent 的想法以帶 YAML frontmatter 的 Markdown 寫進你自己的 Git 資料儲存庫,草稿經 `propose_truth` 晉級後對所有 agent 可見;但晉級必須設定 OpenRouter API key(Trust Gate 的 LLM 評估經 OpenRouter 呼叫),且儲存引擎 Jujutsu(JJ)與 Git 並行運行,請把維護資料儲存庫當作使用前提。

官方來源 · MachineWisdomAI/fava-trails

安裝

pip install fava-trails

"fava-trails": {
  "command": "fava-trails-server",
  "env": {
    "FAVA_TRAILS_DATA_REPO": "/path/to/fava-trails-data",
    "OPENROUTER_API_KEY": "sk-or-v1-..."
  }
}

適合誰

FAVA Trails(Federated Agents Versioned Audit Trail)是一套透過 MCP 暴露給 AI agent 的 Git 原生記憶系統:agent 產生的想法、決策與觀察,會以帶 YAML frontmatter 的 Markdown 檔案寫進一個由你自己掌控的 Git 資料儲存庫,而不是託管在他人伺服器上的黑箱。它把「草稿」與「對所有 agent 可見的觀察」分成兩級,中間設有一道晉級門檻;agent 平時只看到記憶工具本身,不直接接觸版本控制指令,版本化細節由引擎在儲存庫裡處理,全部歷史都留在提交記錄中可回看。

  • 適合:需要讓多個 agent 共享並累積工作記憶的團隊或個人,例如把工程排查結論、跨 session 的決策上下文存成可重複使用的觀察;希望記憶可版本化、可追溯、隨時能直接查看檔案的使用者;已經用 Git 管理資產、不介意多維護一個資料儲存庫的人。
  • 使用前提:本機可用 pip 安裝;設定時要給出資料儲存庫路徑 FAVA_TRAILS_DATA_REPO;想讓草稿晉級為對所有 agent 可見的觀察,必須設定 OpenRouter API key。
  • 需要斟酌:不想維護資料儲存庫、或不想申請 OpenRouter key 的使用者要慎重——跨 agent 共享記憶這條核心鏈路同時依賴兩者。
  • 未知:證據未說明支援哪些特定 MCP 用戶端、作業系統與 Python 版本需求,也未說明儲存引擎 Jujutsu(JJ)是否需要另行安裝。

3 分鐘完成第一次嘗試

推薦主路徑只有一條:從 PyPI 安裝引擎,再把它註冊進 MCP 用戶端的伺服器設定。前提有兩條:先確定要用作資料儲存庫的位置,設定裡的 FAVA_TRAILS_DATA_REPO 會指向它;要走到晉級那一步,還需要一個 OpenRouter API key。

第一步,安裝這個 Apache-2.0 授權的無狀態 MCP 伺服器:

pip install fava-trails

第二步,在用戶端設定加入官方註冊片段,把其中的儲存庫路徑換成你的實際位置:

"fava-trails": {
  "command": "fava-trails-server",
  "env": {
    "FAVA_TRAILS_DATA_REPO": "/path/to/fava-trails-data",
    "OPENROUTER_API_KEY": "sk-or-v1-..."
  }
}

第三步,讓 agent 呼叫一次寫入範圍最小的能力:用 save_thought 把一條觀察寫成草稿。

save_thought(trail_name="myorg/eng/my-project", content="My finding about X", source_type="observation")

成功訊號:資料儲存庫的 drafts/ 目錄下出現這條草稿。要分清操作性質:這一步是本機寫入,檔案落進你自己的儲存庫,不是唯讀查詢;官方未提供刪除或撤銷草稿的說明,第一次嘗試請寫無害內容。引擎端會以 Jujutsu(JJ)作為儲存引擎、與 Git 以 colocate 模式並行,儲存庫仍是標準 Git 儲存庫,你在這一步不需要碰任何版本控制指令。另外注意 OpenRouter API key 的邊界:它在這份官方設定模板裡已經出現,官方表格進一步說明它對 propose_truth 必需,用於 Trust Gate 的 LLM 評估,經 OpenRouter 呼叫;首次嘗試停在草稿這一步即可,不必順手晉級。

使用案例

案例一:把一次排查的結論累積成專案記憶。情境:agent 剛完成排查,結論值得留給後續 session 重用。做法:呼叫 save_thought,參數為 trail_name、content 與 source_type,可直接使用上面的官方範例呼叫。可期待的結果:drafts/ 目錄生成草稿檔案,內容只落在你的儲存庫裡,其他 agent 尚看不到,不會影響別人;草稿是普通檔案,可直接在儲存庫中開啟查看。

案例二:把已確認的草稿晉級為共享觀察,再檢索驗證。情境:某條觀察已核實,希望之後所有 agent 都能查到。做法:先確認 OpenRouter API key 有效,呼叫 propose_truth(trail_name="myorg/eng/my-project", thought_id=thought_id) 把草稿晉級到 observations/,隨後用 recall(trail_name="myorg/eng/my-project", query="X") 檢索。可期待的結果:recall 能找到這條已晉級的想法,接入同一資料儲存庫的其他 agent 也能用同樣的查詢找到它。確認點:晉級結果對所有 agent 可見,官方未提供撤銷說明,執行前確認內容適合共享;把變更推送到遠端是另一個獨立動作,需另行呼叫 sync 工具或 jj git push。

使用邊界

  • 讀寫性質:save_thought 在資料儲存庫建立草稿,propose_truth 把草稿晉級到 observations/ 並對所有 agent 可見,兩者都是寫入;recall 負責查找已晉級的想法。寫入發生在你自己的儲存庫裡,晉級本身先落在本機;推送到遠端必須另行經 sync MCP 工具或 jj git push 完成,是否同步由你決定。官方未提供撤銷或刪除路徑,不要把寫入當成可隨時回退的操作。
  • 憑證與設定:FAVA_TRAILS_DATA_REPO 指定資料儲存庫位置,OPENROUTER_API_KEY 供晉級時的 LLM 評估使用,兩者都寫在官方設定模板的 env 段裡;官方明確後者對 propose_truth 必需。沒有這個 key 時 save_thought 與 recall 能否工作,證據未說明。
  • 執行環境與資料存放:儲存引擎為 Jujutsu(JJ),與 Git 以 colocate 模式並行;儲存庫仍是標準 Git 儲存庫,GitHub 與 CI/CD 看到的是正常提交。所有內容以帶 YAML frontmatter 的 Markdown 檔案存放在你掌控的儲存庫中。
  • 未確認項:容量配額、多儲存庫規模上限、隱私與資料駐留細節,證據均未提及;Trust Gate 評估的判定標準與失敗時的處理方式,同樣未說明;是否需要自行安裝 jj、支援哪些用戶端與 Python 版本也未說明。不要把「未見到說明」當成沒有風險,寫入內容請按「會長期留在你的儲存庫」來評估。