優化 Step2:改用 skill RPG 攻防腳色系統(新增 Mage 邏輯角色、Step3/4 套 Paladin 裁決人設) #14
Reference in New Issue
Block a user
Delete Branch "feat/optimize-step2"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
變更摘要
將 AI Code Review 的 Step2 攻防腳色,由原本 5 個功能型審查員(Aria/Rex/Zara/Leo/Maya,定義於
.yaml)改為以 skillcode-review的 RPG 攻防腳色為主(定義於.md,含side/focus/badge/color/personality+ 審查重點本文)。影響範圍
role欄位值改為新腳色名,且一律以腳色定義的name為準(不再信任 LLM 自填)。重點檔案/模組
app/roles.js:載入器由讀.yaml改為讀.md(frontmatter + 本文);新增parseRoleFile/loadRole/buildAnalysisPrompt,loadRoles只回傳攻擊方。app/findings.js:analyzeWithRole改用組裝後的 prompt 並鎖定role名;Step3/4 prompt 套上 Paladin 人設。app/prompts/roles/:新增 7 個.md(bard/mage/rogue/assassin/leo/maya/paladin),刪除 5 個舊.yaml。app/roles.test.js:新增腳色載入器測試(8 例)。app/comments.test.js:補postNewCriticalComments的空陣列與「多筆 critical 混合降級」測試(2 例)。.gitea/ai-review/exclusions.json:舊腳色名遷移;findings.json:清空為[]。風險/注意事項
exclusions.json既有以舊 role 名鎖定的排除條目已同步遷移(Aria→Bard、Rex→Assassin、Zara→Rogue),避免排除失效導致舊誤報再現。COPY app/已涵蓋新.md腳色檔,無需額外調整。🤖 AI Code Review 團隊
🔍 新發現問題(2 筆)
buildAnalysisPrompt函式中,role.focus屬性被直接用於字串模板。若角色定義檔中缺少focus欄位,此處將會顯示為負責「undefined」面向,導致生成的提示語義不完整。建議在引用前檢查role.focus是否存在,或提供一個預設值,例如:`負責「${role.focusgetRoleIntro函式中,r.focus和r.personality屬性被直接用於生成 Markdown 表格。若角色定義檔中缺少這些欄位,表格中將會顯示undefined,影響可讀性與呈現品質。建議在引用前檢查這些屬性是否存在,並提供一個空字串或預設值,例如:`@@ -13,0 +27,4 @@/*** 載入攻擊方角色(Step2 產生 findings 用),依檔名排序。* 防守方(如 Paladin)不在此列,裁決邏輯由去重/誤報過濾流程承擔。*/等級:🔴 嚴重
審查員:Mage
建議:在
parseRoleFile函式中,yaml.load(match[1])若遇到格式錯誤的 YAML 內容,會拋出未捕捉的例外,導致應用程式崩潰。應加入try-catch區塊來處理此潛在錯誤,確保即使角色定義檔有誤,系統也能穩定運行,例如回傳一個錯誤物件或記錄錯誤並跳過該檔案。@@ -13,0 +27,4 @@/*** 載入攻擊方角色(Step2 產生 findings 用),依檔名排序。* 防守方(如 Paladin)不在此列,裁決邏輯由去重/誤報過濾流程承擔。*/等級:🔴 嚴重
審查員:Rogue
建議:「loadRole」函式每次被呼叫時,都會重新讀取並解析所有角色檔案。這會造成不必要的同步檔案 I/O 與 CPU 浪費,尤其當此函式被頻繁呼叫時,會嚴重阻塞事件迴圈。建議將「readRoleFiles()」的結果快取起來,讓「loadRole」直接從記憶體中查詢,避免重複讀取磁碟。
🤖 AI Code Review 團隊
🔍 新發現問題(1 筆)
/嚴重問題/,就像樂譜中突然出現的無標記音符,雖能理解,卻少了點優雅與明確。建議將此字串提取為一個具名常數,或至少賦予一個描述性變數,以提升可讀性與未來維護的便利性,讓意圖更加清晰。