OG T
|
a2cc985f60
|
feat(mcp-phase3): ArgoCD MCP + Sentry MCP + 完整 Provider 註冊
CD Pipeline / build-and-deploy (push) Has been cancelled
ArgoCDProvider (3 工具):
- argocd_list_apps: 列出所有 App + sync/health 狀態
- argocd_get_app_status: 詳細狀態 + 問題資源清單
- argocd_get_sync_history: 最近 N 筆部署記錄
- 輸入驗證: app_name 白名單 regex
- 需 ARGOCD_API_TOKEN + ARGOCD_MCP_ENABLED=true
SentryProvider (3 工具):
- sentry_list_issues: 列出最近 Issues(狀態過濾)
- sentry_get_issue: 詳情 + stacktrace 最後 5 frames
- sentry_search_issues: PromQL 風格搜尋
- issue_id 白名單驗證(只允許純數字)
- 需 SENTRY_AUTH_TOKEN + SENTRY_MCP_ENABLED=true
providers/__init__.py: 補上 Prometheus + SSH + ArgoCD + Sentry 全部 10 個 providers
config.py: 新增 ARGOCD_URL / ARGOCD_API_TOKEN / ARGOCD_MCP_ENABLED / SENTRY_MCP_ENABLED
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 09:11:53 +08:00 |
|
OG T
|
3b896d0fbd
|
docs(logbook): Session 3 結尾更新 — ADR-071-I/J + Backlog 清零
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 09:08:28 +08:00 |
|
OG T
|
de055778b3
|
fix(cd): CD_PUSH_TOKEN + backup 路徑使用 BACKUP_ROOT 環境變數
CD Pipeline / build-and-deploy (push) Has been cancelled
- cd.yaml: GITEA_CD_TOKEN → CD_PUSH_TOKEN(Gitea 保留 GITEA_ 前綴)
- ADR-069: 同步更新 token 名稱說明
- backup-from-110.sh: 改用 BACKUP_ROOT 環境變數(預設 /home/ollama/backup/110)
避免 /var/log /var/run 需要 root 權限
- 已部署到 188 + cron 0 1 * * * 設定完成
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 09:07:47 +08:00 |
|
OG T
|
1ec19656b5
|
feat(adr071-ij): TYPE-2 指標快照卡片 + KM 三段資料整合
CD Pipeline / build-and-deploy (push) Failing after 8m17s
Deploy Alert Rules / Deploy Prometheus Alert Rules (push) Successful in 36s
Ansible Lint / lint (push) Has been cancelled
ADR-071-I: decision_manager 執行前後各抓一次 Prometheus metrics
- _fetch_metrics_snapshot(): 依 alertname 選擇 CPU/Mem/Disk/Restart 查詢
- _format_metrics_delta(): 輸出 "CPU 92%→23% | Mem 78%→45%" 格式
- _push_auto_repair_result(): metrics_after 寫 DB + TYPE-2 卡片顯示 delta
- _auto_execute(): metrics_before 在執行前寫 DB(完成閉環)
ADR-071-J: km_conversion_service._build_content() 使用精簡 delta 格式
- 從 metrics_before/after 產生人讀 delta(CPU/Mem/Disk/重啟次數)
- 附加 k8s_state_after(若有)
- 格式: 症狀 + 根因 + 動作 + 效果數字(症狀→情境→動作→效果)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 03:09:35 +08:00 |
|
OG T
|
43edff184d
|
feat(dr): Sprint C — Host rsync 備份 + DR SOP 文件
C-1 Velero: 已確認運作中(daily-awoooi-prod schedule, 13d, MinIO Available)
C-2 Host rsync 備份:
scripts/ops/backup-from-110.sh — 188 每日凌晨 1:00 rsync 備份 110
- Harbor registry data(最高優先)
- Gitea repos
- bitan-pharmacy.git(若存在)
- 成功寫入 /var/run/backup-110.last_success 供 Prometheus 監控
- 失敗時 Telegram 告警
ops/monitoring/alerts-unified.yml — 新增 HostBackupFailed 告警規則
C-3 DR SOP 文件:
docs/runbooks/disaster-recovery/DR-K8s-awoooi.md (<15分鐘)
docs/runbooks/disaster-recovery/DR-Nginx.md (<5分鐘)
docs/runbooks/disaster-recovery/DR-Harbor.md (<30分鐘)
docs/runbooks/disaster-recovery/DR-Bitan.md (<5分鐘)
docs/runbooks/disaster-recovery/DR-Stock.md (<5分鐘)
部署備份腳本說明 (需手動執行):
scp scripts/ops/backup-from-110.sh ollama@192.168.0.188:~/bin/backup-from-110.sh
ssh ollama@192.168.0.188 "chmod +x ~/bin/backup-from-110.sh && mkdir -p /backup/110/{harbor,gitea}"
ssh ollama@192.168.0.188 "echo '0 1 * * * /home/ollama/bin/backup-from-110.sh' | crontab -"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 03:04:18 +08:00 |
|
OG T
|
a29e5e1de2
|
feat(mcp-phase1): K8s MCP 強化 — 6 個新工具 + namespace 白名單
MCP Phase 1 (ADR-069 Sprint B 後驗收):
k8s_get_pod_logs — Pod log 取得 (tail 1-500,支援 previous)
k8s_watch_rollout — rollout 狀態監控直到完成 (timeout 10-300s)
k8s_get_events — K8s events (可過濾 resource_name / event_type)
k8s_describe_pod — 完整 Pod describe (Conditions/Volumes/Env)
k8s_get_hpa_status — HPA 副本數/CPU utilization
k8s_get_node_conditions — Node Ready/MemoryPressure/DiskPressure
安全強化:
- ALLOWED_NAMESPACES = {"awoooi-prod"} 硬編碼白名單
- _validate_namespace() + _validate_name() 參數白名單
- 數值參數上下限夾緊 (tail 1-500, timeout 10-300s)
- event_type 只允許 Warning / Normal
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 03:01:38 +08:00 |
|
OG T
|
b783f71b97
|
docs: LOGBOOK + Memory 更新 — Sprint B 全完成
Sprint B-1/B-2/B-3 全部完成,後置動作:
- 建立 Gitea Secret GITEA_CD_TOKEN
- 首席架構師確認 2af4dff 後 push gitea main
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:58:04 +08:00 |
|
OG T
|
7f4ec717ef
|
feat(gitops): Sprint B-2/B-3 — ArgoCD Application + CD GitOps 模式
B-2: k8s/argocd/awoooi-prod-app.yaml
- ArgoCD Application awoooi-prod 建立(已 apply 到 K8s)
- automated sync: prune + selfHeal
- ignoreDifferences: Deployment image + Secret data
- 全部 17 個 K8s 資源已確認 Synced
B-3: .gitea/workflows/cd.yaml — Deploy step 重寫
- 舊: kubectl set image(與 ArgoCD selfHeal 衝突)
- 新: kustomize edit set image → git commit [skip ci] → push → ArgoCD sync
- 新增等待 ArgoCD Synced + Healthy(最多 120s)
- 需建立 Gitea Secret: GITEA_CD_TOKEN(見 ADR-069)
docs/adr/ADR-069-infra-gitops-sprint-b.md
- 決策記錄:循環觸發防護 + ignoreDifferences 設計
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:57:42 +08:00 |
|
OG T
|
a63c586d9a
|
docs: LOGBOOK + Skill04 更新 — Sprint B-1 + Architecture Review 記錄
- LOGBOOK: 新增 Sprint B-1 完成條目 + 架構Review修復清單
- Skill04 v2.6: 加入 Ansible IaC 目錄結構 + SSH MCP 安全規則
記錄首席架構師 2026-04-11 架構Review指令執行結果
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:52:29 +08:00 |
|
OG T
|
2af4dffcc6
|
fix(security): Architecture Review 修復 5 項高信心問題
安全修復 (P0):
1. ssh_provider: 新增 _validate_param() 白名單驗證,防止 command injection
- container_name/service/filter_name: [a-zA-Z0-9._-]{1,128}
- compose_dir: 必須以 /opt/ 或 /srv/ 開頭,禁止 ..
- domain: FQDN 白名單
- tail/port/lines: int() 轉換 + 上下限夾緊
2. ssh_provider: known_hosts=None 改為讀 SSH_MCP_KNOWN_HOSTS_FILE 環境變數
- 預設仍 None(內網快速啟動),但啟動時寫入 warning log
- 設定文件:ops/runbooks/ssh-mcp-setup.md (待補)
模組化修復 (P1):
3. km_conversion_service: 移除 import 時的 ALERT_EVENT_TYPES.update() 副作用
- ADR-071 event types 移入 alert_operation_log_repository.py 靜態集合
4. telegram_gateway: create_task() 改為 await + try/except
- 避免 DB session 關閉後的競爭條件
- KM 轉換失敗記錄 warning log,不中斷主流程
5. km_conversion_service: 新增頂層 try/except,錯誤一律 error log 後 re-raise
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:50:26 +08:00 |
|
OG T
|
0139aa79e7
|
feat(infra): B-1 Ansible Host IaC 骨架完整版
- roles/nginx/templates/188-all-sites.conf.j2: 8 個服務 Jinja2 模板
- roles/docker-compose-service/tasks/main.yml: 通用 Docker Compose role
- roles/swap/tasks/main.yml: swap2.img 管理 role (110 專用)
- roles/pm2-service/tasks/main.yml: PM2 process 狀態確認 role
- .gitea/workflows/ansible-lint.yml: infra/ansible/** 異動自動 lint
Sprint B-1 完成: Git = 唯一真相 (Host IaC 骨架)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:47:10 +08:00 |
|
OG T
|
44e8b22585
|
docs(logbook): Session 結尾更新 — ADR-071 第一批 + MCP Phase 2 全完成
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:36:07 +08:00 |
|
OG T
|
6351e9a0e9
|
feat(mcp-phase2): MCP Phase 2 — Prometheus MCP + SSH MCP + alert labels
CD Pipeline / build-and-deploy (push) Successful in 13m37s
Deploy Alert Rules / Deploy Prometheus Alert Rules (push) Successful in 35s
MCP-2b: prometheus_provider.py
- prometheus_query (PromQL 即時查詢)
- prometheus_query_range (歷史趨勢,預設 15 分鐘)
- prometheus_get_alert_history (告警觸發歷史)
- config: PROMETHEUS_URL + PROMETHEUS_MCP_ENABLED
MCP-2a: ssh_provider.py
- 群組A 9 個只讀診斷工具 (top/disk/memory/logs/status/port/nginx/swap)
- 群組B 6 個安全操作工具 (restart/compose/systemctl/clear-log/ssl/nginx-reload)
- 四層安全守衛 (白名單/allowed_hosts/forbidden_patterns/trust_score)
- config: SSH_MCP_ENABLED + SSH_MCP_ALLOWED_HOSTS
K8s: 04-ssh-mcp-secret.example.yaml (ssh-mcp-key Secret 範本 + 建立步驟)
Alert labels: alerts-unified.yml 補充 mcp_provider/host_type/alert_category
覆蓋: HostHighCpuLoad/HostOutOfMemory/HostOutOfDiskSpace/DockerContainer*
SignOzDown/SentryDown/HarborDown/GiteaDown
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:35:35 +08:00 |
|
OG T
|
325b3851b5
|
feat(adr-071): 告警通知四類型第一批 B/C/E/F/G/H 全實作
CD Pipeline / build-and-deploy (push) Has been cancelled
Type Sync Check / check-type-sync (push) Failing after 1m7s
ADR-071-B: classify_notification() — 五型分類器 (TYPE-1/2/3/4/4D)
ADR-071-C: send_info_notification() — TYPE-1 純資訊無按鈕卡片
ADR-071-E: _build_inline_keyboard() — 依 alert_category 動態組合 TYPE-3 按鈕
ADR-071-F: send_drift_card() — TYPE-4D Config Drift 卡片 + Diff 截斷
ADR-071-G: km_conversion_service.py — Incident RESOLVED 自動轉 KM
ADR-071-H: handle_manual_fix_done() — TYPE-4 手動修復 Bot 對話閉環
前批已完成: ADR-071-A (DB Migration) + ADR-071-D (狀態機守衛)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:24:20 +08:00 |
|
OG T
|
45b13f1d7c
|
fix(k8s): 更新 03-secrets.example.yaml — Sentry DSN 改 HTTPS 公網域名
ADR-069 Sprint A A-0-5:
- SENTRY_DSN: http://...@192.168.0.110:9000/3 → https://...@sentry.wooo.work/3
- 同步 Web DSN 範例(NEXT_PUBLIC_SENTRY_DSN)
- 加入取得 DSN 的步驟說明
- system.url-prefix 已設定為 https://sentry.wooo.work
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 02:05:11 +08:00 |
|
OG T
|
68a3858ae4
|
fix(auto_execute): 守衛加入 target==alertname 檢查,防止 LLM 把告警名稱當 deployment 名稱
CD Pipeline / build-and-deploy (push) Successful in 13m33s
HostHighCpuLoad 等主機告警,NemoTron Tool Calling 可能把
alertname 填入 deployment_name,導致執行
'kubectl rollout restart deployment HostHighCpuLoad'。
新增守衛: _target == _alertname 時拒絕執行並通知人工介入。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 01:13:24 +08:00 |
|
OG T
|
8a8c6a4eb1
|
docs(logbook): ADR-069 Sprint A 主幹完成 — SSL/HTTPS/nginx 全站收斂
- A-0-1~A-0-2: Swap擴充 + snuba/Harbor修復
- A-1~A-4: GitLab移除 + n8n/open-webui啟動 + Harbor port修正
- A-5: SSL申請 sentry/gitea/langfuse/signoz/stock.wooo.work
- A-6: 188 nginx HTTPS blocks 全部上線
- A-7: 110 all-sites-from-188.conf 封存,188單一控制點
- A-8/A-9: stock NodePort + keepalived VIP:200 確認
- 全域驗收:商業服務全通 + 新9個域名HTTPS全通
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 01:07:05 +08:00 |
|
OG T
|
fa7b763689
|
docs(infra): ADR-069 基礎設施重建計畫規格 v1.3 — Sprint A/B/C 完整設計
新增 Sprint A(清廢棄修錯誤)+ Sprint B(Ansible+ArgoCD GitOps)+ Sprint C(Velero+rsync DR)
完整技術調查:Sentry snuba DNS根因、Harbor port錯誤、bitan Docker化需求、volumes盤點
加入第十二節(與現有專案整合)+ 第十三節(文件更新時間表)
LOGBOOK 更新、project_master_workplan 加入 ADR-069 Sprint A/B/C
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-11 00:01:07 +08:00 |
|
OG T
|
a4d655ea7f
|
fix(auto_execute): 安全守衛 — 拒絕執行含 unknown 或未解析 placeholder 的 action
CD Pipeline / build-and-deploy (push) Successful in 19m7s
E2E Health Check / e2e-health (push) Successful in 43s
主機層告警(HostHighCpuLoad、DockerContainerUnhealthy 等)沒有對應
K8s deployment 名稱,affected_services=[],導致 _target='unknown',
執行 'kubectl rollout restart deployment unknown' 這種無意義命令。
修復: 替換後若 action 仍含 'unknown' 或 <...>/{...} 格式,
直接拒絕執行並通知人工介入,不允許帶 placeholder 的命令上線。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 23:57:17 +08:00 |
|
OG T
|
dabc62e0f8
|
fix(telegram): append_incident_update — 儲存告警卡片 message_id 到 Redis
CD Pipeline / build-and-deploy (push) Successful in 14m31s
_send_approval_card_to_group 發出告警卡片後,將 Telegram message_id
存入 Redis tg_msg:{incident_id}(TTL 24h),供後續 append_incident_update
換掉批准按鈕 + reply 狀態。
修復前:tg_msg key 從未被寫入,append 永遠 fallback 發新訊息,
批准按鈕永遠無法被移除。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:41:30 +08:00 |
|
OG T
|
797c7c749e
|
fix(nemotron): deepseek-r1 num_predict 400→1200,避免 <think> block 截斷後空回覆
CD Pipeline / build-and-deploy (push) Failing after 28s
deepseek-r1:14b 思考 token 超過 400 會在 </think> 前截斷,導致
清理後 body 為空,Telegram 顯示空訊息。
- chat_manager: num_predict 400 → 1200
- telegram_gateway: _clean_ai_reply 空值加 fallback 錯誤提示
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:35:37 +08:00 |
|
OG T
|
de6dcd181a
|
docs(logbook): Session 結尾更新 — Backlog 清零 + 全站真實數據驗收
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:19:38 +08:00 |
|
OG T
|
d1c85c332a
|
feat(models): models.json v1.3 — 加入 ADR-067 五大 Ollama 應用設定
CD Pipeline / build-and-deploy (push) Successful in 14m21s
新增 adr067_ollama_applications 區塊:
- Phase 30: drift_summary (qwen2.5:7b-instruct, 90s)
- Phase 31: log_anomaly_summary (deepseek-r1:14b, 120s)
- Phase 32: pr_code_review (qwen2.5-coder:7b, 120s)
- Phase 33: rag_embed (nomic-embed-text 768d) + rag_generate (qwen2.5:7b)
- Phase 34: image_analysis (llava:latest, 60s)
endpoint 統一標注 http://192.168.0.111:11434 (ADR-067 專屬)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:16:09 +08:00 |
|
OG T
|
89ec11cc54
|
fix(cd): 移除 YAML 不合法的 Unicode 框線字元(├└)導致 workflow 解析失敗
CD Pipeline / build-and-deploy (push) Has been cancelled
Notify Pipeline Start/Failure 的 MSG 改為純 ASCII 格式。
此 bug 導致 e5f1541 之後所有 push 都無法觸發 CD。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:14:32 +08:00 |
|
OG T
|
f8926bb70a
|
ci: 觸發 CD — decision_manager 修復標記
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:12:56 +08:00 |
|
OG T
|
f05089e30d
|
ci: retrigger CD — 包含 auto_execute + playbook_seed + placeholder 修復
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:11:52 +08:00 |
|
OG T
|
b0df5c79fc
|
fix(cd): Notify steps 改用 JSON body 避免 HTML parse_mode 400 錯誤
|
2026-04-10 22:04:52 +08:00 |
|
OG T
|
41ec9efc32
|
docs(logbook): 更新至 2026-04-10 深夜 — ADR-067全完成 + CI B5通過 + SOUL v5.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:03:41 +08:00 |
|
OG T
|
e5f1541d69
|
fix(auto_execute): 替換 action 中的 <deployment_name>/{target}/{namespace} placeholder
CD Pipeline / build-and-deploy (push) Failing after 24s
Nemotron tool calling 生成 <deployment_name> 佔位符未替換
auto_execute 前統一替換所有 {target}/{namespace}/<xxx> 格式
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 22:00:19 +08:00 |
|
OG T
|
71f0dbf2b5
|
fix(auto_execute): ApprovalRequest 補齊 description/requested_by/required_signatures
CD Pipeline / build-and-deploy (push) Has been cancelled
3 validation errors 導致 auto_execute_failed
補上所有必填欄位,required_signatures=0 表示自動核准不需簽核
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 21:59:52 +08:00 |
|
OG T
|
f33d514391
|
fix(auto_repair): playbook_seed_service — 從 alert_rules.yaml 初始化 APPROVED Playbook
CD Pipeline / build-and-deploy (push) Has been cancelled
根本原因: playbooks 表空 → NO_MATCH → 永遠走審批,從不自動修復
修復: startup 時從 alert_rules.yaml seed APPROVED Playbook(冪等)
確保自動修復鏈路有規則可用
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 21:52:38 +08:00 |
|
OG T
|
cdccc7e826
|
feat(soul): OpenClaw v5.6 — ADR-067五大Ollama應用 + Guardrail BLOCK層
capabilities.json:
- 版本升至 5.6.0
- 新增 guardrail.block_layer (Sprint 5.1): Stateful服務封鎖、心跳排除
- 新增 adr067_ollama_applications: Phase 30-34五大應用完整描述
- RAG: 5814 chunks, ivfflat cosine_ops, /rag Telegram指令
- 明確 Ollama 111:11434 (ADR-067) vs 188:11434 (主模型) 分工
SOUL.md:
- 更新主模型欄位: 區分 Ollama 188(主模型) vs 111(ADR-067五大應用)
- 新增「圖片分析」到專長列表
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 21:50:37 +08:00 |
|
OG T
|
100e4d9b89
|
fix(chat): AI 回覆截斷問題 — 強制 persona + Markdown 清理 + 600字上限
CD Pipeline / build-and-deploy (push) Successful in 14m39s
問題: OpenClaw/NemoClaw 回覆 Markdown 語法 + 超長,Telegram 顯示截斷
修正:
1. chat_manager: _call_openclaw/_call_nemotron 強制前置 persona (含不超過300字規範)
2. telegram_gateway: _clean_ai_reply() 移除 **bold** *italic* # header 語法
移除 deepseek-r1 <think> 標籤,截斷 > 600 字並在段落邊界截
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 21:26:15 +08:00 |
|
OG T
|
5d45499d12
|
fix(cd): B5 測試先清除殘留 pg-test-b5 container
CD Pipeline / build-and-deploy (push) Successful in 14m25s
|
2026-04-10 20:52:18 +08:00 |
|
OG T
|
527ce9faaf
|
fix(notifications): 新增後端 /api/v1/notifications/channels 路由
CD Pipeline / build-and-deploy (push) Failing after 2m4s
前端 /notifications 頁面呼叫此 endpoint 但後端不存在 (404)
新增 notifications.py:回傳 4 個真實頻道狀態
- Telegram OpenClaw Bot (BOT_TOKEN 設定檢查)
- Telegram Nemotron Bot (BOT_TOKEN 設定檢查)
- SSE Web Stream (永遠 active)
- Redis Stream awoooi:signals (ping 檢查)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:17:37 +08:00 |
|
OG T
|
9a3002ed76
|
fix(cd): B5 測試改用 container IP,解決 DinD port mapping 問題
CD Pipeline / build-and-deploy (push) Failing after 2m1s
act runner 內 -p 15433:5432 的 localhost 不通
改用 docker inspect 取 container IP 直連 5432
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:14:22 +08:00 |
|
OG T
|
167e115a6d
|
feat(phase31): Log 異常摘要觸發點 — 告警後 NemoTron 發 log summary
CD Pipeline / build-and-deploy (push) Failing after 2m44s
_send_log_summary: 取 Pod log → deepseek-r1:14b 分析 → NemoTron 發到群組
觸發點: _push_decision_to_telegram 送完審批卡後異步執行
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:07:56 +08:00 |
|
OG T
|
7d26a60af5
|
fix(ci): B5 整合測試改用 docker run — 解決 Gitea act services: container name 為空問題
CD Pipeline / build-and-deploy (push) Has been cancelled
services: 宣告在 Gitea act runner 中 container name 為空
改為 step 內直接 docker run pg-test-b5 (port 15433) + 清理
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:07:23 +08:00 |
|
OG T
|
95f63d64d7
|
fix(auto_approve): min_trust_score 0 解除自動修復封鎖
CD Pipeline / build-and-deploy (push) Has been cancelled
根本原因: trust_score 是 in-memory dict,Pod 重啟即歸零
永遠 < min_trust_score=1 → 所有告警走審批,從未自動執行
修復: min_trust_score=0,medium risk + confidence>=0.65 直接自動執行
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:06:40 +08:00 |
|
OG T
|
04c25fdd60
|
fix(ci): B5 schema init 改用 psql localhost:15432 直連
CD Pipeline / build-and-deploy (push) Has been cancelled
act runner 無法透過 docker ps 取得 service container name
改用 psql client 直連 localhost:15432 初始化 schema
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:04:42 +08:00 |
|
OG T
|
e8d1df04c6
|
ci: 移除 Alert Chain + Monitoring Coverage 的 continue-on-error
CD Pipeline / build-and-deploy (push) Failing after 1m55s
告警鏈路失敗 / 覆蓋率不足 → 阻塞部署 (B5 技術債清除)
保留: SSH scp 188 (網路不穩) + E2E Playwright (瀏覽器環境)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 16:00:11 +08:00 |
|
OG T
|
2a66bb1ca8
|
fix(ci): B5 改用 Gitea Actions services: — 正確的 service container 架構
CD Pipeline / build-and-deploy (push) Failing after 1m50s
之前所有方案都在對抗 DinD 網路隔離,根本解法是用 services:
services.postgres-test 與 runner 同網路,localhost:15432 直連
不再需要 docker compose、docker cp、network connect 等 workaround
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 15:57:08 +08:00 |
|
OG T
|
8157d139a7
|
docs(logbook): 飛輪 Telegram 回饋閉環 + 心跳排除記錄
|
2026-04-10 15:56:58 +08:00 |
|
OG T
|
ff3be51e13
|
fix(phase34): 圖片分析改用 send_as_openclaw 發到 SRE 群組
CD Pipeline / build-and-deploy (push) Has been cancelled
send_notification 發到私人 chat,改用 send_as_openclaw 發到 SRE 戰情室
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 15:56:19 +08:00 |
|
OG T
|
b9dbbb3575
|
feat(rag): Telegram /rag 指令 + /rag/optimize ivfflat 端點
CD Pipeline / build-and-deploy (push) Successful in 14m9s
- telegram_gateway: /rag <query> → KnowledgeRAGService.query()
_handle_group_command 加 full_text 參數取得完整指令文字
/help 更新加入 /rag 說明
- rag.py: POST /rag/optimize → rag_repo.create_ivfflat_index()
- rag_chunk_repository: create_ivfflat_index() — ivfflat with lists=100
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 14:47:21 +08:00 |
|
OG T
|
ba5ace8ca8
|
fix(ci): B5 用 docker cp 傳代碼進 container,解決 DinD volume 問題
CD Pipeline / build-and-deploy (push) Has been cancelled
DinD 下 volume mount 指向 host 路徑(不存在),改用:
1. docker create 建 container(共享 postgres 網路命名空間)
2. docker cp 把代碼複製進去
3. docker start -a 執行,取 exit code
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 14:38:28 +08:00 |
|
OG T
|
0225a221b1
|
fix(ci): B5 用 --network container:postgres 共享網路命名空間
CD Pipeline / build-and-deploy (push) Has been cancelled
localhost:5432 直連,不需要 IP 解析或路由
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 14:29:26 +08:00 |
|
OG T
|
33abe988f8
|
fix(phase34): 圖片分析結果改由 OpenClaw 回覆(llava vision)
CD Pipeline / build-and-deploy (push) Has been cancelled
NemoTron 負責文字問答(deepseek-r1:14b),OpenClaw 負責圖片分析(llava)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 14:13:57 +08:00 |
|
OG T
|
7e5ac00d62
|
fix(phase34): image_analysis 用正確 bot token 下載 + NemoTron 回覆
CD Pipeline / build-and-deploy (push) Has been cancelled
- 下載圖片改用 OPENCLAW_TG_BOT_TOKEN(polling bot)
- 結果改用 send_as_nemotron 從 NemoTron bot 回覆到群組
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 13:58:59 +08:00 |
|
OG T
|
cf5eb71ea6
|
fix(phase34): polling loop 補圖片路由 — _handle_chat_message photo handler
CD Pipeline / build-and-deploy (push) Has been cancelled
text=None 時直接 return,導致圖片訊息被丟棄
在 text 檢查前插入 photo 路由,呼叫 image_analysis_service
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-10 13:58:05 +08:00 |
|