chore: 合併 develop 至 master(master 落後 13 個提交) #5

Merged
admin merged 13 commits from develop into master 2026-09-07 06:44:29 +00:00
Showing only changes of commit 5e9bd86bbc - Show all commits
+66
View File
@@ -0,0 +1,66 @@
[
{
"level": "warning",
"role": "Assassin",
"location": "action.yml:14",
"problem": "AI 模型參數(`model`)為使用者輸入但未驗證。攻擊者可透過 PR workflow 傳入任意字符串,縱然後續經 JSON 序列化理論上應轉義,仍增加了攻擊面且難以追蹤輸入來源。",
"suggestion": "在 action.yml 中對 `model` 輸入進行描述性限制(說明只接受特定格式),並在 src/config.js 的 `getLLMConfig()` 加上白名單驗證或正則表達式檢查,拒絕包含特殊字符的模型名稱(如單引號、反斜線、括號等)。例:`/^[a-zA-Z0-9._-]+$/`。",
"is_new": true
},
{
"level": "warning",
"role": "Bard",
"location": "entrypoint.sh:2",
"problem": "進入點腳本一開頭就塞入固定更新時間與裝飾性框線,資訊價值很低,卻會讓每次重生產都留下無意義的 diff 雜訊。",
"suggestion": "移除這種會過期的時間戳註解,只保留真正需要提醒讀者的簡短說明即可。",
"is_new": true
},
{
"level": "warning",
"role": "Bard",
"location": "readme.md:3",
"problem": "這份 README 已經長成機械化的 API 編目,還把時間戳與大量硬編碼連結一起寫進來,讓主文件變得又厚又脆,讀者很難快速抓到重點。",
"suggestion": "把 README 收斂成專案摘要、安裝方式與使用入口;細部 API 文件另放獨立文件或改成可生成的 docs,避免主文件膨脹成資料堆。",
"is_new": true
},
{
"level": "warning",
"role": "Bard",
"location": "src/comments.js:235",
"problem": "`postFindingsReview` 這段 JSDoc 太像流程筆記,不像 API 說明。`@param`、`@remarks`、`使用情境` 與多層降級敘事一路堆疊,重點被枝節埋掉,閱讀節奏很不乾淨。",
"suggestion": "把註解壓縮回最必要的契約說明:用途、參數、回傳與例外即可;降級順序和測試注入細節留給實作內的短註解。",
"is_new": true
},
{
"level": "warning",
"role": "Bard",
"location": "src/findings.js:413",
"problem": "`resolveMissingLineNumbers` 的註解把行為、邊界條件、併發設定與人工備註全揉成一段,語氣也從說明一路滑到審查心得,讀起來有點散、有點吵。",
"suggestion": "把說明拆短,保留輸入、輸出與副作用三件事即可;如果某些設計值得提醒,也應縮成一句附註,不要塞進主體敘述。",
"is_new": true
},
{
"level": "warning",
"role": "Bard",
"location": "src/main.js:59",
"problem": "這段註解直接寫出『目前程式碼中有 3 個 exit 1 呼叫點』,把瞬時的實作現況硬塞進長期註解,過幾次重構就會先壞掉,徒增維護負擔。",
"suggestion": "刪掉這種會隨流程變動而失真的數量型描述;若真要提醒收尾差異,改成更穩定的概念性說明即可。",
"is_new": true
},
{
"level": "info",
"role": "Assassin",
"location": "src/llm.js:173",
"problem": "HTTP request body 中的 `model` 欄位現在允許為 null(由上游 `getLLMConfig()` 傳入),導致該欄位的存在性由輸入決定。若 API 伺服器對缺少 `model` 欄位與 `model: null` 的處理邏輯不同,可能產生非預期的行為切換(例如自動選擇與使用者預期模型不符的模型版本)。",
"suggestion": "在 src/llm.js 的 `runProxyAPI()` 中明確文檔化 `model: null` 時的 API 行為,或在構造 body 前透過 `getLLMConfig()` 的驗證確保 model 值的一致性。若允許自動選擇,應於 log 與回應中清楚標示使用了自動選擇(目前已在 main.js 中以 `modelLabel` 處理,但建議同步至 API 層確認)。",
"is_new": true
},
{
"level": "info",
"role": "Bard",
"location": "src/log.js:8",
"problem": "這裡用 `en-CA` 來拼台灣時區時間字串,技法不算錯,但對讀者很不直觀。看到 `Asia/Taipei` 卻搭配 `en-CA`,第一眼會先懷疑這是不是某種繞路寫法。",
"suggestion": "改用更直白的格式化方式,例如手動補零組字串,或至少把這個 locale 選擇的用意明講,讓 helper 的意圖一眼可懂。",
"is_new": true
}
]