Communitygithub.com

Aresfangxx/fade-away-skill

為 AI 對話提供持久記憶層 — 記錄工作日誌、追蹤任務,並在純 Markdown 的 Obsidian 知識庫中建立由人工審核的知識庫。用於 Claude Code 與 Codex 的會話追蹤技能。

fade-away-skill 是什麼?

此技能旨在解決 AI 對話中上下文遺失的根本問題。它在一個純 Markdown 的 Obsidian Vault 中,建立從輕量工作日誌逐步升級至主題維基、索引、每週地圖,最終沉澱為知識庫的完整記憶層。當使用者在 Claude Code 或 Codex 中切換不同任務時,無需重複解釋背景脈絡。技能會自動在每輪對話後記錄進度(HH:MM <進展>)、管理時區一致性(預設 Asia/Hong_Kong)、維護會話狀態(如當前條目、綁定主題),並在開場時檢查並行工作、進行知識庫檢索。所有新增知識或結構變更,均在獲得使用者確認後才執行,確保人工把關。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add Aresfangxx/fade-away-skill

在你喜歡的 AI 中提問

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

說明文件

fade-away

維護一個輕量級的工作日誌 -> 主題維基 -> 索引 -> 每週地圖 -> 知識庫記憶層,讓使用者能夠切換任務,建立個人 LLM 知識庫,無需重複解釋上下文。

操作契約

此技能在整個對話過程中運作,而不僅是第一個回合。在每次助手回應之前,檢查該回合是否觸發了會話開始、每回合儲存、主題切換、手動記錄、主題升級、每週/儀表板/檢查、或知識升級。最常被忽略的規則是每回合儲存:每個有實質內容的助手回合,都會在活動工作日誌條目中附加一行 (HH:MM) <進展>。

保持熱路徑小巧。將低頻機制放在 references/ 中,並僅在其觸發條件發生時才載入。

路徑

<VAULT_ROOT> 是 fade-away 維護的 Obsidian Vault。在每個會話中解析一次,順序如下:

  1. 專案 AGENTS.md / CLAUDE.md 中宣告的 Vault root 欄位(由引導安裝腳本 scripts/bootstrap_vault.py 撰寫)。
  2. 若無此欄位,則將當前專案/工作目錄視為 Vault 根目錄。

在讀取或寫入之前,始終將 <VAULT_ROOT> 展開為絕對路徑:

  • 工作日誌:<VAULT_ROOT>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md 其中 <YYYY-MM> 是該日期所屬月份,<YYYY-Wnn> 是該日期的 ISO 週。
  • 每週索引:<VAULT_ROOT>/03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md 其中 <YYYY-MM> 是包含該週星期日的月份。
  • 任務索引:<VAULT_ROOT>/00 Tasks/_Index.md
  • 主題頁面:<VAULT_ROOT>/00 Tasks/<topic-filename>.md
  • 知識頁面:<VAULT_ROOT>/02 Knowledge/<domain>/<page>.md
  • 參考資料:此技能的 references/ 目錄

如果 00 Tasks/ 或 _Index.md 不存在,則在該會話中跳過任務索引和主題邏輯。請勿在會話中途自動建立 00 Tasks/。工作日誌記錄仍會執行。

頂層檔案(例如 备忘.md)可能直接位於 03 Journal/ 下;請勿移動它們。

時區規則

此技能記錄的所有日期和時間必須使用一個統一的時區,稱為 vault-time。從專案的 AGENTS.md / CLAUDE.md 中的 Time zone 欄位解析 vault-time;如果未設定,則回退到機器的本地時區。引導安裝程式預設為 Asia/Hong_Kong,因此未設定的 Vault 行為等同於 Asia/Hong_Kong / GMT+8 / UTC+8。

使用 vault-time 作為工作日誌檔案名稱、父路徑、標題、進度行、主題前置資料、_Index.md 時間戳記和每週索引推斷的依據。

偏好的 Shell 檢查方式(替換為你設定的時區):

TZ=Asia/Hong_Kong date

信任 vault-time 勝過工具提供的日期提示。如果工具提供的日期與 vault-time 衝突,則根據當前的 vault-time 讀數來推斷工作日誌檔案名稱、ISO 週和 HH:MM。關於附加/並發的詳細資訊,請閱讀 references/journal-write-protocol.md。

會話狀態

內部追蹤:

  • current_entry_start:當前工作日誌條目的 HH:MM。
  • current_entry_date:當前工作日誌條目的 YYYY-MM-DD。
  • current_entry_title:當前的簡短中文任務標題。
  • bound_topic:主題檔案名稱(不含 .md),或 None。
  • bind_skipped:僅在使用者選擇不綁定時設為 True。
  • task_auto_bind_checked / task_auto_bind_skipped:每個新的工作日誌條目都會重置。
  • knowledge_candidate_prompted / knowledge_candidate_skipped:每個新的工作日誌條目都會重置。
  • knowledge_context_checked:在當前使用者請求通過知識檢索閘道或該閘道被故意跳過後設為 True。
  • tracking_disabled:僅在使用者選擇退出此會話時設為 True。

對話開始

  1. 如果存在,讀取 <VAULT_ROOT>/00 Tasks/_Index.md。將表格主體行解析為 [[topic]] | timestamp | next-step;將遺失的檔案視為空索引。

  2. 以低成本檢查是否存在並行的同主題會話。讀取今日 vault-time 工作日誌的尾部。如果最後的進度行在 15 個 vault-time 分鐘內,且其條目可能與使用者的第一則訊息重疊,則顯示:

    ⚠️ 另一會話 <HH:MM> 剛寫過 [[<topic>]],可能在並行做同一件事。我先掃一眼最新進展再回。
    

    然後讀取最近的條目,確保此回應不會與並行工作矛盾。如果沒有最近的重疊條目,則靜默跳過。

  3. 在僅依賴 _Index.md、今日工作日誌或匹配的主題頁面之前,先針對任何實質性請求執行知識檢索閘道。當請求涉及可能具有持久上下文的專案/領域/人物/方法(位於 <VAULT_ROOT>/02 Knowledge/),或使用者要求上下文、分析、決策、策略、延續、審查、寫作風格、可重複工作流程或較舊的工作時,請閱讀 references/knowledge-retrieval-trigger.md。使用庫存優先路由:列出當前的知識樹,從中推導出當前資料夾/專案,然後在進行廣泛的正文搜尋之前,先匹配檔案名稱、H1/標題、別名、標籤、status: canonical、導航頁面和真實來源頁面。僅跳過等待確認的問候、僅限儀表板/檢查的報告、純工作日誌記帳、原子工具查詢,以及在經過此元資料優先的遍歷後仍未找到相關知識命中的情況。

  4. 根據使用者的第一則訊息進行分派,順序如下:

    • 引導/設定意圖(install fade-away、setup、bootstrap、初始化、第一次使用、開源部署,或缺少 _Index.md 且使用者要求初始化):閱讀 references/bootstrap-vault.md。引導是一次性的設定路徑;如果不清楚 Vault 根目錄則詢問,且除非使用者確認,否則絕不建立檔案。
    • 上下文/指令檢查意圖(AGENTS、CLAUDE、上下文、context、經驗繼承、規則漂移、專案結構、技能/Vault/工作流程維護,或新的 cwd/專案邊界):閱讀 references/context-check.md。僅在發現漂移或使用者明確詢問時才報告;除非使用者確認特定修補,否則不寫入指令檔案。
    • 記憶體檢查意圖(lint、體檢、health check、檢查知識庫、檢查任務索引、看看哪些適合變成 wiki 或類似):閱讀 references/lint-vault-memory.md;先呈現報告,除非使用者確認,否則不寫入修復或知識頁面。
    • 知識升級意圖(沉澱成知識、寫進 knowledge、變成 wiki、歸檔成知識頁 或類似):閱讀 references/promote-to-knowledge.md。
    • 每週索引意圖(周索引、週報、weekly index、weekly summary、本週總結 或類似):閱讀 references/render-weekly-index.md。僅當模組寫入或更新每週索引時才開啟工作日誌條目。
    • 儀表板意圖(看下任務、看板、dashboard、總覽 或類似):閱讀 references/render-dashboard.md,僅渲染,且暫時不開啟工作日誌條目。
    • 明確的現有主題匹配:靜默讀取該主題頁面,設置 bound_topic,然後開啟工作日誌條目。
    • 模糊問候(hi、你好、在嗎、開始幹活了 等):如果 _Index.md 有行,則輸出 ⏮️ 上次:<task>,下一步是 <next-step>。繼續這個還是新任務? 並等待回覆。僅在使用者確認時才綁定到第一行。
    • 新的實質性任務:不要提及舊任務;保持 bound_topic = None。

開啟工作日誌條目

僅在實際開始工作時才開啟工作日誌條目。計算 vault-time 每日路徑為 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-MM-DD.md,其中 <YYYY-MM> 是該日期所屬月份,<YYYY-Wnn> 是 ISO 週。使用 mkdir -p 建立缺失的月份/週資料夾。

如果每日檔案不存在,則根據 references/journal-write-protocol.md 中的範本建立。確保有 ## 🕐 任務時間線,然後在該區段底部附加一個標題:

  • 未綁定:### HH:MM ▶️ <短中文標題>
  • 已綁定:### HH:MM ▶️ <短中文標題> → [[00 Tasks/<bound_topic>]]

儲存 current_entry_start、current_entry_date 和 current_entry_title。為新條目重置任務、知識候選和知識檢索標記。

每回合儲存

在每個具有實質內容輸出的助手回合之後,在當前工作日誌條目內附加恰好一行進度:

(HH:MM) <一句話進展>

附加在活動條目正文的末尾,緊接在下一個 ### 時間軸標題或檔案結尾之前。不要重寫之前的進度行。如果該回合只是澄清問題或 tracking_disabled = True,則跳過儲存。

在寫入之前,當你需要確切的附加位置、並發寫入重基、vault-time 邊界處理、陷阱行語法或工作日誌範本時,請閱讀 references/journal-write-protocol.md。

儲存後檢查

在每回合儲存後執行以下檢查:

  1. 明確升級:如果可見輸出包含明確的 ➡️ 下一步 標記或 ## ➡️ 下一步 區段,則更新主題/索引層。如果已設置 bound_topic,則閱讀 references/topic-update-protocol.md;否則,如果 bind_skipped = False,則閱讀 references/promote-to-wiki.md。
  2. 主題自動重新整理:當已設置 bound_topic 且未出現明確的下一步時,如果活動條目可能超過現有的陳舊閾值,則閱讀 references/topic-update-protocol.md。保持當前的自動重新整理行為;除非使用者要求,否則不要將其轉換為確認提示。
  3. 任務自動綁定:當活動條目未綁定且缺少明確的 ➡️ 下一步 時,閱讀 references/task-candidate-trigger.md。對於類似任務的會話,自動建立/綁定主題;僅跳過瑣碎的 Q&A、問候、僅限儀表板/檢查的報告、純澄清或沒有任務性質的會話。
  4. 知識候選:當可能出現了可重複使用的知識,且使用者尚未要求升級時,閱讀 references/knowledge-candidate-trigger.md。不要自動建立或更新 02 Knowledge/。

會話中主題切換

如果使用者在條目已開啟的情況下說 繼續做 X、回到 X 或要求切換:

  1. 保守地將 X 與 _Index.md 匹配。
  2. 如果沒有明確匹配,則提出一個簡短的澄清問題。
  3. 如果匹配明確且與 bound_topic 不同,則詢問:切到 [[X]]?我會給當前 entry 追加一行切換記錄,然後打開新的 X entry。
  4. 確認後,附加 (HH:MM) 切出當前任務,轉到 [[00 Tasks/X]]。,讀取主題頁面,設置 bound_topic = X,並開啟一個新的已綁定工作日誌條目。
  5. 如果使用者拒絕,則保留現有綁定。

不要在會話中途靜默切換主題。

手動記錄請求

如果使用者說 記錄一下、記一下剛才的進展 或類似內容,則在當前條目中添加一個額外的進度行,總結自上一個儲存以來的進展。除非使用者明確要求切換任務,否則不要開啟新條目或關閉當前條目。

模組

僅在需要時載入低頻工作流程:

  • references/journal-write-protocol.md:工作日誌建立、附加位置、vault-time 邊界處理、並發寫入重基、陷阱行語法和工作日誌範本。
  • references/bootstrap-vault.md:新使用者 Obsidian Vault 的一次性設定工作流程;僅在確認後建立最小的 fade-away 目錄/範本/索引和指令入口點。
  • references/context-check.md:冷啟動或邊界變更檢查,針對陳舊的指令/上下文表面(例如 AGENTS.md、CLAUDE.md、專案結構筆記和知識繼承);在確認前報告漂移但不寫入。
  • references/task-candidate-trigger.md:將有實質內容的未綁定任務條目自動綁定到 00 Tasks;跳過瑣碎或非任務會話。
  • references/topic-update-protocol.md:更新已綁定的主題頁面、重新整理 _Index.md,並執行當前的主題自動重新整理行為。
  • references/promote-to-wiki.md:在明確的 ➡️ 下一步 或任務自動綁定觸發後,將未綁定的工作日誌條目綁定到主題頁面並更新 _Index.md。
  • references/render-dashboard.md:從 _Index.md 渲染一個唯讀的任務儀表板。
  • references/render-weekly-index.md:在 03 Journal/<YYYY-MM>/<YYYY-Wnn>/YYYY-Wnn 周索引.md 中生成或更新一個按需的每週地圖。
  • references/lint-vault-memory.md:為任務、工作日誌、每週索引和知識層渲染一份唯讀的健康報告。
  • references/knowledge-retrieval-trigger.md:在實質性工作開始前,盤點當前的 02 Knowledge/ 樹,根據元數據對候選項進行排序,並讀取少量相關頁面,以使舊的持久上下文、方法和專案事實能夠影響答案。
  • references/knowledge-candidate-trigger.md:提議可重複使用的工作日誌材料用於 02 Knowledge/,但在確認前不會寫入。
  • references/promote-to-knowledge.md:在確認後,在 02 Knowledge/ 下建立或更新策劃好的頁面。

格式規則

  • 時間格式:使用已設定的 vault 時區的 24 小時制 HH:MM。
  • 工作日誌標題:簡短、描述性的中文;避免使用如 任務1 的通用標題。
  • 主題檔案名稱:kebab-case,無空格,僅在磁碟上使用 .md 副檔名。
  • 工作日誌中的主題維基連結:[[00 Tasks/<topic>]]。
  • 索引行格式:| [[<topic>]] | YYYY-MM-DD HH:MM | <已跳脫的 next-step> |。
  • 舊有的 task-tracker 目錄已被移除;如果使用者詢問舊的追蹤器,請解釋 fade-away 已取代它。

邊緣情況

  • 使用者選擇退出(這次不用記錄):設置 tracking_disabled = True;跳過該會話的所有寫入,但允許讀取 _Index.md 以獲取上下文。
  • 跨午夜:使用 vault-time 午夜。在 vault-time 午夜之後,在新的 vault-time 日的日誌中開啟一個延續條目,並在該處繼續每回合儲存。
  • 僅儀表板回合:渲染儀表板並等待;在使用者開始實際工作之前,不要開啟工作日誌條目。
  • 索引匹配但缺少主題頁面:說明該主題行存在但頁面缺失,然後詢問是要重新建立還是繼續以未綁定狀態進行。

相關技能