feat(ai-code-review): 支援 Antigravity CLI
CI / Release Tag Version (pull_request) Successful in 4s
CI / AI Code Review (pull_request) Failing after 17s

This commit is contained in:
2026-06-27 13:47:44 +00:00
parent 5457e68065
commit 6f997083ef
8 changed files with 60 additions and 12 deletions
+7 -4
View File
@@ -23,13 +23,16 @@ function buildPrompt(systemPrompt, userContent) {
].join('\n');
}
function cliArgs(provider, model, promptFile = null) {
function cliArgs(provider, model, promptFile = null, prompt = null) {
if (provider === 'codex') {
return ['exec', '--model', model, '--sandbox', 'read-only', '--ask-for-approval', 'never', '--skip-git-repo-check', '-'];
}
if (provider === 'claude') {
return ['--print', '--model', model, '--permission-mode', 'dontAsk', '--no-session-persistence'];
}
if (provider === 'antigravity') {
return ['-p', prompt, '--model', model];
}
if (provider === 'opencode') {
return ['run', '--model', model, '--format', 'default', '--file', promptFile, '請依附件 prompt.md 的完整內容執行,並只輸出要求的最終結果。'];
}
@@ -50,7 +53,7 @@ async function runAssistantCLI({ provider, command, model }, prompt) {
promptFile = join(tempDir, 'prompt.md');
await writeFile(promptFile, prompt);
}
const args = cliArgs(provider, model, promptFile);
const args = cliArgs(provider, model, promptFile, prompt);
const maxBuffer = Number(process.env.AI_ASSISTANT_MAX_BUFFER || 20 * 1024 * 1024);
const timeout = Number(process.env.AI_ASSISTANT_TIMEOUT_MS || 15 * 60 * 1000);
try {
@@ -86,7 +89,7 @@ async function runAssistantCLI({ provider, command, model }, prompt) {
if (code === 0) resolve(stdout.trim());
else reject(Object.assign(new Error(`${provider} CLI exited with ${code ?? signal}`), { stdout, stderr }));
});
child.stdin.end(provider === 'opencode' ? '' : prompt);
child.stdin.end(provider === 'opencode' || provider === 'antigravity' ? '' : prompt);
});
} finally {
if (tempDir) await rm(tempDir, { recursive: true, force: true });
@@ -107,7 +110,7 @@ async function runAssistantCLI({ provider, command, model }, prompt) {
export async function chat(systemPrompt, userContent) {
const cfg = getLLMConfig();
const { provider, command, model } = cfg;
if (!provider || !command) throw new Error('未偵測到可用 AI 助理 CLI,請安裝 codex、claude 或 opencode');
if (!provider || !command) throw new Error('未偵測到可用 AI 助理 CLI,請安裝 codex、claude、antigravity 或 opencode');
line(`[LLM] provider=${provider} command=${command} model=${model}`);