Communitygithub.com

24601/surreal-skills

為 AI 代理提供持久化的虛擬檔案系統,以 Rust 為核心、Python 代理(Pydantic AI)為介面,並由 SurrealDB 支援持久化檔案操作。屬於 surreal-skills 系列的一部分。

surreal-skills 是什麼?

SurrealFS 是專為 AI 代理設計的持久化、可查詢虛擬檔案系統,由 SurrealDB 提供支援。它能讓 AI 代理跨工作階段進行可靠的檔案操作、階層式儲存以及內容搜尋。該專案包含兩個主要元件:以 Rust 實作的核心函式庫,提供 POSIX 風格的指令(如 ls、cat、grep、touch、mkdir)以及嵌入式的 RocksDB 或遠端 SurrealDB 儲存後端;以及以 Python 實作的 AI 代理,基於 Pydantic AI 框架,提供對應的 tools 並可經由 HTTP 對外服務。代理的預設 LLM 為 Claude Haiku,並內建 OpenTelemetry 遙測功能(可選擇關閉)。由 SurrealDB 支援的虛擬根目錄能防止路徑穿越攻擊,但 pipe 指令(如 curl)會在主機上執行,因此建議在受控環境中使用。此技能適合需要持久工作區、跨代理共享檔案及內容管理的情境。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/24601/surreal-skills/tree/main/skills/surrealfs

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

SurrealFS -- AI 代理的虛擬檔案系統

SurrealFS 提供了一個由 SurrealDB 支援的持久化、可查詢的虛擬檔案系統。 專為需要跨工作階段進行可靠檔案操作、階層式儲存以及內容搜尋的 AI 代理設計。

元件

元件Crate/Package語言用途
核心函式庫surrealfsRust檔案系統操作、CLI REPL、SurrealDB 儲存層
AI 代理surrealfs-aiPython(Pydantic AI)提供工具整合與 HTTP 服務的代理介面

Rust 核心 -- 指令

surrealfs crate 提供了類似 POSIX 指令的 REPL:

指令說明
ls列出目錄內容
cat顯示檔案內容
tail顯示檔案尾端數行
nl為檔案行數編號
grep搜尋檔案內容
touch建立空檔案
mkdir建立目錄
write_file寫入內容至檔案
edit編輯檔案內容
cp複製檔案
cd變更目錄
pwd顯示目前工作目錄

支援從外部指令進行管道操作:curl https://example.com > /pages/example.html

儲存後端:

  • 嵌入式 RocksDB(本機)
  • 遠端 SurrealDB(透過 WebSocket)

Python AI 代理

基於 Pydantic AI 建置,提供對應檔案系統指令的工具。

from surrealfs_ai import build_chat_agent

# 建立代理(預設 LLM:Claude Haiku)
agent = build_chat_agent()

# 透過 HTTP 對外服務
import uvicorn
app = agent.to_web()
uvicorn.run(app, host="127.0.0.1", port=7932)

功能:

  • 預設 LLM:Claude Haiku
  • 透過 Pydantic Logfire (OpenTelemetry) 提供遙測 -- 關閉方式請參閱安全章節
  • 所有檔案系統操作皆可作為代理工具使用
  • HTTP 服務(預設連接埠 7932,綁定於 127.0.0.1)
  • 路徑正規化:虛擬 FS 根目錄 / 已隔離,路徑無法逸出至主機檔案系統

快速開始

# 安裝 Rust 核心
cargo install surrealfs

# 使用嵌入式儲存啟動 REPL
surrealfs

# 或連線至遠端 SurrealDB 實例
surrealfs --endpoint ws://localhost:8000 --user root --pass root --ns agent --db workspace

# 安裝 Python 代理
pip install surrealfs-ai

# 啟動代理 HTTP 伺服器
python -m surrealfs_ai --host 127.0.0.1 --port 7932

使用案例

  • AI 代理工作階段的持久化工作區
  • 具備中繼資料查詢的階層式文件儲存
  • 透過 SurrealDB 權限實作多代理共享檔案存取
  • 內容策略與知識管理
  • 專案脚手架與模板管理

安全考量

憑證:遠端 SurrealDB 連線需要 --user/--pass 參數。請使用 專用且權限最低的憑證,並限定於特定 namespace/database。切勿在共享或 正式環境中使用 root 憑證。

遙測:Python 代理使用 Pydantic Logfire (OpenTelemetry)。若要 停用遙測,請設定:export LOGFIRE_SEND_TO_LOGFIRE=false 或在程式碼中 以 send_to_logfire=False 設定 Logfire。在包含敏感資料的環境中啟用前, 請先稽核遙測端點。

HTTP 綁定:代理預設綁定至 127.0.0.1。請勿在未經驗證及 未使用 TLS 的情況下暴露至 0.0.0.0 或公開網路。若在容器中執行, 請使用網路隔離機制。

Pipe 指令:Rust 核心支援 curl URL > /path 語法以擷取內容。 此方式會在主機上執行 pipe 來源指令。請僅在受控環境中使用受信任的 URL。 切勿讓不受信任的輸入用來建構 pipe 指令。

沙箱:虛擬 FS 根目錄(/)是以 SurrealDB 為基礎的抽象層, 而非主機檔案系統。路徑遍歷(例如 ../../etc/passwd)會經過正規化 並遭到拒絕。然而,pipe 指令會在主機上執行 -- 若接受不受信任的 代理輸入,請在容器或沙箱中執行。

完整文件

請參閱主要技能的規則檔案以取得完整指引:

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

相關技能