開發者:持續問題追蹤
觸發時機
在每個重要的編碼迭代結束時執行,或是當使用者明確要求時執行。不要在任務中途執行——請等待一個自然的暫停點。
此技能在會話開始時預設載入。它是安全且無破壞性的:只會寫入 knowledge/issues/open/ 和 knowledge/issues/INDEX.md。
演算法
第一階段——掃描當前對話
回顧當前對話,尋找以下類型的信號:
| 信號 | 範例 | 優先級 |
|---|---|---|
| 已修正的錯誤 | "PowerShell 將 {{ }} 解讀錯誤"、"ngx-translate v18 沒有 forRoot()" | 高 |
| API 發現 | "linkedSignal 需要 Node ≥22"、"provideZonelessChangeDetection() 在 Angular 22 中已穩定" | 高 |
| 找到的解決方案 | "使用 create_file 而非 Set-Content 來處理模板" | 中 |
| 重複模式 | 同一錯誤在本次會話中出現 2 次以上 | 高 |
| 專案特性 | "這個 monorepo 使用 npm workspaces"、".gitignore 排除了 .github/" | 中 |
| 工具限制 | "Copilot 不直接暴露 usage.prompt_tokens" | 低 |
| 使用者偏好 | "偏好使用 ; 而非 && 分隔指令" | 中 |
第二階段——與問題註冊表交叉比對
- 讀取
knowledge/issues/INDEX.md——取得所有現有問題的 ID、標題、分類 - 對於第一階段的每個信號,嘗試與現有問題進行匹配:
- 透過關鍵字重疊(標題 + 描述)進行匹配
- 透過分類 + 相似的錯誤模式進行匹配
- 使用
grep_search在knowledge/issues/open/中搜尋相關內容
第三階段——建立或更新問題
新問題(找不到匹配)
產生 ID:ISSUE-YYYYMMDD-XXXX 其中 XXXX = UUID 的前 4 個十六進位字元
PowerShell: [guid]::NewGuid().ToString().Substring(0, 4)
範例: ISSUE-20260624-a1b2
使用 TEMPLATE.md 建立 knowledge/issues/open/ISSUE-YYYYMMDD-XXXX.md
設定 occurrences=1、certainty=low、status=open
將 created_by 設定為 "developer"(或當前的代理識別碼)
在 INDEX.md → 開放問題表格中插入新的一行
如果您有工作階段的 token 資料,可選擇性將其加到「證據」區段
ID 是基於 UUID 的——無需先讀取 INDEX.md。多位開發者同時工作時,衝突風險為零。
更新現有問題(找到匹配)
將 occurrences 增加 1
將 last_seen 更新為今天的日期
將當前工作階段資訊附加到 sessions 陣列
重新評估確定性:
- 1 次出現 → low
- 2 次出現 → medium
- 3 次以上出現 → high
使用 replace_string_in_file 更新 open/ 中的問題檔案
更新 INDEX.md 中的計數與行資料
INDEX.md 合併衝突
如果兩位開發者同時在 INDEX.md 中新增行,Git 合併衝突會發生在表格主體。解決方式:保留兩個分支中的所有行;重新計算目錄數量以更新摘要數字。
報告
輸出一個摘要表格:
## 開發者報告——YYYY-MM-DD
| 動作 | ID | 標題 | 分類 | 詳細資訊 |
|--------|----|-------|----------|--------|
| 🆕 新增 | ISSUE-001 | ... | ... | 已在 open/ 中建立 |
| 📈 更新 | ISSUE-002 | ... | ... | 1→2 次出現,確定性 low→medium |
重要規則
-
絕對不要推廣問題。 推廣是
ai-engineer技能的責任。您的唯一輸出是open/中的問題檔案以及對INDEX.md的更新。 -
絕對不要修改技能或記憶檔案。 您對
.github/skills/和/memories/是唯讀的觀察者。請不要觸碰它們。 -
絕對不要為模型已經知道的事情建立問題——如果是常識(例如「使用
const而非var」),請直接跳過。 -
保持問題檔案簡潔——TEMPLATE.md 格式是上限,而非下限。不要寫長篇大論。
-
工作階段隔離——frontmatter 中的
sessions陣列儲存工作階段的 UUID。如果可用,請使用session_store_sql來尋找當前工作階段的 UUID,否則使用基於日期的識別碼。 -
務必填寫
created_by——將其設定為代理名稱或工作階段識別碼,以便ai-engineer在審查時能夠追溯問題的來源。
交接給 AI 工程師
當問題達到 certainty: high(3 次以上出現)時,ai-engineer 技能負責推廣。developer 技能不決定要推廣什麼或推到哪裡——它只記錄信號強度。當使用者要求整理知識、清理問題或推廣模式時,請以子代理的身分執行 ai-engineer 技能。
檔案路徑參考
| 資源 | 路徑 |
|---|---|
| 問題註冊索引 | knowledge/issues/INDEX.md |
| 問題模板 | knowledge/issues/TEMPLATE.md |
| 開放問題 | knowledge/issues/open/ISSUE-XXX.md |
| 已推廣問題 | knowledge/issues/promoted/ISSUE-XXX.md |
| 已拋棄問題 | knowledge/issues/discarded/ISSUE-XXX.md |