修正 Codex Action 重複輸出最後回答 #3
+4
-9
@@ -215,8 +215,6 @@ function runCodex(model, prompt) {
|
|||||||
output.append(Buffer.from(`Codex execution timed out after ${timeoutMs} ms.\n`));
|
output.append(Buffer.from(`Codex execution timed out after ${timeoutMs} ms.\n`));
|
||||||
}, timeoutMs);
|
}, timeoutMs);
|
||||||
|
|
||||||
child.stderr.pipe(process.stdout);
|
|
||||||
|
|
||||||
child.stdout.on("data", (chunk) => {
|
child.stdout.on("data", (chunk) => {
|
||||||
output.append(chunk);
|
output.append(chunk);
|
||||||
});
|
});
|
||||||
@@ -239,14 +237,11 @@ function runCodex(model, prompt) {
|
|||||||
output.append(Buffer.from(`Codex process terminated by signal ${signal}.\n`));
|
output.append(Buffer.from(`Codex process terminated by signal ${signal}.\n`));
|
||||||
}
|
}
|
||||||
|
|
||||||
let lastMessage = "";
|
const lastMessage = fs.existsSync(lastMessageFile) ? fs.readFileSync(lastMessageFile, "utf8") : null;
|
||||||
try {
|
const diagnosticOutput = output.toString();
|
||||||
|
|
|||||||
lastMessage = fs.readFileSync(lastMessageFile, "utf8");
|
const resultOutput = code === 0 && lastMessage !== null ? lastMessage : diagnosticOutput || lastMessage || "";
|
||||||
} catch {
|
|
||||||
lastMessage = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve({ status: code ?? 1, output: lastMessage || output.toString() });
|
resolve({ status: code ?? 1, output: resultOutput });
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -70,7 +70,7 @@ while [ "$#" -gt 0 ]; do
|
|||||||
shift
|
shift
|
||||||
done
|
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"
|
printf '%s\n' 'final answer' > "$last_message_file"
|
||||||
SH
|
SH
|
||||||
chmod +x "$dir/codex"
|
chmod +x "$dir/codex"
|
||||||
|
|||||||
Reference in New Issue
Block a user
嚴重等級:🟡 警告
審查員:Bard
問題:
runCodex中resultOutput的計算邏輯過於緊湊且不易維護,且直接進行檔案同步讀取,若檔案過大可能阻塞 Node.js 事件循環。建議:建議拆解複雜的邏輯為獨立的輔助函數,並改用非同步的檔案讀取方式。