修正 Codex Action 重複輸出最後回答 #3

Merged
jiantw83 merged 5 commits from ai-review-resolve/20260624102518 into develop 2026-06-24 14:30:13 +00:00
2 changed files with 5 additions and 10 deletions
Showing only changes of commit ab56c56206 - Show all commits
+4 -9
View File
1
@@ -215,8 +215,6 @@ function runCodex(model, prompt) {
output.append(Buffer.from(`Codex execution timed out after ${timeoutMs} ms.\n`));
}, timeoutMs);
child.stderr.pipe(process.stdout);
child.stdout.on("data", (chunk) => {
output.append(chunk);
});
@@ -239,14 +237,11 @@ function runCodex(model, prompt) {
output.append(Buffer.from(`Codex process terminated by signal ${signal}.\n`));
}
let lastMessage = "";
try {
lastMessage = fs.readFileSync(lastMessageFile, "utf8");
} catch {
lastMessage = "";
}
const lastMessage = fs.existsSync(lastMessageFile) ? fs.readFileSync(lastMessageFile, "utf8") : null;
const diagnosticOutput = output.toString();
Review

嚴重等級🟡 警告
審查員:Bard
問題runCodexresultOutput 的計算邏輯過於緊湊且不易維護,且直接進行檔案同步讀取,若檔案過大可能阻塞 Node.js 事件循環。
建議:建議拆解複雜的邏輯為獨立的輔助函數,並改用非同步的檔案讀取方式。

**嚴重等級**:🟡 警告 **審查員**:Bard **問題**:`runCodex` 中 `resultOutput` 的計算邏輯過於緊湊且不易維護,且直接進行檔案同步讀取,若檔案過大可能阻塞 Node.js 事件循環。 **建議**:建議拆解複雜的邏輯為獨立的輔助函數,並改用非同步的檔案讀取方式。
const resultOutput = code === 0 && lastMessage !== null ? lastMessage : diagnosticOutput || lastMessage || "";
resolve({ status: code ?? 1, output: lastMessage || output.toString() });
resolve({ status: code ?? 1, output: resultOutput });
});
Ghost marked this conversation as resolved Outdated
Outdated
Review

嚴重等級🟡 警告
審查員:Bard
問題:在 runCodex 函式中,對 lastMessageFile 的讀取缺乏明確的錯誤處理策略,直接將錯誤靜默處理並初始化為空字串,可能掩蓋真正的檔案系統問題,且導致邏輯錯誤。
建議:建議在 catch 區塊中至少加入簡單的日誌記錄(如 console.error),並明確區分錯誤類型(如檔案不存在 vs 權限問題),給予清晰的回饋。

**嚴重等級**:🟡 警告 **審查員**:Bard **問題**:在 `runCodex` 函式中,對 `lastMessageFile` 的讀取缺乏明確的錯誤處理策略,直接將錯誤靜默處理並初始化為空字串,可能掩蓋真正的檔案系統問題,且導致邏輯錯誤。 **建議**:建議在 `catch` 區塊中至少加入簡單的日誌記錄(如 `console.error`),並明確區分錯誤類型(如檔案不存在 vs 權限問題),給予清晰的回饋。
});
}
2
+1 -1
View File
@@ -70,7 +70,7 @@ while [ "$#" -gt 0 ]; do
shift
done
printf '%s\n' 'codex' 'final answer' 'tokens used' '123' 'final answer'
printf '%s\n' 'codex' 'final answer' 'tokens used' '123' 'final answer' >&2
printf '%s\n' 'final answer' > "$last_message_file"
SH
chmod +x "$dir/codex"