feat: 階段一 - 改用 Node.js 實作基本流程骨架

- Dockerfile: 改用 node:20-slim
- entrypoint.sh: 執行 app/main.js
- app/package.json: axios + js-yaml + openai
- app/config.js: 環境變數與 LLM 自動偵測(10 種服務)
- app/llm.js: OpenAI-compatible 統一介面
- app/gitea.js: PR diff 取得與 comment 發布
- app/roles.js: 從 prompts/roles/*.yaml 載入角色
- app/main.js: pipeline 骨架,log 每個主要階段
This commit is contained in:
2026-05-11 07:24:47 +00:00
parent 1324f1575d
commit ec1f6c96e7
14 changed files with 179 additions and 210 deletions
+20
View File
@@ -0,0 +1,20 @@
import fs from 'fs';
import path from 'path';
import yaml from 'js-yaml';
const ROLES_DIR = '/action/app/prompts/roles';
export function loadRoles() {
return fs.readdirSync(ROLES_DIR)
.filter(f => f.endsWith('.yaml'))
.sort()
.map(f => yaml.load(fs.readFileSync(path.join(ROLES_DIR, f), 'utf8')));
}
export function getRoleIntro(roles) {
const lines = ['## 🤖 AI Code Review 團隊', ''];
for (const r of roles) {
lines.push(`- **${r.name}** (${r.role})${r.personality}`);
}
return lines.join('\n');
}