1324f1575d
- 重寫 action.yaml:支援所有 LLM providers 的 inputs - 重寫 Dockerfile:python:3.11-slim + git - 重寫 entrypoint.sh:啟動 app/main.py - app/config.py:環境變數與 LLM 自動偵測 - app/llm.py:OpenAI-compatible 統一介面 - app/gitea.py:PR diff 取得與 comment 發布 - app/roles.py:從 prompts/roles/*.yaml 載入角色 - app/main.py:pipeline 骨架,log 每個主要階段 - app/prompts/roles/:五個角色定義(Aria/Rex/Zara/Leo/Maya)
76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
import sys
|
|
import traceback
|
|
from config import GITEA_REPOSITORY, PR_NUMBER, PR_HEAD_BRANCH, PR_BASE_BRANCH, get_llm_config
|
|
from roles import load_roles, get_role_intro
|
|
from gitea import get_pr_diff, post_comment
|
|
|
|
|
|
def main():
|
|
print("=" * 60)
|
|
print("🚀 Step1: Pipeline 啟動")
|
|
print(f" repo={GITEA_REPOSITORY} PR=#{PR_NUMBER}")
|
|
print(f" {PR_HEAD_BRANCH} -> {PR_BASE_BRANCH}")
|
|
|
|
# 偵測 LLM
|
|
provider, _, base_url, model = get_llm_config()
|
|
if not provider:
|
|
print("❌ 未設定任何 LLM API Key,請檢查 action inputs")
|
|
sys.exit(1)
|
|
print(f" LLM: provider={provider} model={model} base_url={base_url}")
|
|
|
|
# 載入角色
|
|
roles = load_roles()
|
|
print(f" 已載入 {len(roles)} 個角色: {[r['name'] for r in roles]}")
|
|
|
|
# 取得 PR diff
|
|
print("\n📋 Step1: 取得 PR Diff")
|
|
try:
|
|
diff = get_pr_diff()
|
|
print(f" diff 長度: {len(diff)} 字元")
|
|
except Exception as e:
|
|
print(f" ❌ 取得 diff 失敗: {e}")
|
|
sys.exit(1)
|
|
|
|
if not diff.strip():
|
|
print(" ⚠️ diff 為空,無需審查")
|
|
sys.exit(0)
|
|
|
|
# 發布角色介紹 comment
|
|
print("\n💬 Step1: 發布角色介紹 Comment")
|
|
try:
|
|
intro = get_role_intro(roles)
|
|
intro += f"\n\n> 🔍 服務:{provider} 模型:{model}"
|
|
post_comment(intro)
|
|
print(" ✅ 角色介紹 comment 發布成功")
|
|
except Exception as e:
|
|
print(f" ⚠️ comment 發布失敗(繼續執行): {e}")
|
|
|
|
print("\n📊 Step2: Findings 產生(待實作)")
|
|
print(" [stub] 各角色分析 diff...")
|
|
|
|
print("\n🔀 Step3: Findings 合併與去重(待實作)")
|
|
print(" [stub] 合併新舊 findings...")
|
|
|
|
print("\n📝 Step4: Findings 寫入與 Comment 發布(待實作)")
|
|
print(" [stub] 寫入 findings.json,發布 comment...")
|
|
|
|
print("\n💾 Step5: 記憶區 Commit/Push(待實作)")
|
|
print(" [stub] commit & push findings.json...")
|
|
|
|
print("\n🚦 Step6: 嚴重問題檢查(待實作)")
|
|
print(" [stub] 檢查 critical findings...")
|
|
|
|
print("\n✅ Pipeline 完成")
|
|
print("=" * 60)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
try:
|
|
main()
|
|
except SystemExit:
|
|
raise
|
|
except Exception:
|
|
print("❌ Runner failed:")
|
|
traceback.print_exc()
|
|
sys.exit(1)
|