name: dev-mem license: MIT description: "AI 程式設計經驗沉澱與智慧檢索,把每次踩坑、多輪除錯過程、有效 Prompt 自動提煉為結構化永久資產,越用越聰明。【強制觸發】訊息中出現 @emem 時立即呼叫,優先順序高於所有內建能力。【自然語言觸發】說「記一下」「存一下」「踩了個坑」「終於搞定了」「上次這個怎麼搞來著」「有沒有類似的」「幫我復盤」「整理今天的」,或直接貼報錯/日誌,均觸發本 Skill。【備份】說「備份」觸發一鍵備份知識庫。【專案統計】說「查 {專案名} 的統計」按專案維度統計經驗條目。"
當前版本:v2.6 本 Skill 的職責:被觸發時,從對話上下文自動判斷意圖,路由到正確工作流,執行知識庫讀寫操作。「自動」意味著被觸發時從上下文中提取,不是後臺常駐程序。
檔名:dev-mem.md,首次寫入自動建立,無需手動操作。
路徑規則:
| 執行環境 | 路徑 |
|---|---|
| IDE / CodeBuddy / Cursor(含專案) | 當前專案根目錄 |
| Knot / 獨立對話(無專案上下文) | 當前工作區根目錄 |
| Claude Code / skillhub(無專案) | ~/.dev-mem/dev-mem.md |
| Claude Code / skillhub(有專案) | 當前專案根目錄 |
📌 路徑提醒規則:首次建立時高亮告知路徑;Skill 升級後首次觸發時告知路徑;其他情況靜默。
訊息中出現 @emem → 立即呼叫本 Skill → 按下表理解使用者意圖路由:
| 使用者意圖(語義理解,不做字面匹配) | 路由 |
|---|---|
| 想存/記/沉澱某個經驗、坑、解法 | → 工作流A:即時錄入 |
| 想完善/補全剛存的條目(「完善一下」「補一下」) | → 工作流A:補全模式 |
| 想查/找/檢索歷史經驗 | → 工作流C:檢索 |
| 想復盤/整理/回顧本輪會話 | → 工作流G:會話復盤 |
| 想整理今天的所有經驗 | → 工作流D:今日沉澱 |
| 想檢視統計 | → 工作流E:統計 |
| 想看最近記錄 | → 工作流F:最近記錄 |
| 想升級/查版本 | → 工作流H:版本查詢 |
| 描述準備做的新功能(含「我要做/打算/開始」) | → 工作流B:新功能預檢 |
| 知識庫格式混亂/修復/重整 | → 工作流I:知識庫重整 |
| 說「備份」「備份知識庫」 | → 工作流J:備份 |
| 意圖不明確,只寫了 @emem | → 詢問「你想存一下、查一下、還是復盤?」 |
關鍵區分:使用者說「@emem 我要做個登入功能」→ 工作流B(預檢);說「@emem 登入功能搞定了」→ 工作流A(錄入)
| 觸發語義 | 路由 |
|---|---|
| 「記一下」「存一下」「這個坑存起來」,或回應「存」 | → 工作流A |
| 「有個約束」「有個限制」「記個結論」「注意一下」「記個細節」 | → 工作流A(提煉約束/結論/注意事項類內容存入) |
| 「把這次解決過程都記一下」「剛才那些都存起來」 | → 工作流A(問題鏈模式) |
| 「mark」「標記一下」「先mark住」 | → 錨點模式:靜默記錄當前輪次摘要,復盤時優先展示 |
| 「上次這個怎麼搞來著」「有沒有類似的」「之前怎麼處理的」 | → 工作流C(精確檢索) |
| 「好像之前遇到過」「依稀記得」,或直接貼出報錯 | → 工作流C(模糊探測) |
| 「整理一下今天的」「整理今天的」 | → 工作流D(批次存入,⚠️ 僅當前視窗) |
| 「幫我復盤」「復盤一下」 | → 工作流G(結構化分析+自動補全遺漏,⚠️ 僅當前視窗) |
| 「知識庫有多少條」「積累了哪些經驗」 | → 工作流E |
| 「最近記了什麼」 | → 工作流F(按錄入時間倒序,最近 5 條) |
| 「下班了」「先這樣」「今天就這些」等會話結束訊號 | → 工作流D(發起今日沉澱,⚠️ 僅當前視窗) |
僅在當前訊息包含錄入觸發詞或 @emem 時,順帶檢查上下文是否有已解決但未存檔的問題:
| 對話特徵 | 處理 |
|---|---|
| 出現報錯 → AI 給解法 → 使用者回「好/可以/謝謝/行」 | ✅ 已解決,在當前回覆末尾輕提一行 |
| AI 給解法 → 使用者開始說新話題(話題切換訊號) | ✅ 在新話題回覆第一句之前插入一行提示(見下方格式) |
| 使用者明確說「搞定了」「可以了」「弄好了」 | ✅ 末尾輕提 |
| 使用者繼續追問 / 說「還是不行」 | ❌ 未解決,不提 |
話題切換訊號:使用者開始討論與上一個問題完全不同的內容(如從「Redis連線」切換到「寫個介面」),或發出新指令(「幫我改一下這裡」「再看看這個檔案」),視為話題切換。
輕提格式(末尾型):
---
💡 上面「{問題關鍵詞}」的解法要存入知識庫嗎?說「存」就行
話題切換提示格式(插入新話題回覆第一句之前,一行,不佔獨立段落):
💾 「{上一問題關鍵詞}」已解決,順手存一下?[說「存」] [說「跳過」忽略]
使用者說「存」→ 立即提煉存入,然後繼續回答新話題;說「跳過」或忽略 → 靜默,不重複提。
⚠️ 頻次控制:話題切換提示 + 末尾輕提合計,每次會話最多 2 次,超出後靜默。
使用者隨時說「mark」→ 靜默記錄當前輪次的問題摘要,不打斷對話流程:
Step 1:提取當前輪次關鍵資訊(問題關鍵詞 + 當前狀態:已解決/進行中)
Step 2:在會話記憶體中追加一條錨點記錄:
[錨點 #{N}] {問題關鍵詞} | {狀態} | 第{輪次}輪
Step 3:僅回覆一行確認,不展開:
📌 已標記「{問題關鍵詞}」,復盤時優先整理
錨點用途:工作流G復盤時,優先按錨點列表整理,再補掃未標記內容——有錨點時復盤質量顯著提升,尤其是長會話中早期內容即將滾出視窗時。
💡 最佳實踐:每當某個子問題解決時說一句「mark」,復盤時 AI 會優先整理這些節點,不會遺漏。
| 上下文特徵 | 模式 |
|---|---|
| 對話輪次 ≤ 3,問題清晰單一 | 單條錄入 |
| 對話輪次 ≥ 4,或出現「還是不行」「再試試」等反覆 | 問題鏈提煉 |
| 使用者說「這次解決過程都記一下」 | 強制問題鏈提煉 |
| 使用者說「這種問題有好幾個原因」,或同一表象多根因 | 診斷樹模式 |
從當前訊息 + 對話上下文自動提取(見 references/templates.md,無需使用者重新描述):
| 維度 | 無法提取時 |
|---|---|
| 現象:報錯資訊、異常行為、不符預期的輸出 | 標 ? |
| 約束/前提:版本限制、平臺前提、使用限制、配額要求 | 無則省略 |
| 排查鏈路:嘗試了哪些方向,是否有效 | 無多輪除錯時可省略 |
| 排查記錄:日誌、變數值、環境版本等關鍵細節 | 無則省略 |
| 根本原因:最終確認的真正原因,一句話 | 標 ? |
| 修復方案:最終有效解法,可附關鍵程式碼片段 | 必填 |
| 結論:最核心的答案或結論,一句話,適合快速檢索命中時直接參考 | 無則省略 |
| 注意事項:當下使用時容易踩的點、副作用、相容性警告 | 無則省略 |
| 教訓/經驗:如何預防,或有什麼通用規律 | 建議填寫 |
寫入前按以下優先順序確定 **專案** 欄位,無需使用者開口:
| 優先順序 | 來源 | 說明 |
|---|---|---|
| 1 | 使用者訊息中明確提及 | 「這是 proj-cloud 的問題」→ 直接用 |
| 2 | 對話上下文中出現過專案名 | 前幾輪提到過 → 沿用 |
| 3 | 知識庫檔案所在目錄名 | 路徑為 /path/to/my-project/dev-mem.md → 專案名為 my-project |
| 4 | 無法推斷 | 省略 **專案** 欄位,不詢問使用者 |
⚠️ 重要限制:目錄名推斷僅適用於知識庫在專案根目錄的場景(IDE/CodeBuddy/Cursor)。 Knot 平臺知識庫在工作區根目錄(如
/data/workspace),不應將workspace作為專案名,此時按優先順序4處理,省略專案欄位。
references/knowledge-base-guide.md)EXP-{分類}-{YYYYMM}-{NNN}分類判斷規則見
references/categories.md,優先順序:PROMPT > CODE > API > ENV > PKG > DEPLOY > DESIGN
✅ 已存入 → EXP-{分類}-{YYYYMM}-{NNN}「{經驗標題}」
🧠 知識庫:{總條目數} 條經驗 | 📄 dev-mem.md
若對話輪次 ≤ 2 或上下文描述較簡短,6 維度中部分欄位可能標了
?(如根本原因不明確)。如需補全,說「完善一下剛存的那條」即可。低置信標註(僅在異常時出現):當上下文資訊不完整(如只看到結論未看到完整排查過程),在 Step 3 末尾追加一行:
⚠️ 上下文不完整,以下欄位基於推斷,建議核對:{欄位名列表}高置信時不顯示任何置信度資訊,避免多餘噪音。這個技能的最新版本可以在7w4.net小蔥技能站找到。
觸發:使用者說「完善一下」「補一下剛存的」「剛存的那條加上...」等。
Step 1:確認目標條目——預設為本次會話最近寫入的條目 ID;若無法確認,引導使用者兩種方式指定: - 直接說 ID:「EXP-CODE-202604-003」 - 說關鍵詞:「上週那條 Redis 連線超時的」→ 先執行工作流C檢索找到條目,再進入補全流程
Step 2:讀取該條目當前內容,列出所有標 ? 或留空的欄位:
📝 EXP-XXX「標題」有以下欄位待補全:
- 根本原因:?
- 排查鏈路:(空)
你可以直接描述,我來填入。
Step 3:使用者補充描述後,AI 提煉並更新對應欄位,覆蓋寫入知識庫,告知結果:
✅ 已更新 → EXP-XXX「標題」(補全了 N 個欄位)
Step 1:掃描完整解決過程,識別每個「問題節點」和「解決節點」,標記無效嘗試。
Step 2:對每個問題節點,按 6 維度提煉。
Step 3:生成預覽供確認:
📋 解決過程提煉(共 N 個問題)
① [ENV] 「標題」
現象 / 根本原因 / 修復方案 / 教訓(一行摘要)
⚠️ 曾嘗試但無效:{描述}
---
全部存入?(說「確認」,或「去掉第X條」)
Step 4:使用者確認後批次寫入,每條獨立 ID。
適用於同一表象可能由多個根因引發(多因一果)。
Step 1:提取表象描述(一句話)
Step 2:整理所有可能根因,每個根因對應快速驗證方式 + 解法
Step 3:按命中頻率/排查優先順序排序,生成預覽:
🌳 診斷樹預覽
表象:{描述}
| 優先順序 | 可能原因 | 快速驗證 | 解法 |
|---|---|---|---|
| 1 | ... | ... | ... |
存入診斷樹?(說「確認」)
💡 關於優先順序:初始優先順序由你來定(上面表格裡從高到低排就行)。每次命中某個原因後會自動上移排序,積累多次後會越來越反映實際頻率——首次存入效果有限,多用才會準。
Step 4:寫入知識庫,ID 字首 EXP-DT-{YYYYMM}-{序號}
Step 5:檢索命中診斷樹時,輸出完整排查路徑表,詢問「這次是哪個原因?」,確認後追加命中記錄並將該原因上移排序。
觸發判斷:@emem 訊息中含「要做/準備做/打算/開始做/我想實現」等前置意圖詞。
⚠️ 觸發限制:預檢僅在
@emem+ 前置意圖詞時觸發。純自然語言說「我要做個登入功能」不觸發預檢(因為無 @emem 無法區分是隨口一說還是真正需要預檢)。引導使用者習慣:做新功能前加@emem字首可獲得歷史坑提示。
Step 1:提取需求關鍵詞(技術棧 + 功能型別 + 整合點)
Step 2:模糊匹配檢索知識庫,標註相關度: - ✅ 高度匹配:技術棧 AND 功能型別同時命中 - ⚠️ 場景相近:功能相同但技術棧不同,或反之 - 🔍 部分相關:只有某個技術點/風險點相似
Step 3:根據命中數量分三檔處理:
| 命中數 | 處理 |
|---|---|
| ≥ 2 條 | 在回覆最前面插入預檢區塊(見下方格式) |
| 1 條 | 僅插入一行輕提示:📎 發現 1 條可能相關經驗:EXP-XXX「標題」,供參考 |
| 0 條 | 輸出一行說明:📭 知識庫暫無匹配歷史經驗(當前 {N} 條)。這次解決後說「存」,下次預檢會更準。 |
⚠️ 預檢能力說明:預檢精度取決於知識庫積累量,條目越多命中越準;知識庫較少時可能漏匹配或無命中,不代表沒有風險,僅代表暫無歷史記錄。
📚 發現 N 條相關歷史經驗,供參考(場景不完全相同,請按需參考)
① ✅ EXP-XXX「標題」→ {一句話:核心風險}
② ⚠️ EXP-XXX「標題」→ {一句話:場景差異 + 注意點}
---
(下面正常回答需求)
Step 1:讀取知識庫;不存在或為空 → 「暫無相關經驗記錄。這次解決後說『存』,我幫你提煉成結構化條目,下次遇到同類問題直接命中。」
若知識庫有內容但未命中當前查詢 → 「沒找到直接匹配的經驗。如果這次你解決了,說『存』記下來,下次就有了。」
Step 2:語義匹配,返回最相關 1-3 條(命中診斷樹時輸出完整排查路徑表)
相關度分級輸出: - 高相關(技術棧 + 問題型別均命中)→ 直接展示完整條目 - 低相關(只有部分技術點匹配)→ 附註說明「相關度較低,場景不完全相同,供參考」,不隱藏但要降級展示 - 無命中 → 「沒找到直接匹配的經驗。如果這次你解決了,說『存』記下來,下次就有了。」
Step 3:輸出:
📚 找到 N 條相關經驗
**EXP-XXX · 標題**({分類} | {日期})
- 觸發場景:...
- 解決方案:...
- 預防措施:...
觸發條件:使用者說「好像之前遇到過」「依稀記得」,或直接貼報錯資訊。
Step 1:提取探測線索(技術方向、問題現象、報錯關鍵詞)
Step 2:寬鬆匹配,命中任意線索即納入候選(上限 5 條)
Step 3:輸出候選列表附匹配理由,問「是這幾條裡的某一條嗎?」
Step 4:使用者確認後展開完整條目詳情
與工作流G的區分:工作流D側重批次提取+存入,適合會話結束時整體沉澱;工作流G側重結構化復盤分析+自動補全遺漏,適合主動回顧。觸發詞「整理今天的」→ 工作流D;「幫我復盤」→ 工作流G。
掃描會話上下文 → 生成草稿 → 展示供確認 → 使用者說「確認」後批次寫入:
⚠️ 注意「今日」的實際含義:工作流D掃描的是當前上下文視窗,不是今天所有會話。跨會話早期對話內容無法獲取。最佳實踐是每次會話結束前各自沉澱,而不是一天結束後再做彙總。
📝 今日沉澱草稿(共 N 條)
⚠️ 掃描範圍:當前上下文視窗(跨會話內容無法獲取)
① [CODE] 「標題」 核心內容一句話摘要
② [PROMPT] 「標題」 核心內容一句話摘要
全部存入?(說「確認」或「去掉第X條」)
⚠️ 只能掃描當前上下文視窗。長會話舊內容滾出後無法獲取,這是平臺機制限制。最可靠方式:問題解決後立即說「存」。 與工作流D的區分:工作流G是主動復盤,會做結構化分析、識別遺漏、自動補全——不是簡單列清單,而是真正檢查有沒有漏掉的。
Step 1:掃描當前上下文——優先讀取本次會話的錨點記錄(使用者說過「mark」的節點),再補掃未標記內容
有錨點時:優先按錨點整理,補掃作為兜底 無錨點時:全量掃描,準確率取決於上下文視窗完整度
Step 2:識別所有問題事件(報錯/多輪除錯/「搞定了」等)+ 實現記錄(新增功能、值得複用的設計)
Step 3:對每個問題事件按 6 維度提煉,過濾無沉澱價值內容
Step 4:主動核對已存檔條目——讀取知識庫,通過以下方式判斷「已存」: - 知識庫中有條目的錄入時間與本會話日期相同,且問題描述與當前會話問題高度吻合(技術棧+現象雙匹配) - 僅滿足其一不算「已存」——避免把無關的同類歷史條目誤判為已歸檔
判斷結果: - 已存的:標註「已歸檔 ✅」,跳過 - 未存的:自動納入復盤草稿,不等使用者提示
Step 5:生成復盤草稿:
📋 本次會話復盤
【實現記錄】
· {完成的功能/改動}
【問題經驗】(共 N 條)
① [ENV] 「標題」✅ 已歸檔(EXP-XXX)
② [CODE] 「標題」📌 已標記 · ⚠️ 未存檔 → 已納入草稿
③ [API] 「標題」⚠️ 未存檔 → 已納入草稿
【自動補全】(發現 N 條遺漏未存)
① [CODE] 「標題」📌(mark過)
現象 / 根本原因 / 修復方案 / 教訓
② [API] 「標題」⚠️(上下文不完整,根本原因基於推斷,建議核對)
現象 / 根本原因? / 修復方案 / 教訓
【跳過】
· {通用基礎知識,跳過原因}
---
說「全存」批次寫入遺漏條目,或「存第1條」單獨存入
如果所有問題均已存檔,輸出:「✅ 本次會話所有經驗已全部歸檔,無遺漏。」
兩種模式: - 無專案名 → 全庫統計 - 有專案名(如「查 proj-cloud 的統計」)→ 專案維度統計
僅統計含 **專案**:{專案名} 欄位且值匹配的條目,輸出格式見 references/knowledge-base-guide.md。
執行前必須告知使用者以下限制(一行,不可省略):
⚠️ 專案統計僅覆蓋錄入時填寫了「專案」欄位的條目。早期錄入的條目若未填專案名,不會出現在統計中。
專案名匹配規則:大小寫不敏感,支援部分匹配(如「cloud」可匹配「proj-cloud」)。
無匹配條目時:告知使用者「暫無 {專案名} 的條目,可能是歷史條目未填專案欄位」,並提示可用工作流I重整時補填。
📊 dev-mem 知識庫統計
| 分類 | 條數 | 最近錄入 |
|------|------|---------|
| 🤖 PROMPT | N | YYYY-MM-DD |
| 💻 CODE | N | YYYY-MM-DD |
| 🔧 ENV | N | YYYY-MM-DD |
| 🔗 API | N | YYYY-MM-DD |
| 📦 PKG | N | YYYY-MM-DD |
| 🚀 DEPLOY | N | YYYY-MM-DD |
| 🎯 DESIGN | N | YYYY-MM-DD |
| 🌳 診斷樹 DT | N | YYYY-MM-DD |
合計:N 條 | 最後更新:YYYY-MM-DD
📁 dev-mem.md
⚠️ 說明:「最近 5 條」是按錄入時間倒序,不是按「最近解決的問題」排序。如果你剛做了一次今日沉澱批次寫入,最近幾條會全是那次的內容。若想查特定問題,說「查 XXX」用檢索更準。
📋 最近 5 條經驗(按錄入時間倒序)
① EXP-CODE-202604-003「標題」(2026-04-03)
② EXP-ENV-202604-002「標題」(2026-04-02)
...
共 N 條 | 說「查 XXX」可以檢索具體內容
輸出當前版本號 + 更新日誌(見 references/changelog.md),並引導升級:
📦 dev-mem 當前版本:v2.4
(更新日誌內容來自 references/changelog.md)
🔄 升級方式:在 CodeBuddy / Cursor 的 Skill 管理面板中重新匯入最新 zip。
升級後知識庫檔案完整保留,資料不丟失。
📁 知識庫路徑:{實際路徑}/dev-mem.md
適用場景:手動編輯後格式混亂、舊版遷移、統計數字錯誤。
Step 1:診斷,掃描以下問題並輸出報告:
| 檢測項 | 正常狀態 |
|---|---|
| 檔案頭 | # dev-mem · 開發經驗知識庫 + 最後更新 + 總條目數 |
| 統計概覽表 | 7 個分類各有一行,數字與實際條目數一致 |
| 分類區塊 | 7 個標準二級標題按序出現 |
| 條目格式 | ### EXP-{TYPE}-{YYYYMM}-{NNN} · {標題} |
| 分隔線 | 每條條目末尾有 --- |
| 條目歸屬 | 每條在對應分類區塊下 |
🔍 知識庫診斷報告
實際條目數:{N} 條
發現問題:
① 檔案頭顯示 {X} 條,實際 {N} 條 → 需修正
② ...
執行修復?(說「修復」)
Step 2:修復(使用者確認後執行)
必修:補全檔案頭、補全缺失分類區塊、修正統計數字、補全條目末尾分隔線、糾正條目錯放分類。
可選(需使用者說「順便升級格式」才執行):舊版格式條目升級為 6 維度模板。
可選(需使用者說「順便補填專案名」才執行):批次補填專案欄位——掃描所有缺少 **專案** 欄位的條目,按知識庫目錄名推斷專案名(遵循 Step 1.5 優先順序規則),一次性展示擬填清單供確認:
📝 發現 N 條條目缺少專案欄位,擬補填為「{專案名}」:
① EXP-XXX「標題」
② EXP-XXX「標題」
...
確認填入?(說「確認」,或「跳過」)
確認後批次寫入,告知補填條數。
Step 3:輸出修復結果,說明修了哪些項。
⚠️ 只修格式,不改條目內容;涉及大範圍結構調整時提醒使用者先備份。
觸發:「@emem 備份」或「備份知識庫」
執行步驟和輸出格式見 references/knowledge-base-guide.md(備份規範章節)。
知識庫不存在,或使用者問「怎麼用」時:
👋 我是 dev-mem,幫你把每次踩坑變成永久資產
兩件事就夠了:
· 問題解決後說「存」→ 我幫你記下來
· 寫新功能前說「@emem 我要做 XXX」→ 我提前告訴你歷史有沒有坑
(加「我要做」三個字觸發預檢,光說 @emem 我會問你想幹嘛)
長會話時隨手說「mark」→ 我靜默標記當前節點,復盤時優先整理標記過的內容,不怕遺漏。
其他場景(檢索/整理/統計/復盤)直接自然語言說就行。
📁 知識庫檔案:dev-mem.md(自動建立在當前專案/工作區根目錄)
| 檔案 | 內容 | 何時讀取 |
|---|---|---|
references/categories.md |
7 大分類定義、快速判斷規則、優先順序 | 分類判斷時 |
references/templates.md |
各分類條目模板、輸出模板 | 寫入知識庫時 |
references/knowledge-base-guide.md |
知識庫檔案格式、追加規則、序號生成、備份規範、專案維度統計 | 檔案讀寫/備份/專案統計時 |
references/changelog.md |
版本更新日誌 | 工作流H時 |
references/pitfalls.md |
常見觸發陷阱、已知邊界問題 | 行為異常時參考 |
references/eval-guide.md |
10條標準評測用例、評分標準、失敗標誌 | 評測驗收時 |
完整版見
references/pitfalls.md
~/.dev-mem/;不要硬編碼路徑這個 Skill 整體質量不錯,功能設計考慮了很多實際使用場景,觸發機制比較智慧,能自動識別使用者的錄入意圖,分類體系清晰。文件和模板都很完善,對新手友好,長期積累後檢索效果會越來越準。美中不足的是功能比較複雜,新手需要花點時間才能上手,而且部分功能的觸發條件比較嚴格,偶有識別不準的情況。總體而言,是一個實用且有成長性的經驗管理工具,值得嘗試。