From 9ff521955f540cfa31213b1f2f6d7a84331002a1 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 07:59:30 +0000 Subject: [PATCH 01/25] feat: add completion note to stage one in TODO --- TODO.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO.md b/TODO.md index 791a6a7..d0a4b23 100644 --- a/TODO.md +++ b/TODO.md @@ -3,6 +3,7 @@ ## 階段一:基本流程串接 - 目標:確保 action 可以被觸發,pipeline 各步驟依序執行,log 出每個主要階段的進入與完成。 - 驗收:log 中能看到每個階段(如「Step1: pipeline start」、「Step2: findings merge」等)明確訊息,且流程能走完(即使還沒產生 findings)。 +- 完成 ## 階段二:Findings 產生與合併 - 目標:各角色(style/security/performance/maintainability/testing)能產生 findings,並正確合併新舊 findings。 From 0fae1f383c7271aaded5473a3bf0be3a6e315621 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:03:19 +0000 Subject: [PATCH 02/25] feat: add cache cleaning step to code review workflow --- .gitea/workflows/review.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 18e356e..d27cc63 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -7,6 +7,8 @@ jobs: name: 'Code Review' runs-on: ubuntu steps: + - name: Clean Action Cache + run: rm -rf ~/.local/share/act/_actions/* - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@${{ github.head_ref }} with: From 597fcf1f73f8776d199e845215234e352a83d681 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:09:30 +0000 Subject: [PATCH 03/25] feat: refactor code review workflow to include version calculation step --- .gitea/workflows/review.yaml | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index d27cc63..6e8b509 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -3,12 +3,26 @@ on: pull_request: types: [opened, synchronize] jobs: + version: + name: 計算版本號 + runs-on: ubuntu + outputs: + version: ${{ steps.version.outputs.version }} + steps: + - name: 計算版本號 + id: version + uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }} + with: + IS_BETA: "true" code-review: - name: 'Code Review' + name: Code Review runs-on: ubuntu steps: - - name: Clean Action Cache - run: rm -rf ~/.local/share/act/_actions/* + - name: 標註版本號 + uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }} + with: + name: code-review v${{ steps.version.outputs.version }} + tag_name: v${{ steps.version.outputs.version }} - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@${{ github.head_ref }} with: From 88b326ba3c4e454a43dbd4eb1f89fc34e7ac05e4 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:12:12 +0000 Subject: [PATCH 04/25] feat: refactor version handling in code review workflow for consistency --- .gitea/workflows/review.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 6e8b509..fb4b769 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -13,18 +13,19 @@ jobs: id: version uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }} with: - IS_BETA: "true" + IS_BETA: true code-review: name: Code Review runs-on: ubuntu + needs: [version] steps: - name: 標註版本號 uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }} with: - name: code-review v${{ steps.version.outputs.version }} - tag_name: v${{ steps.version.outputs.version }} + name: code-review v${{ needs.version.outputs.version }} + tag_name: v${{ needs.version.outputs.version }} - name: AI Code Review - uses: https://gitea.jsc.idv.tw/jiantw83/code-review@${{ github.head_ref }} + uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_BASE_URL: https://api.openai.com/v1 From 3d9700ade70fe6fe1a7848ddc2db75adfd661c9f Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:13:13 +0000 Subject: [PATCH 05/25] feat: refactor version tagging step in review workflow for improved clarity --- .gitea/workflows/review.yaml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index fb4b769..c590e7b 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -14,16 +14,16 @@ jobs: uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }} with: IS_BETA: true + - name: 標註版本號 + uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }} + with: + name: code-review v${{ steps.version.outputs.version }} + tag_name: v${{ steps.version.outputs.version }} code-review: name: Code Review runs-on: ubuntu needs: [version] steps: - - name: 標註版本號 - uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }} - with: - name: code-review v${{ needs.version.outputs.version }} - tag_name: v${{ needs.version.outputs.version }} - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: From 8fbdaadca3e7c47f3aca2fa9e2d36fb479af30f5 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:14:41 +0000 Subject: [PATCH 06/25] feat: add target_commitish to version tagging step for improved accuracy --- .gitea/workflows/review.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index c590e7b..7f83b41 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -19,6 +19,7 @@ jobs: with: name: code-review v${{ steps.version.outputs.version }} tag_name: v${{ steps.version.outputs.version }} + target_commitish: ${{ github.head_ref }} code-review: name: Code Review runs-on: ubuntu From 06303f784a4d09e39b785f6fb66c2f2d63956c76 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:20:57 +0000 Subject: [PATCH 07/25] feat: update workflow configurations for version calculation and API integration --- .gitea/workflows/master.yaml | 7 ++++--- .gitea/workflows/review.yaml | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/master.yaml b/.gitea/workflows/master.yaml index b54c903..b37b091 100644 --- a/.gitea/workflows/master.yaml +++ b/.gitea/workflows/master.yaml @@ -1,10 +1,11 @@ +name: CD on: push: branches: - master jobs: version: - name: "CD > 計算版本號" + name: 計算版本號 runs-on: ubuntu outputs: version: ${{ steps.version.outputs.version }} @@ -13,14 +14,14 @@ jobs: id: version uses: https://gitea.jsc.idv.tw/actions/calculate-version@${{ vars.ACTION_CALCULATE_VERSION }} release: - name: "CD > 發布專案" + name: 發布專案 runs-on: ubuntu needs: version steps: - name: 發布專案 uses: akkuman/gitea-release-action@${{ vars.ACTION_RELEASE_VERSION }} with: - tag_name: "v${{ needs.version.outputs.version }}" + tag_name: v${{ needs.version.outputs.version }} - name: 清理成品 uses: https://gitea.jsc.idv.tw/actions/cleanup-release@${{ vars.ACTION_CLEANUP_RELEASE_VERSION }} with: diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 7f83b41..040c8c4 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -28,8 +28,9 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: + # 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 OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - OPENAI_BASE_URL: https://api.openai.com/v1 + OPENAI_BASE_URL: https://openrouter.ai/api/v1 permissions: contents: write pull-requests: write From a9163cdfda3e5bf79e71fd9a4b875eb0a8d33658 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:24:47 +0000 Subject: [PATCH 08/25] feat: update AI Code Review action inputs to use OLLAMA configuration and set default OpenAI base URL --- .gitea/workflows/review.yaml | 11 +++++------ action.yaml | 1 + 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 040c8c4..1b2e722 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -21,16 +21,15 @@ jobs: tag_name: v${{ steps.version.outputs.version }} target_commitish: ${{ github.head_ref }} code-review: - name: Code Review + name: 'Code Review' runs-on: ubuntu needs: [version] steps: - name: AI Code Review - uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} - with: - # 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 - OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - OPENAI_BASE_URL: https://openrouter.ai/api/v1 + uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} + with: + OLLAMA_BASE_URL: ${{ secrets.OLLAMA_BASE_URL }} + OLLAMA_MODEL: ${{ secrets.OLLAMA_MODEL }} permissions: contents: write pull-requests: write diff --git a/action.yaml b/action.yaml index 4e28a5c..ce0e7d2 100644 --- a/action.yaml +++ b/action.yaml @@ -29,6 +29,7 @@ inputs: OPENAI_BASE_URL: description: 'OpenAI-compatible Base URL' required: false + default: 'https://openrouter.ai/api/v1' OPENAI_MODEL: description: 'OpenAI-compatible Model Name' required: false From d20300eec7fa38fee11851a0c86eb2a73d9274ae Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:27:51 +0000 Subject: [PATCH 09/25] feat: format AI Code Review step for improved readability --- .gitea/workflows/review.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 1b2e722..1c43912 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -26,10 +26,10 @@ jobs: needs: [version] steps: - name: AI Code Review - uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} - with: - OLLAMA_BASE_URL: ${{ secrets.OLLAMA_BASE_URL }} - OLLAMA_MODEL: ${{ secrets.OLLAMA_MODEL }} + uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} + with: + OLLAMA_BASE_URL: ${{ secrets.OLLAMA_BASE_URL }} + OLLAMA_MODEL: ${{ secrets.OLLAMA_MODEL }} permissions: contents: write pull-requests: write From 0609e7fe7f511bf759b82b455dad4e0629386e80 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:29:59 +0000 Subject: [PATCH 10/25] feat: update OLLAMA configuration to use vars instead of secrets for improved flexibility --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 532c85c..e50cebb 100644 --- a/README.md +++ b/README.md @@ -262,8 +262,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@${{ vars.ACTION_CODE_REVIEW_VERSION }} with: - OLLAMA_BASE_URL: ${{ secrets.OLLAMA_BASE_URL }} - OLLAMA_MODEL: ${{ secrets.OLLAMA_MODEL }} + OLLAMA_BASE_URL: ${{ vars.OLLAMA_BASE_URL }} + OLLAMA_MODEL: ${{ vars.OLLAMA_MODEL }} permissions: contents: write pull-requests: write From 7b5decf46acafcdf0084c9e64c285a0e30426734 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:31:02 +0000 Subject: [PATCH 11/25] feat: update AI Code Review step to use vars instead of secrets for improved flexibility --- .gitea/workflows/review.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 1c43912..3a93fa5 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -28,8 +28,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: - OLLAMA_BASE_URL: ${{ secrets.OLLAMA_BASE_URL }} - OLLAMA_MODEL: ${{ secrets.OLLAMA_MODEL }} + OLLAMA_BASE_URL: ${{ vars.OLLAMA_BASE_URL }} + OLLAMA_MODEL: ${{ vars.OLLAMA_MODEL }} permissions: contents: write pull-requests: write From e183e31ce0a552a7f36a3ae0d1bbee6acb8f723c Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:34:04 +0000 Subject: [PATCH 12/25] =?UTF-8?q?fix:=20=E5=BF=BD=E7=95=A5=20SSL=20?= =?UTF-8?q?=E6=86=91=E8=AD=89=E9=A9=97=E8=AD=89=EF=BC=88=E6=94=AF=E6=8F=B4?= =?UTF-8?q?=E8=87=AA=E7=B0=BD=E6=86=91=E8=AD=89=E7=9A=84=20Ollama/Gitea?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/gitea.js | 6 ++++-- app/llm.js | 5 ++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/app/gitea.js b/app/gitea.js index 787f801..f8b4216 100644 --- a/app/gitea.js +++ b/app/gitea.js @@ -1,15 +1,17 @@ import axios from 'axios'; +import https from 'https'; import { GITEA_TOKEN, GITEA_SERVER_URL, GITEA_REPOSITORY, PR_NUMBER } from './config.js'; +const httpsAgent = new https.Agent({ rejectUnauthorized: false }); const headers = () => ({ Authorization: `token ${GITEA_TOKEN}`, 'Content-Type': 'application/json' }); const api = (path) => `${GITEA_SERVER_URL.replace(/\/$/, '')}/api/v1${path}`; export async function getPRDiff() { - const resp = await axios.get(api(`/repos/${GITEA_REPOSITORY}/pulls/${PR_NUMBER}.diff`), { headers: headers(), timeout: 60000 }); + const resp = await axios.get(api(`/repos/${GITEA_REPOSITORY}/pulls/${PR_NUMBER}.diff`), { headers: headers(), timeout: 60000, httpsAgent }); return resp.data; } export async function postComment(body) { - const resp = await axios.post(api(`/repos/${GITEA_REPOSITORY}/issues/${PR_NUMBER}/comments`), { body }, { headers: headers(), timeout: 30000 }); + const resp = await axios.post(api(`/repos/${GITEA_REPOSITORY}/issues/${PR_NUMBER}/comments`), { body }, { headers: headers(), timeout: 30000, httpsAgent }); return resp.data; } diff --git a/app/llm.js b/app/llm.js index f2521d3..db7217b 100644 --- a/app/llm.js +++ b/app/llm.js @@ -1,6 +1,9 @@ import axios from 'axios'; +import https from 'https'; import { getLLMConfig } from './config.js'; +const httpsAgent = new https.Agent({ rejectUnauthorized: false }); + export async function chat(systemPrompt, userContent) { const { provider, apiKey, baseURL, model } = getLLMConfig(); if (!provider) throw new Error('未設定任何 LLM API Key'); @@ -16,7 +19,7 @@ export async function chat(systemPrompt, userContent) { const resp = await axios.post( `${baseURL.replace(/\/$/, '')}/chat/completions`, { model, messages: [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }], temperature: 0.2 }, - { headers, timeout: 120000 } + { headers, timeout: 120000, httpsAgent } ); return resp.data.choices[0].message.content; } From bdf8d8a79712afaa50acaf4b152141a82271bc47 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:47:34 +0000 Subject: [PATCH 13/25] feat: update AI Code Review step to use OpenAI API key and base URL --- .gitea/workflows/review.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 3a93fa5..98a2d6b 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -28,8 +28,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: - OLLAMA_BASE_URL: ${{ vars.OLLAMA_BASE_URL }} - OLLAMA_MODEL: ${{ vars.OLLAMA_MODEL }} + OPENAI_API_KEY: ${{ secrets.HF_API_KEY }} + OPENAI_BASE_URL: https://api-inference.huggingface.co/v1 permissions: contents: write pull-requests: write From aca76f23afabbb42abc3dcb9233fb4f547c15359 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:53:03 +0000 Subject: [PATCH 14/25] feat: add OPENAI_MODEL parameter to AI Code Review step --- .gitea/workflows/review.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 98a2d6b..19960f2 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -30,6 +30,7 @@ jobs: with: OPENAI_API_KEY: ${{ secrets.HF_API_KEY }} OPENAI_BASE_URL: https://api-inference.huggingface.co/v1 + OPENAI_MODEL: deepseek-ai/DeepSeek-R1 permissions: contents: write pull-requests: write From 7ba2af338471f30c57de31184307f20d35b7a1e8 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:54:13 +0000 Subject: [PATCH 15/25] feat: update OPENAI_MODEL to use DeepSeek-R1-Distill-Qwen-32B for improved performance --- .gitea/workflows/review.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 19960f2..5cf890b 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -30,7 +30,7 @@ jobs: with: OPENAI_API_KEY: ${{ secrets.HF_API_KEY }} OPENAI_BASE_URL: https://api-inference.huggingface.co/v1 - OPENAI_MODEL: deepseek-ai/DeepSeek-R1 + OPENAI_MODEL: deepseek-ai/DeepSeek-R1-Distill-Qwen-32B permissions: contents: write pull-requests: write From 73c11129ab773aa404add94186fe01ca6650b8d7 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:55:53 +0000 Subject: [PATCH 16/25] feat: update AI Code Review step to use new OpenAI base URL and model --- .gitea/workflows/review.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 5cf890b..4d3a52a 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -29,8 +29,8 @@ jobs: uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: OPENAI_API_KEY: ${{ secrets.HF_API_KEY }} - OPENAI_BASE_URL: https://api-inference.huggingface.co/v1 - OPENAI_MODEL: deepseek-ai/DeepSeek-R1-Distill-Qwen-32B + OPENAI_BASE_URL: https://router.huggingface.co/novita/v1 + OPENAI_MODEL: deepseek-ai/DeepSeek-R1 permissions: contents: write pull-requests: write From 64b904dd07d8fa5cd872607c5ba0c54bc12168d9 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:56:48 +0000 Subject: [PATCH 17/25] =?UTF-8?q?fix:=20=E6=94=AF=E6=8F=B4=E4=B8=8D?= =?UTF-8?q?=E6=8E=A5=E5=8F=97=20system=20role=20=E7=9A=84=E6=A8=A1?= =?UTF-8?q?=E5=9E=8B=EF=BC=88DeepSeek-R1=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/llm.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/llm.js b/app/llm.js index db7217b..5dcd129 100644 --- a/app/llm.js +++ b/app/llm.js @@ -16,9 +16,16 @@ export async function chat(systemPrompt, userContent) { }; if (provider === 'claude') headers['anthropic-version'] = '2023-06-01'; + // 部分模型(如 DeepSeek-R1)不支援 system role,改合併到 user message + const NO_SYSTEM_ROLE_MODELS = ['deepseek-ai/deepseek-r1', 'deepseek-r1']; + const isNoSystemRole = NO_SYSTEM_ROLE_MODELS.some(m => model.toLowerCase().includes(m.toLowerCase())); + const messages = isNoSystemRole + ? [{ role: 'user', content: `${systemPrompt}\n\n${userContent}` }] + : [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }]; + const resp = await axios.post( `${baseURL.replace(/\/$/, '')}/chat/completions`, - { model, messages: [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }], temperature: 0.2 }, + { model, messages, temperature: 0.2 }, { headers, timeout: 120000, httpsAgent } ); return resp.data.choices[0].message.content; From 9a11d25c0027d6c44e44aa60691cfbd573dd9a22 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 08:58:59 +0000 Subject: [PATCH 18/25] =?UTF-8?q?revert:=20=E7=A7=BB=E9=99=A4=20DeepSeek-R?= =?UTF-8?q?1=20=E7=89=B9=E5=88=A5=E8=99=95=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/llm.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/app/llm.js b/app/llm.js index 5dcd129..db7217b 100644 --- a/app/llm.js +++ b/app/llm.js @@ -16,16 +16,9 @@ export async function chat(systemPrompt, userContent) { }; if (provider === 'claude') headers['anthropic-version'] = '2023-06-01'; - // 部分模型(如 DeepSeek-R1)不支援 system role,改合併到 user message - const NO_SYSTEM_ROLE_MODELS = ['deepseek-ai/deepseek-r1', 'deepseek-r1']; - const isNoSystemRole = NO_SYSTEM_ROLE_MODELS.some(m => model.toLowerCase().includes(m.toLowerCase())); - const messages = isNoSystemRole - ? [{ role: 'user', content: `${systemPrompt}\n\n${userContent}` }] - : [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }]; - const resp = await axios.post( `${baseURL.replace(/\/$/, '')}/chat/completions`, - { model, messages, temperature: 0.2 }, + { model, messages: [{ role: 'system', content: systemPrompt }, { role: 'user', content: userContent }], temperature: 0.2 }, { headers, timeout: 120000, httpsAgent } ); return resp.data.choices[0].message.content; From ed1f2bea15f23f20b6297ec81834fd308f26796a Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:03:03 +0000 Subject: [PATCH 19/25] feat: update AI Code Review step to use DeepSeek API and correct API key Co-authored-by: Copilot --- .gitea/workflows/review.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 4d3a52a..c839a4f 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -28,9 +28,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: - OPENAI_API_KEY: ${{ secrets.HF_API_KEY }} - OPENAI_BASE_URL: https://router.huggingface.co/novita/v1 - OPENAI_MODEL: deepseek-ai/DeepSeek-R1 + OPENAI_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} + OPENAI_BASE_URL: https://api.deepseek.com/v1 permissions: contents: write pull-requests: write From 6eae6eb0ce31c80840db382d9440b99b738b0583 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:07:21 +0000 Subject: [PATCH 20/25] feat: add OPENAI_MODEL parameter to AI Code Review step --- .gitea/workflows/review.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index c839a4f..56507d8 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -30,6 +30,7 @@ jobs: with: OPENAI_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} OPENAI_BASE_URL: https://api.deepseek.com/v1 + OPENAI_MODEL: deepseek-chat permissions: contents: write pull-requests: write From fb1254aa32bfc0f91fdcf27e254d6d9d028450db Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:10:20 +0000 Subject: [PATCH 21/25] feat: refactor AI Code Review step to use OLLAMA_BASE_URL and OLLAMA_MODEL Co-authored-by: Copilot --- .gitea/workflows/review.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 56507d8..3a93fa5 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -28,9 +28,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: - OPENAI_API_KEY: ${{ secrets.DEEPSEEK_API_KEY }} - OPENAI_BASE_URL: https://api.deepseek.com/v1 - OPENAI_MODEL: deepseek-chat + OLLAMA_BASE_URL: ${{ vars.OLLAMA_BASE_URL }} + OLLAMA_MODEL: ${{ vars.OLLAMA_MODEL }} permissions: contents: write pull-requests: write From 624a71836c34321ebee9ead821f9bcf9f5d386b7 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:31:01 +0000 Subject: [PATCH 22/25] feat: update AI Code Review step to use OpenAI API key and base URL --- .gitea/workflows/review.yaml | 4 ++-- README.md | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index 3a93fa5..deec2ca 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -28,8 +28,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: - OLLAMA_BASE_URL: ${{ vars.OLLAMA_BASE_URL }} - OLLAMA_MODEL: ${{ vars.OLLAMA_MODEL }} + OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} + OPENAI_BASE_URL: https://api.openai.com/v1 permissions: contents: write pull-requests: write diff --git a/README.md b/README.md index e50cebb..87c6cb1 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ jobs: - name: AI Code Review uses: https://gitea.jsc.idv.tw/jiantw83/code-review@${{ vars.ACTION_CODE_REVIEW_VERSION }} with: + # Github (h3285@evertrust.com.tw) + # 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 OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_BASE_URL: https://api.openai.com/v1 permissions: From 02529a4ec9f0215f0cc9d1949e98c9511958f025 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:34:43 +0000 Subject: [PATCH 23/25] feat: update OpenAI API key in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 87c6cb1..8094684 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ jobs: uses: https://gitea.jsc.idv.tw/jiantw83/code-review@${{ vars.ACTION_CODE_REVIEW_VERSION }} with: # Github (h3285@evertrust.com.tw) - # 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 + # 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 OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} OPENAI_BASE_URL: https://api.openai.com/v1 permissions: From 6ecb018ef43c9ae2879f75cc336d2ce52b4c1fc9 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:37:01 +0000 Subject: [PATCH 24/25] feat: update OpenAI base URL to use OpenRouter API --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8094684..e1c2026 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ jobs: # Github (h3285@evertrust.com.tw) # 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 OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - OPENAI_BASE_URL: https://api.openai.com/v1 + OPENAI_BASE_URL: https://openrouter.ai/api/v1 permissions: contents: write pull-requests: write From 5c5660a34b8a2a685cd965a049641b5e5a6737fa Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 11 May 2026 09:37:53 +0000 Subject: [PATCH 25/25] feat: update OpenAI base URL to use OpenRouter API --- .gitea/workflows/review.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitea/workflows/review.yaml b/.gitea/workflows/review.yaml index deec2ca..3a49860 100644 --- a/.gitea/workflows/review.yaml +++ b/.gitea/workflows/review.yaml @@ -29,7 +29,7 @@ jobs: uses: https://gitea.jsc.idv.tw/jiantw83/code-review@v${{ needs.version.outputs.version }} with: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} - OPENAI_BASE_URL: https://api.openai.com/v1 + OPENAI_BASE_URL: https://openrouter.ai/api/v1 permissions: contents: write pull-requests: write