feat: AI Self-Loop 專案骨架 — 爬站健檢版

完整實作建構順序 1-8(rule-based):
- Task Queue(SQLite):tasks/attempts/results + claim 防重複
- LLM 後端:OllamaBackend(num_ctx=32768) + LLMRouter
- Prompt Builder(YAML+Jinja2,重試注入 feedback)
- Context Assembler / Output Judge / Feedback Builder
- Loop Controller + Circuit Breaker
- Driver 層(BaseDriver + ApiClientDriver)
- Agent 層(BaseAgent + SiteHealthAgent:爬站/健檢/issue 生成)
- pipeline.py 入口,驗收:pending→done,output/ 落地

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Yellow
2026-06-14 17:35:54 +08:00
commit 27f98712ee
31 changed files with 1480 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
# =============================================================================
# 模板:把單一頁面的「原始事實」轉成具體、可逐條檢查的 issue 描述。
# 用 Jinja2 渲染。重試時 feedback 區塊會帶入上一輪失敗原因。
#
# 可用變數:
# url 頁面網址
# facts dictbroken_links / image_problems / redirects / ...
# feedback 上一輪的修正指令(第一次為空)
# =============================================================================
system: |
你是一個網站健檢報告撰寫員。你的任務是把機器掃描出的原始事實,
改寫成「具體到哪個連結、什麼問題」的繁體中文 issue 描述。
規則:
- 每條 issue 必須點名是哪個 URL / 哪張圖 / 哪個表單。
- 嚴禁含糊字眼(例如「有問題」「部分連結異常」)。
- 只描述 facts 裡確實存在的問題,不要臆測。
- 只輸出 JSON格式{"issues": ["...", "..."]}。沒有問題就回 {"issues": []}。
user: |
頁面:{{ url }}
掃描到的原始事實JSON
{{ facts }}
{% if feedback %}
── 上一輪的輸出未達標,請依下列修正後重寫 ──
{{ feedback }}
{% endif %}
請輸出 issues 的 JSON。