對話摘要 2026-08-07
description: 8 note(s) today. name: ‘2026-08-07’
- memory/2026-08-07/amd-radeon-cloud-credits.md name: amd-radeon-cloud-credits description: 添加 LangFlow 和 RAGFlow 两个工具的详细介绍,分析其功能对用户场景的适配性及操作可行性。
- memory/2026-08-07/dolibarr-migration-and-storage-planning.md name: dolibarr-migration-and-storage-planning description: Dolibarr 遷移 pg-main 確認完成(conf 指向 pg、279 表/230 config/admin shinggo、UI/API 驗證通過,dolibarr-db MariaDB 保留做 backup)。同日後續研究與待辦:① Google Drive 400GB 可經 Alist v3.63 內建 driver 接入(Oracle 直連 Google 成功、API 免費),但唔可以當 boot volume(非 block storage + Always Free 200GB 配額已用盡),需用戶開 Google Cloud OAuth 憑證;② 發現 boot volume 係 120 VPU(UHP),加 50GB 實收 2.55/100GB)/ B(只搬大而慢嘢,DB 留 boot)/ C(Balanced $4.25),VPU 每 volume 獨立。⏳ 用戶考慮 A/B/C 方案中,過幾日回覆;到時流程:prune → 揀方案 → 出搬移計劃 → 排低峰期執行。ReflectionGate 誤觸清單已加入「可行性答案係唔得」類別。
- memory/2026-08-07/dolibarr-storage-podcast-azure-stt.md name: dolibarr-storage-podcast-azure-stt description: 2026-08-07 日記。① Dolibarr PoC 已上線並完成 MariaDB→pg-main 遷移:dolibarr/dolibarr:23.0.3(arm64)遷移到 pg-main/pgsql,279 表、230 設定、admin shinggo,UI HTTP 200 + API login 成功、12 模組 enable,dolibarr-db(MariaDB)保留做 backup;DOLI_COMPANY_NAME 未確認。② 同日儲存規劃研究(多項 pending):Google Drive 400GB 可經 Alist v3.63 接入(Oracle 德國機直連 Google API 成功、API 免費、等用戶開 OAuth client_id/secret);Google Drive 唔可做 boot volume(非 block storage + Always Free 200GB 已用盡,替代為 Alist 掛載或 rclone mount);boot volume 係 120 VPU(UHP)令加 50GB 實收 2.13 或 Lower Cost data volume 2.55/月)。③ Open Notebook 粵語 Podcast 方案:NotebookLM 配音硬綁定出唔到粵語(中文得普通話腔);用戶試聽 Edge-TTS 免費 demo 後嫌粵語音色生硬(「粵語真係唔得」)→ 轉付費方案,首選 MiniMax Speech-02-HD(Speech Arena 第一、100/百萬)/Google Chirp3-HD,Azure/OpenAI TTS 唔支援粵語唔好用;MiniMax 用戶已註冊並俾 API key(sk-api-NYbMhL-…,已存 Infisical,key 有效但餘額 0),係 pay-as-you-go 要充值(platform.minimax.io/billing,最低約 200 credit 30 日、Always free 包 5 小時/月語音辨識;期間 Azure CLI token 兩次過期(~1 小時有效),已開新 device code C4UMUGEDY(最後一次登入)——登入後即開 resource + 部署 whisper 攞 key 接 QwenPaw。⑤(最新)QwenPaw 語音轉寫已接入可用:用戶問點用語音,答唔使設定——Telegram 禁住 🎤 錄音放手即送出;模式 auto(到達自動轉寫成文字);引擎已用 Groq Whisper Large V3 Turbo(whisper-large-v3-turbo、免費、每日 200 分鐘、支援粵語)成為實際 STT(Groq 由後備升級為正式引擎)。⑥(最新)群組語音接收測試:bot 係 n8n_shinggo_bot,Telegram 群組 bot 默認只收到「回覆佢」或「@佢」嘅訊息(直接錄嘅語音唔會送達,log 確認文字到、voice 冇到)——正確用法係長按 bot 訊息→回覆→禁🎤錄音,或直接 @n8n_shinggo_bot;用戶試 @ 方法確認文字到達、/start 就緒;/compact 喺 Telegram 唔會自動處理(對話有自動壓縮機制,想重開始就開新對話);仍等用戶用「回覆/@+錄音」實測粵語語音收到,Azure whisper 可日後再部署對比。
- memory/2026-08-07/memory-slimming-archive-20260807.md
- memory/2026-08-07/oci-homelab-ops.md name: oci-homelab-ops description: 2026-08-07 OCI homelab operations log: QwenPaw model switch to azure-gpt-4o (tool reduced to 108), Hermes API integration, Google Drive backup via rclone setup complete (1.2GB cleaned), Karakeep AI tagging diagnostic confirmed as 100% functional, Oracle Cloud and WireGuard-related updates covered.
- memory/2026-08-07/qwenpaw-db-export.md name: qwenpaw-db-export description: Completed exporting
history.dbto Nextcloud with full data snapshot; identified issue with live database truncation caused by a concurrent session. - memory/2026-08-07/qwenpaw-model-switch.md name: qwenpaw-model-switch description: QwenPaw default model switched to azure-gpt-4o due to a prior session’s decision, resolving Azure’s 128-tool limit by reducing tools to 86. Updated active_model in agent.json and reloaded config successfully. Memory updated to reflect the change. Current session still using the old model deepseek-first, but future sessions will default to azure-gpt-4o.
- memory/2026-08-07/system-health-azure-containers-status.md name: system-health-azure-containers-status description: 2026-08-07 系統診斷與 Azure 相關狀態記錄:對話回覆慢的原因分析(Swap 3.5GB 使用過高、Chromium headless 佔資源)、Azure GPT-4o token 用量統計(2026-07-08 至 2026-08-07 共 40,822,924 tokens / 532 次調用)、Azure 免費服務清單(Always Free / 12 個月免費 / $200 信用額 / Azure AI)、az-login 與 az-cli 容器來源與用途(2026-08-07 開 Azure OpenAI 時建立,管理 rg-qwenpaw 資源組,建議保留 az-cli 防 token 過期)、FastMCP 容器狀態(Up 11 hours healthy,工具正常)。
04:45 Heartbeat
- 系統正常:uptime 1d3h,load 0.36/0.53/0.60,mem 12G/22G(swap 2.7G),disk 59%(剩 76G)
- 已發 Telegram 摘要
05:0x IPv6 開通完成
- VCN + Subnet + RT + SL + VNIC 全開 IPv6:固定
2603:c020:8021:2a00::10 - OS 零設定(NetworkManager auto),ping6 Google ✅、curl6 ✅、3x-ui 443 dual-stack ✅
- client 可加 IPv6 entry:
vless://...@[2603:c020:8021:2a00::10]:443
05:1x Dolibarr PoC 部署完成(Benhoweb / shinggo)
- 用戶確認路線:先 MariaDB → setup → 日後遷移 pg-main;公司名 Benhoweb,Admin shinggo
- Docker compose(oracle-arm-stacks
dolibarr/,commit c92ed6f):dolibarr/dolibarr:23.0.3+mariadb:11,固定 IP .74(web)/.75(db),TZ HK,全部${VAR}env - Dockhand stack 68:env 9 vars(DOLI_DB_ROOT_PASSWORD/DOLI_DB_NAME=dolibarr/DOLI_DB_USER=dolibarr/DOLI_DB_PASSWORD/DOLI_ADMIN_LOGIN=shinggo/DOLI_ADMIN_PASSWORD/DOLI_COMPANY_NAME=Benhoweb/DOLI_CRON_KEY/DOLI_INSTANCE_UNIQUE_ID),全 Infisical
DOLI_*;UPDATE stack_environment_variables SET environment_id=1+UPDATE git_stacks SET environment_id=1 - 卡點 1:設咗
DOLI_CRON: "1"→ dolibarr image 行 cron-only 模式(唔起 Apache、唔跑 auto-install)→ 移除後正常 - 卡點 2:Api 模組預設未 enable →
docker exec -e DOLI_ENABLE_MODULES=Api dolibarr-web php /var/www/scripts/docker-init.php啟用 - 驗證:HTTP 200、install.lock ✅、
POST /api/index.php/login(shinggo)→ token ✅ - 收編:CF Tunnel ingress
dolibarr.benhoweb.com → http://dolibarr-web:80(config v79)+ DNS CNAME proxied ✅;CF Access app995180ed/policy23aeddeb(Authentik IdP)✅;AdGuard clients .74/.75 ✅;list.benhoweb.com push ✅ - 待辦:遷移 pg-main(官方 MySQL→PostgreSQL 路徑);系統 cron 排程(web 模式未有 /etc/cron.d/dolibarr)
07:xx Google Drive 400GB 研究 + 空間擴充討論
- Google Drive 可接入 Alist(v3.63 內建 driver,Oracle 德國機直連 Google API ✅,API 免費);需用戶喺 Google Cloud Console 開 OAuth Client(client_id/secret)→ 我攞 refresh token → 加 storage
- Google Drive 唔可以做 boot volume(唔係 block storage;OCI Always Free 200GB 已用盡)
- 空間現況:boot volume 200GB @ 120 VPU(UHP),用 109G/183G(60%),Docker 佔 88GB(images 66.7G 可回收 13.9G、volumes 14.8G 可回收 5.9G)
- 收費參考:+50GB boot volume(120 VPU)= 2.13/月;Lower Cost block volume = 2.55);Balanced block volume 100GB=$4.25
- ⚠️ 待辦(用戶要考慮,過幾日話我知):擴充 Docker 空間方案三揀一:
- A. 成個 /var/lib/docker 搬去 Lower Cost block volume($2.55/100GB,DB 容器行低效能)
- B. 只搬大而慢嘢(backup/media/大 volumes),DB 留 boot volume
- C. block volume 揀 Balanced 10 VPU($4.25/100GB,DB 效能唔犧牲)
- 前置:
docker system prune -a+docker volume prune慳 ~20GB(可加 n8n 自動化) - 執行要排 downtime(restart docker 停所有容器);唔建議郁 boot volume(貴+不可逆)、Google Drive 唔適合 Docker data(FUSE latency)
xx:xx MiniMax TTS 充值待辦(⏳ 用戶暫緩)
- MiniMax API key 已入 Infisical
MINIMAX_API_KEY(sk-api-NYbMhL-...,有效,GET /v1/models200 ✅) - 但帳戶餘額 0(
insufficient balance,1008)——MiniMax 係 pay-as-you-go,trial credits 已過期/冇派 - 最低充值 $25(用戶話暫時唔理,過幾日再搞)
- 充值後流程:
platform.minimax.io/billing→ top up → 我跑/tmp/minimax_tts.py合成粵語 demo(Speech-02-HD,POST /v1/t2a_v2,voice_list 試過 404 要再確認)→ 用戶試聽 → 啱就接入 edge-tts-bridge(OpenAI 兼容,改 base URL 或加 provider) - 測試 script:
/tmp/minimax_tts.py(接受 voice_id 參數,輸出 /tmp/minimax_.mp3)
08:00 Azure STT 完成 🎉
- Azure whisper STT 端到端跑通:subscription ready 後開咗 rg-qwenpaw → provider register(Microsoft.CognitiveServices)→ Azure OpenAI resource
- 關鍵教訓:whisper Standard 只支援特定 region(eastus/japaneast/eastasia 都唔得!):
eastus2、northcentralus、norwayeast、swedencentral、switzerlandnorth、westeurope、southindia、uaenorth - 最終用 southindia(南印度,離香港近):resource
qwenpaw-openai-si+ deploymentwhisper(Standard, capacity 1) - Endpoint
https://qwenpaw-openai-si-348d7.openai.azure.com/;key 已存 InfisicalAZURE_OPENAI_ENDPOINT/AZURE_OPENAI_KEY - 實測:Edge-TTS 生成粵語 →
POST /openai/deployments/whisper/audio/transcriptions?api-version=2025-04-01-preview+api-keyheader + multipartfile/model=whisper→ 準確轉錄「今日天氣幾好,我想去飲茶。」✅ - 清理:japaneast/eastus 兩個錯 region resource 已刪;az-login container 保留(以後管理 Azure 用,login token ~90 日有效)
- 下一步:用戶可以喺 QwenPaw 設定入面用呢個 OpenAI 兼容 STT endpoint(base URL = endpoint +
/openai/deployments/whisper,或直接指 endpoint)
Azure GPT-4o 接入 LiteLLM(2026-08-07)
- 用戶確認開 GPT-4o + 接入 LiteLLM
- southindia(qwenpaw-openai-si)冇 gpt-4o quota(Standard + GlobalStandard 都係 0);swedencentral(benho-3537-resource)有 Standard gpt-4o 50K TPM
- deployment
gpt-4o(2024-11-20, Standard 50)開喺 benho-3537-resource,Succeeded - key 存 Infisical AZURE_OPENAI_GPT4O_KEY / AZURE_OPENAI_GPT4O_ENDPOINT
- LiteLLM model
azure-gpt-4o(azure/gpt-4o, api_version 2024-10-21, api_base benho-3537 endpoint) - 實測 chat completion ✅(回覆「你好!冇問題,通嘅!」)
- ⚠️ 教訓:fastmcp litellm_model_update 對 DB model 有 bug(清空 api_key、報 model not found)→ 用 REST POST /model/delete + /model/new 完整 params 修復
Azure GPT-4o 接入三個服務(試用)
- 新 LiteLLM virtual key
qwenpaw-gpt4o:sk-wFugLH1i-5sm3Espa8rgRQ(InfisicalLITELLM_KEY_qwenpaw-gpt4o;models: azure-gpt-4o + deepseek-first + free-first fallback) - azure-gpt-4o model 加
drop_params: true(LiteLLM,model_id ef95a51f-efdc-472d-bb67-aeae8eeee72b)——Hermes 發 reasoning_effort 會被 Azure 400 拒 - QwenPaw:新 provider
litellm-azure-gpt4o(base_url http://litellm:4000/v1 + 新 key)+ active_model.json 改{provider_id: litellm-azure-gpt4o, model: azure-gpt-4o}→ restart 後生效 - Hermes:config.yaml
model.default: azure-gpt-4o+ api_key 新 key +max_tokens: 16384(Azure gpt-4o 上限;Hermes default 65536 會被拒)→ restart ✅ 實測正常 - Pydantic AI(stack 59):env
MODEL=openai-chat:azure-gpt-4o+OPENAI_API_KEY=新 key;⚠️openai:prefix 用 Responses API(Azure 404),必須openai-chat:;⚠️ use_mcp default 改 False(server.py,Azure gpt-4o 128 tools 上限 vs fastmcp 171 tools)→ deploy ✅ 實測正常 - **🔴 Azure 0.19(14 次 call)——⚠️ QwenPaw 全量轉 GPT-4o 每 turn ~200,監控必須
Azure 用量自動切換 DeepSeek 機制(08:56 HKT)
用戶要求:Azure $200 credit 逼近上限時全部服務自動轉返 DeepSeek。
現況確認:只有 Hermes default 用緊 azure-gpt-4o(config.yaml);QwenPaw agent.json active_model 仍係 litellm-deepseek-first、Pydantic AI compose MODEL=openai:deepseek-first(default 都係 DeepSeek)。
已做:
- host script
/home/opc/scripts/azure-switch-to-deepseek.sh(53 行,--back恢復;lock/home/opc/scripts/.azure-switched-to-ds.lock防重複;log/home/opc/scripts/azure-switch.log)。SSH heredoc 寫入失敗(file 空)→ 改用本地 write_file + base64 傳輸成功。 - n8n workflow
5PCjZpiYEgvyZHgX(Azure GPT-4o Credit Monitor)升級:Check Azure Credit → Decision Code(used_pct>=90 || days_left<=0)→ IF → true 分支(Switch SSH → Switch Notice → Send Switch Telegram)+ false 分支(原 Format & Notify → Send Telegram)。已 publish(activeVersion dca968e2)。 - 測試:第一次執行發現 Format & Notify bug(Decision 已 parse,item 冇 stdout → 0.1858 / 199.81 到期 2026-09-06(30日)」。
- MEMORY.md 已更新(Azure GPT-4o section)。
threshold:used_pct >= 90($180)或 days_left <= 0(credit 過期後唔好再用 GPT-4o 避免開始收費)。
- memory/2026-08-07/qwenpaw-backup-google-drive.md name: qwenpaw-backup-google-drive description: QwenPaw 自動 backup 方案定案:n8n webhook/Nextcloud WebDAV 上傳 1.2GB zip 全部被 CF 100MB limit 擋(413 Payload Too Large)→ 改用 rclone 直傳 Google Drive。做法:解密 n8n Google Drive credential(acAXHjx0UNIgef4m,OpenSSL salted AES + n8n encryption key 8mejbr2lebnZArRjLvfxRPmqph4SEgms)攞 client_id/secret/refresh_token → 寫入 rclone 容器 /config/rclone/rclone.conf [google-drive] remote → rclone copy 上傳成功(1,198,921,044 bytes → google-drive:QwenPaw Backup)。script
/home/opc/scripts/qwenpaw-backup.sh(每週日 03:00 crontab,KEEP=4)。⚠️ Google OAuth testing app refresh token 7 日過期(7/31 授權、8/7 到期 invalid_grant)→ 用戶 8/7 喺 n8n reconnect Google Drive credential(帳戶 shinggo)後解密更新成功;下次到期約 8/14。R2 backup 現有 key 冇 CreateBucket 權限(rclone copy R2 失敗 AccessDenied,R2 只限 alist bucket)。
ERPNext /desk 空白修復完成(22:05 HKT,接續 Telegram 調查)
- Root cause:
tabWorkspacename=“Home” 內容第一個 block 係{"type":"onboarding","data":{"onboarding_name":"Home"}},但tabModule Onboarding冇「Home」record(只有 9 個:Accounting/Asset/Buying/Manufacturing/Organization/Projects/Selling/Stock/Subcontracting)→ 前端Module Onboarding Home not found→ workspace 初始化 crash →/desk桌面空白 + 殘留{}+ SPA 導航 render 唔到。 - 修復:MariaDB 直接移除 Home workspace content 第一個 onboarding block(13→12 blocks),之後
/desk正常。 - 驗證(browser 實測):
/desk:21 desktop icons 正常渲染、body 冇{}殘留、frappe.workspaces正常(home/build/invoicing/buying/financial-reports…)、toast/error 0。/desk/home:Your Shortcuts(Item/Customer/Supplier/Sales Invoice)+ Reports & Masters(Accounting/Stock/CRM/Data Import)全部正常,冇 onboarding error。- 容器 6 個全部 running(frontend .69/backend .68/websocket .70/scheduler .72/worker .71/mariadb .67 healthy)。
- 殘留觀察:
tabDesktop Icon有 35 個 legacy records(v13 舊式 icons,link_type=Workspace Sidebar)——唔影響渲染(正常 load 入 boot.desktop_icons 34 個,desktop grid 過濾後顯示 21),唔需要清理。 - 教訓:ERPNext
/desk空白第一時間查 Home workspace content 有冇onboardingblock 指住唔存在嘅 Module Onboarding;移除 block 唔使 restart,reload 即生效。