OoO
|
4d62731730
|
[V10.322] 修正 Telegram 決策審核推播入口
CD Pipeline / deploy (push) Has been cancelled
|
2026-05-20 12:35:12 +08:00 |
|
OoO
|
f2b91beb61
|
記錄 RAG 人工審核者 hash
CD Pipeline / deploy (push) Successful in 58s
|
2026-05-13 09:13:29 +08:00 |
|
OoO
|
84a8c07e4a
|
feat(p11.5): learning_episodes embedding 寫入 — 解鎖 Stage 3 dedup
CD Pipeline / deploy (push) Successful in 2m57s
Operation Ollama-First v5.0 / Phase 11.5 收尾(A4 已知 limitation 補完)
問題:Phase 11 A4 完成時揭露:
> Stage 3 dedup 需 episode 先 embed:目前 LearningPipeline.enqueue 寫入時
> embedding 為 NULL,所有 episode 都會略過 Stage 3 dedup
修補:
- learning_pipeline.enqueue 內 episode INSERT commit 後 enqueue embedding worker
- 用既有 _enqueue_embedding('learning_episodes', episode_id, distilled_text)
- ADR-007 retry queue worker 自動處理(_process_one_embedding 已動態 UPDATE
{target_table},已支援 learning_episodes 表)
- distilled_text 截 4000 字避免 retry queue 表膨脹
- 失敗 swallow,僅 log debug(不阻擋 episode_id 回傳)
落地 ADR-033 護欄 #1 完整版:
Stage 1: quality_score >= 0.7 ✅ 既有
Stage 2: 無幻覺檢測(規則引擎) ✅ 既有
Stage 3: 與既有 insight cosine < 0.95 ✅ 解鎖 ⭐
Stage 4: weight >= 0.8 必經 👍/👎 ✅ 既有
regression: 70 unit tests 全綠(含修正 test_enqueue_returns_id_on_success
配合新增 _enqueue_embedding 的 commit 計數變化)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 09:16:39 +08:00 |
|
OoO
|
c2124dce00
|
feat(p11+): RAG worker cron — promotion_gate / awaiting_review / expire
CD Pipeline / deploy (push) Successful in 2m53s
Operation Ollama-First v5.0 / Phase 11+ 收尾(ADR-032/033 落地)
services/learning_pipeline.py 新增 2 個 worker 函數:
- process_pending_episodes(batch=50) — 批次處理 pending → can_promote → promote/reject/await
純規則引擎,不跑 LLM(Distiller 純 Hermes 規則)
- push_awaiting_reviews_to_telegram(batch=5) — 推 Stage 4 awaiting_review 到 Telegram
TELEGRAM_ADMIN_CHAT_ID 未設則跳過(fail-safe)
訊息含 episode_id + weight + quality + 600 字截斷文,附 promotion_review_keyboard 👍/👎
run_scheduler.py 加 3 個 cron + 對應 task wrapper:
- 每 5 分鐘 → run_promotion_gate_worker
- 每 30 分鐘 → run_awaiting_review_push
- 每 4 小時 → run_expire_stale_reviews(24h 無回應 → weight=0.5)
設計安全保證:
- RAG_ENABLED=false 時 learning_episodes 為空,3 個 worker 跑空 loop(無害)
- 所有 worker 例外完全吞掉,僅 log error,不影響其他排程
- promote 成功才回 stats['promoted']++,DB 失敗計 errors
完整 RAG 自主學習迴圈閉環:
LLM 結果 → Distiller → learning_episodes (pending)
↓ 每 5 分鐘 worker
PromotionGate 4 階段
↓ approved → 寫 ai_insights → RAG 可檢索
↓ awaiting_review → 每 30 分鐘推 Telegram
↓ 24h 無回應 → 每 4h expire → weight=0.5
↓ 👍 callback → promote → ai_insights
↓ 👎 callback → rejected_human → 永不晉升
仍待 Phase 12+ 完成:
- learning_episodes.embedding 寫入路徑(Stage 3 dedup 解鎖)
- RAG_ENABLED=true 灰度啟用條件(需 100+ episodes + ANTHROPIC_API_KEY)
regression: 70 unit tests 全綠
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-04 09:11:27 +08:00 |
|
OoO
|
c7d6db31f2
|
feat(p11): RAG 自主學習 + Promotion Gate 4 階段護欄(feature flag OFF)
CD Pipeline / deploy (push) Has started running
Operation Ollama-First v5.0 / Phase 11 / RAG 自主學習迴圈
services/rag_service.py (532 行)
- RAGService.query() — bge-m3 embed + cosine 0.85 threshold + top_k=5
- get_embedding_signature() — v5.0 護欄 #3 一致性檢查 (SHA1[:12])
- fire-and-forget rag_query_log INSERT (不阻塞主流程)
- feedback() — Telegram 👍/👎 寫回 feedback_score
- RAG_ENABLED 預設 OFF(戰前行為不變)
services/learning_pipeline.py (750 行)
- Distiller — 純 Hermes 規則引擎,零 LLM 成本
Quality 規則:MCP >200 字 0.8 / LLM JSON ok 0.9 / TextRank 0.6 / 👍 1.0 / 👎 0.0
- PromotionGate — Owen v5.0 護欄 #1 鐵律
Stage 1: quality_score >= 0.7
Stage 2: 無幻覺檢測(規則引擎,零 LLM)
Stage 3: 與既有 insight 相似度 < 0.95(Stage 3 在 episode embed 後啟用)
Stage 4: weight >= 0.8 必經 Telegram 👍/👎
- expire_stale_reviews() — 24h 無回應自動降級 weight=0.5
- hash_human_approver — Telegram username SHA1[:8] PII 保護
services/hermes_analyst_service.py — 新增 analyze() RAG-first
- RAG hit → return synthesize(不燒 LLM)
- RAG miss → 既有 LLM 路徑 + enqueue learning_episodes
services/openclaw_strategist_service.py — Q&A 入口接 RAG-first
- 不動週/月/年報(敘事報告 RAG hit 機率低)
services/telegram_templates.py
- rag_feedback_keyboard() — 👍/👎 inline keyboard
- promotion_review_keyboard() — Stage 4 人工驗收按鈕
routes/openclaw_bot_routes.py — 3 組 callback handler
- rag_fb:{id}:{score} → rag_service.feedback()
- pg_ok:{episode_id} → PromotionGate.promote()
- pg_no:{episode_id} → PromotionGate.reject()
70 unit tests 全綠 + 全戰役 196 tests zero regression(4:17 跑完)
剩餘 limitations(Phase 12+ 補):
1. learning_episodes.embedding 寫入路徑(Stage 3 dedup 暫 skip)
2. PromotionGate worker cron 未掛
3. Telegram awaiting_review 推播未接(callback handler 已就位)
灰度開啟條件(建議 1 週後):
- ANTHROPIC_API_KEY 設定 + RAG_ENABLED=true + threshold=0.90 保守
- feedback_score >= 4 比率 > 70% → threshold 降至 0.85
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-03 23:56:12 +08:00 |
|