Communitygithub.com

spscream/ai-floppy - 會話記憶與工作規範插件

為編碼代理提供持久的 Git 提交記憶、啟動儀式、結束儀式,以及確保誠實的守衛機制。支援 Claude Code 和 Cursor。

ai-floppy - 會話記憶與工作規範插件 是什麼?

這是一個專為 AI 編碼代理(如 Claude Code 和 Cursor)設計的會話記憶與工作流程規範工具。它透過啟動儀式 (Init)、結束儀式 (Wrap) 和守衛機制,強制代理在每次會話開始時載入先前的記憶(以 Git 提交形式儲存),並在結束時將新知識提交回記憶庫。其核心是 `scripts/init.sh` 腳本,該腳本會詢問使用者兩個關鍵問題:記憶目錄(預設為 `.agent-memory`)和記憶語言(預設為 `en`),然後在當前儲存庫中初始化必需的檔案和結構。 此技能特別強調跨平台相容性與健壯性,它會自動偵測 Claude Code 和 Cursor 的插件根目錄變數,並在無法找到時透過快取目錄進行備援查找。一旦初始化完成,`quota.lock` 檔案不會被建立——這是有意為之,因為需要基於真實語料庫來進行配額測量。對於開發者而言,這項技能消除了反覆向 AI 代理解釋上下文的需求,讓代理能夠跨會話保持一致的專案理解和行動優先級。

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add spscream/ai-floppy

在你喜歡的 AI 中提問

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

說明文件

初始化

一個輕薄的包裝器。所有工作都在 scripts/init.sh 中;這個技能存在的目的是詢問兩個腳本無法自行回答的問題,然後執行它。

1. 詢問

用一條簡短的訊息詢問人類:

  • 記憶目錄 — 此儲存庫持久性記憶的位置。如果他們沒有理由想要其他名稱,建議使用 .agent-memory。
  • 記憶語言 — 筆記撰寫時使用的語言。這與代理回應時使用的語言無關(請參閱 agent-memory);如果他們沒有偏好,建議使用 en。

不要默默地猜測這兩個值 — 錯誤的記憶目錄後續移動起來很麻煩,而這只需要一個簡單的問題。

2. 執行腳本

在執行之前 — 這是寫入部分,它會將檔案佈署到 --repo . — 確認該目錄確實是人類想要設定的儲存庫。同一個環境中可能同時開啟多個專案(尤其是 Cursor),而技能執行的 shell 不一定是用戶正在交談的那一個。用一行文字指明目錄名稱就足夠了。

這兩種環境都不應被信任能將插件根目錄傳遞給技能,因此不要依賴單一變數。Claude Code 會設定 CLAUDE_PLUGIN_ROOT,Cursor 會設定 CURSOR_PLUGIN_ROOT(2026 年 8 月 26 日測量),但各自只在某些上下文中設定,而這裡無法區分一個未設定的變數和一個已設定的變數。以與安裝後 .floppy/run 定位插件相同的方式定位插件 — 這兩個環境變數,然後是開發用的 AI_FLOPPY_HOME,最後是插件快取下最新的檢出目錄 — 如果沒有解析到任何一個,則大聲失敗,並提供安裝命令。這重複了 shim/run 的搜索邏輯(shim/run:11-26),而不是從那裡讀取,因為在此儲存庫中 .floppy/run 尚不存在 — 建立它正是下面腳本要做的第一件事,而該搜尋通常存在於此插件複製到消費者中的唯一檔案中,該檔案必須保持自包含。執行:

has_scripts() { [[ -n "${1:-}" ]] && ls "$1"/scripts/*.sh >/dev/null 2>&1; }

if   has_scripts "${CLAUDE_PLUGIN_ROOT:-}"; then
  floppy_root="$CLAUDE_PLUGIN_ROOT"
elif has_scripts "${CURSOR_PLUGIN_ROOT:-}"; then
  floppy_root="$CURSOR_PLUGIN_ROOT"
elif has_scripts "${AI_FLOPPY_HOME:-}"; then
  floppy_root="$AI_FLOPPY_HOME"
else
  floppy_root="$(ls -d "$HOME"/.claude/plugins/cache/*/floppy/*/ 2>/dev/null | sort -V | tail -n1)"
fi

if ! has_scripts "$floppy_root"; then
  echo "x 找不到 floppy 插件(快取目錄下沒有 scripts/*.sh 被視為未找到)。" >&2
  echo "  安裝方式:/plugin marketplace add spscream/ai-floppy && /plugin install floppy" >&2
  echo "  如果已安裝,請重新安裝:`plugin update` 在版本不變時是無效操作。" >&2
  exit 1
fi

bash "$floppy_root/scripts/init.sh" \
  --repo . --memory-dir <他們的答案> --language <他們的答案>

這只能以這種方式運行 — 直接透過腳本,而不是透過 .floppy/run — 因為在此儲存庫中 .floppy/run 尚不存在;建立它正是腳本做的第一件事。

3. 報告

以簡短形式回讀腳本自身的輸出:建立了什麼,以及哪些已經存在且未被觸動(腳本會按檔案說明)。稍後在同一個儲存庫上再次執行此操作不會改變任何東西 — 這是設計使然,而不是值得道歉的限制。

明確指出 quota.lock 並未被建立 — 原因請參閱 agent-memory,並說明一旦有值得測量的語料庫時,它將需要一個真實的測量,而不是在此之前。

相關技能