對話摘要 2026-08-05
description: 6 note(s) today.
name: ‘2026-08-05’
- memory/2026-08-05/context-management-config.md name: context-management-config description: 用戶批准三項 context 管理措施並全部完成:(1) 大型任務改用獨立 session(spawn_subagent / background task),已記入 MEMORY.md 鐵律;(2) 大型任務完成後提醒用戶 /compact,同一鐵律;(3) 壓縮參數調整——compact_threshold_ratio 0.8→0.7、reserve_threshold_ratio 0.1→0.05、pruning_recent_msg_max_bytes 50000→30000,並發現 tool_output_token_cap 已棄用改用 bytes 版。最後一步需用戶在對話打 /restart 令新 config 生效(CLI 無法 zero-downtime reload)。背景:Internal error 反覆出現,根因係 group 長 session context 爆(131114>131072,26000+ turns 累積)。
- memory/2026-08-05/daily-ops-notes.md name: daily-ops-notes description: 2026-08-05 每日維運記錄:①AdGuard clients records 維護——新增 14 個新容器 IP(55→69),刪除 infisical-db/nextcloud-db 兩個真刪除容器(69→67);政策:暫停容器(open-webui/openhands/openserp/ollama/cadvisor)records 唔清、新容器部署後必須加 IP(已入 MEMORY.md)。②「對話摘要自動入 FNS → OLW wiki」流程:cron 4f65ed75 每日 05:45 讀前一日 memory 筆記寫入 FNS raw/,OLW 06:30 pull 處理;8-4 摘要已寫入;FNS_TOKEN 入 Infisical(54 secrets);教訓:cron 描述 backtick 會被 shell 執行。③Telegram 傳文件/相片:QwenPaw 2.0.1 支援收件(自動下載到 media/),文件可讀,相片因 DeepSeek 無 vision 睇唔到內容。④Codex remote-control 配對(進行中):最新配對碼 Y53P-S9HE(10 分鐘有效),下一步睇 server 有冇收到綁定事件,冇就轉桌面版 bridge。⑤Swap 滿處理:✅ 步驟 1 清 swap 完成(4.0G→0.0Ki),available RAM 7.1G→3.8G(暫時性,swap 內容搬返 RAM);用戶 SSH 失敗(Permission denied)發現已在 host root console 唔使 SSH;✅ AdGuardHome 記憶體優化完成(958→242MiB,慳 ~720MB):根因係訂閱過多唔係設定錯誤——停用 HaGeZi 43MB + 5-whys 15.6MB + 5 個重複 malware/phishing list(Scam/ShadowWhisperer/Stalkerware/Big List/uBlock Badware),querylog 30d→7d,剩 16 list 過濾能力不變;下一步重啟 litellm(2.6G 含 1.5G Prisma engine)慳 ~2G,之後全部容器加 mem_limit、swapfile 4G→8G。
- memory/2026-08-05/litellm-memory-monitor-n8n.md name: litellm-memory-monitor-n8n description: n8n 定時監控 litellm 記憶體 workflow 已上線(零 LLM):每 30 分鐘 SSH 讀 docker stats → 記錄 host /home/opc/litellm/mem.log(每行 timestamp+用量),超過 3.5GB(mem_limit 4GB 的 87.5%)→ Telegram 警報(Telegram (shinggo) credential、appendAttribution:false、tag QwenPaw、已 publish)。實測 1.29GB/4GB (32%) 正常。途中教訓:(1) 此環境 docker inspect 不返回 MemoryStats(新版 daemon 行為,.State.MemoryStats.Usage 不存在),須用 docker stats;(2) tee 把 timestamp 一齊輸出會污染 parse,Code node 用正則從 stdout 抽出 memusage。背景:litellm 早前已加 mem_limit 4GB 防止 Prisma 無限膨脹。
- memory/2026-08-05/memory-slimming-archive-20260805.md
- memory/2026-08-05/oracle-infra-ops-log.md name: oracle-infra-ops-log description: Oracle host (benhoweb) 基礎設施運維日誌 2026-08-05:①Infisical(infisical.benhoweb.com)已棄用 API keys,改用 Machine Identity(UI 開 identity
agent-proxy、Universal Auth、暫時 Admin role),等用戶貼返 Client ID/Secret 後續部署 Agent Proxy 到 .64 + Hermes 加 HTTPS_PROXY;Hermes 已確認完全正常(internal error 係 turn 爆,非 Hermes 問題)。②AdGuard DoH (443) 正常(返 200/dns-message),DoT/QUIC (853) 因 CF Tunnel 只 carry HTTP(S)/WS 外面必 fail,用返 https://doh.benhoweb.com/dns-query。③WireGuard 連唔上(ERR_NETWORK_CHANGED):已排除 IPv6 根因(已刪 ::/0,server IPv4 only),最大嫌疑係 Intra + WireGuard 雙 VPN 互搶(Android 一個 VPN slot)→ Force stop Intra,未確認結果。④QwenPaw token 監控:TUI 狀態欄 tok↑↓、Web Console、get_token_usage 係實際,/history 係估算。⑤Codex Remote 配對成功(fresh code ZA9J-LNYR,host 3ba6b1a866a7,env env_e_6a72299a),daemon 喺 qwenpaw 容器重啟後要再 codex remote-control start;⚠️ remote 唔支援第三方 model(deepseek-v4-flash 報錯)必須用官方 gpt-5.x。⑥sshwifty Web SSH 已部署完成:https://web.benhoweb.com(CF Tunnel ingress v78 + Access Authentik 302 生效 + DNS CNAME + list.benhoweb.com 收錄),容器 sshwifty @ 172.21.0.73(Dockhand stack 67,compose 收編 GitHub,secrets 入 Infisical,.env.dockhand 注入成功);AdGuard clients 已有 sshwifty record(172.21.0.73、use_global_settings: true);專用 key 喺 /home/opc/.ssh/sshwifty(opc 身份生成,已加 authorized_keys);⚠️ 兩層認證:Auth Key=共享金鑰 4u8o2ptFNFyzFAhjbO4pgD8H+RZ5zDqY0k2b+wuAUrk=(403 即 Auth Key 貼錯),SSH Key=專用 key;新版 SSH Key 係 file upload 唔俾貼文字要整 key 檔;「Known remotes」係 server 端 preset(用戶冇得自己加,手動連線喺 Connector tab),已加 preset「Oracle Host」(172.21.0.1:22 / opc / Private Key)並 deploy;preset 明文傳 browser 唔可放 secret;教訓:Dockhand 建新 stack 要 UPDATE stack_environment_variables + git_stacks.environment_id 先會注入 env;關 port 22 未做(逃生門方案待辦)。⑦OCI MEK 主加密金鑰(Always Free:1 Vault + 最多 20 個金鑰版本,FIPS 140-2 L3 HSM)五大場景:CMK 加密 OCI 服務、合規(PCI-DSS 等)、BYOK、KMS API 信封加密、金鑰輪換;結論除非合規否則唔值得轉 CMK(Oracle-managed 已免費安全);⚠️ 刪/disable key 所有加密資料(含 boot volume)永久鎖死冇 recovery——要 disable 唔好 delete。⑧OCI Vault Secrets(免費 150 額度):場景=Instance Principal 直接讀取、OCI Functions 自動輪換、集中存 Oracle credential、cert 管理、版本化合規;已有 Infisical(~54 secrets)+Vaultwarden,唯一加分位係 OCI 原生集成,唔建議搬遷。⑨Webhook Forwarder Worker 已上線:https://webhook-forwarder.shinggo.workers.dev,routes POST /generic(JSON 原樣推 Telegram 私訊)、/github(自動格式化)、/ntfy(header 揀 topic)、/health;所有 POST 帶 X-Webhook-Secret: 6929db220db47f68b885da32f3a88022;bot @n8n_shinggo_bot chat 619760664;4 secrets(bot token/chat id/webhook secret/ntfy token);新 CF token(cfut_…)入 Infisical CLOUDFLARE_API_TOKEN_WORKERS;部署教訓:module multipart 失敗轉 service worker 格式先成功;error 1042 係 deployment propagation 未完成;n8n Telegram credential 係 crypto-js OpenSSL 格式(U2FsdGVkX1)要寫 script 解密;可再加:GITHUB_SECRET 簽名驗證 / custom domain(webhook.benhoweb.com)/ n8n 直接用嚟發 Telegram 通知。⑩n8n 自動更新管道已上線:n8n check 到更新自動觸發 QwenPaw 執行更新(QwenPaw REST API POST /api/console/chat,env 登入密碼 021758ab 已改過,permanent token 已入 Infisical,n8n stack id 51,每日 09:00 check 到新版 → 通知用戶 + call API → 自動 sync/rebuild/deploy/驗證 → 完成通知),覆蓋 FastMCP、OLW、Alist(自動重 build lrcfix custom image,image 已係 lrcfix-20260805)、Crawl4AI;修正 Alist pinned v3.62.0 false positive bug(改返 v3.63.0)+ jsonBody 語法;教訓:n8n workflow Code node 有兩層,更新 pinned 要連實際執行 jsCode 一齊改。⑪Alist→PikPak error(need verify Tencent captcha 風控,refresh_token 失效):已用瀏覽器登入(shinggo@ymail.com)攞新 token os.qF0P1xXjjGpuk_ccH6AyUcJkcQdRp-OzlcU4aR1YbaggsVHh,待更新 Alist 配置(token_url_source_url=https://user.mypikpak.com/api/v2/captcha__v2__login、platform android、driver Upload);但第一次 captcha 易過後,同一 IP 短時間內反覆登入(Alist/OpenList/瀏覽器)+ headless 指紋觸發風控升級做「Select in order」地獄難度(一次性 token、vision model 估 target 錯率高)→ 已設今晚 23:00(HKT)一次性自動重試(cron job 6b781656,用戶指定避開 09:00-18:00):登入攞新 token → 更新 Alist+OpenList → 驗證 /Pikpak,10 分鐘過唔到即報告,結果自動通知;官方建議 captcha.Auto + 緩存策略 + gRPC IO 減風控。⑫DeepSeek V4 Pro/Flash 純文字冇 vision(官方 API 只文字功能,LiteLLM deepseek-v4-pro 都 chat-only 餵圖報錯);睇圖用 gemini/gemini-3.1-flash-lite(已喺 LiteLLM:supports_vision、credential Gemini - LiteLLM、free-first router 成員,免費 1M context 支援 vision/PDF/audio)/ vision-first / nvidia/meta/llama-3.2-90b-vision-instruct;今晚 23:00 captcha 用 gemini 睇圖認 target。⑬erp.benhoweb.com ERR_QUIC_PROTOCOL_ERROR 調查完成:ERPNext 容器全 running、內部 frontend 172.21.0.69:8080 HTTP 200、CF Tunnel healthy(4 條連接)、CF edge 302 正常——伺服器冇事;根因係 CF 網站 alt-svc h3 廣告令瀏覽器用 QUIC(UDP 443) 但網絡封 UDP 443(ISP/router/VPN)→ 建議 hard reload(Ctrl+Shift+R/無痕)→ chrome://flags/#enable-quic 關 QUIC → 手機 4G/5G 換網絡測;可選喺 CF 關 HTTP/3(一般建議淨係關瀏覽器 QUIC)
- memory/2026-08-05/wiki3-quartz-alias-redirect-loop-fix.md name: wiki3-quartz-alias-redirect-loop-fix description: 2026-08-05 修復 wiki3 (wiki3.benhoweb.com)「load 空氣」問題:Quartz 嘅 @quartz-community/alias-redirects 插件會為 frontmatter aliases 生成 redirect stub,alias slugify 後同檔名 slug 撞名(例:self-host-obsidian-方法.md 嘅 alias「self-host obsidian 方法」)導致 stub 覆蓋主文章 → 無限 reload loop。全站掃描發現 224 個 stub、42 個死循環頁(10 篇主文章被覆蓋 + 32 個 alias 互鏈 loop),96 篇文中只有 73 個正常 HTML。治本方法:disable 咗 alias-redirects 插件(因為 normalize_wikilinks.py 已將所有 wikilinks 對齊真實 slug,alias 已無用途)→ 重新 build → stub 歸零、98 個 HTML 全部正常,部署 wiki3 後驗證用戶報嘅 URL 及其餘 9 個被覆蓋頁面(homgpage 加天氣、Infisical 詳細介紹、Windows Copilot API 等)全部正常。剩餘問題:CF edge cache 喺 custom domain 上仍可能 serve 舊 stub(例 /litellm-proxy),CF token 無 cache purge 權限,cache 會自然過期;強制刷新或無痕瀏覽可即時驗證。
- telegram name: hermes-telegram-fixed description: 2026-08-05 Hermes Telegram 修復完成:用戶實測 @hermes_agent_shinggo_bot 已能收到 message 並正常回應(inbound polling + LLM 回覆都通)。之前 internal error 根因=LiteLLM free-first 走 CF tunnel 出街被 Access 擋;改 NO_PROXY 排除 Telegram + AGENT_PROXY 走 Infisical Agent Proxy 後正常。
- memory/2026-08-05/llmwiki-three-sites.md name: llmwiki-three-sites description: LLM Wiki 三站 PoC 完成(MkDocs Material/VitePress/Quartz 三個前端,domain wiki1/2/3.benhoweb.com,CF Pages 部署,冇 Access 保護):96 篇 OLW published 文章全部上線,wikilinks/tags/graph 三站驗證通過;教訓——wrangler pages deploy 要加 —branch main 先入 production、VitePress srcDir/ignoreDeadLinks 同 markdown-it inline rule 寫法、Quartz npm install 要 —include=dev 先有 esbuild、MkDocs 要 docs/index.md+tags.md;部署 script 放 scripts/llmwiki/deploy.sh,內容提取 script 喺 host /home/opc/llmwiki-sites/extract_content.py。
wiki3 load 空氣修復(Quartz alias-redirects 撞名 bug)
- 用戶報
https://wiki3.benhoweb.com/self-host-obsidian-方法 load 空氣
- 根因:
@quartz-community/alias-redirects 插件為 frontmatter aliases 生成 <meta refresh> redirect stub;self-host obsidian 方法(空格版 alias)slugify 後同檔名 slug 撞名 → stub 覆蓋主文章 HTML → 無限 reload loop
- 全站掃描:224 個 stub HTML、42 個 chain loop(10 個主文章被覆蓋 + 32 個 alias 互鏈如 litellm→litellm-router→litellm)
- 修復:
quartz.config.yaml disable alias-redirects(wikilinks 已 normalize 成真 slug,alias 無用途)→ rebuild → stub 0、98 HTML 全正常
- 驗證:用戶 URL + 9 個 loop stub 全返回正確 title;全新 browser session 顯示正常
- 已知:CF edge cache 保留舊 stub 一陣(token 冇 purge 權限),cache-buster query 驗證 404 正確
Alist 升級 v3.63.0(用戶要求)
- 用戶指示更新 Alist 去 v3.63.0(n8n Update Check 早前通知有更新)。
- 流程(沿用 2026-08-02 快速 fix 模式):
/tmp/alist-src git fetch + checkout v3.63.0(commit 843d9dc8,Merge PR #9605)
- 確認 v3.63.0 原生冇 lrcfix(
drivers/netease_music/driver.go Get() 仍直接 getLyricObj(lrc) 冇 nil check)→ working tree 保留上次 +3 lines patch(nil → errs.ObjectNotFound)
- host build
alist-custom:lrcfix-20260805(log /tmp/alist_build_v3630.log;Version v3.63.0 / WebVersion 3.63.0 / Go 1.26.5 arm64)✅
- GitHub compose
alist/docker-compose.yml image 改 alist-custom:lrcfix-20260805(commit aa0e060;push 前要 pull —rebase,remote 有 6dd178b)
- Dockhand stack 13 sync + deploy(job 192a7fc0)→ 容器 v3.63.0 運行中 ✅
- 驗證:fastmcp alist_list /R2 200 正常;WebDAV PROPFIND 唔存在
.lrc → 404(舊版會 500 panic)、.flac → 404 ✅
- n8n workflow
VTEuEu5hvv3VLOqp(Self-Built Images Update Check)「比較版本」node Alist pinned v3.62.0 → v3.63.0(版本記錄 “Alist pinned → v3.63.0”)避免聽日誤報。
- ⚠️ 教訓:host 直接 curl
http://alist:5244 唔得(host 唔喺 cf_network DNS),要用 IP 172.21.0.43 或入容器;alist 容器冇 curl(用 host curl 打容器 IP)。
自動更新管道上線(18:5x)
- 用戶問「有更新你知唔知?可唔可以自動更新」→ 建立完整自動化:
- n8n Self-Built Images Update Check(VTEuEu5hvv3VLOqp)加「觸發 QwenPaw 自動更新」HTTP node:POST
http://qwenpaw:8088/api/console/chat(Bearer token,session_id auto-update)→ QwenPaw 收到自動執行更新(sync + deploy + 驗證健康 + 通知用戶)
- QwenPaw API 有 auth(QWENPAW_AUTH_ENABLED=true);console password 唔知 → 用
qwenpaw.app.auth.create_token('shinggo', 0) 直接喺容器內生成 permanent token(jwt_secret 自動解密)→ 入 Infisical QWENPAW_API_TOKEN
- ⚠️ n8n Code node 有兩個 jsCode(parameters.jsCode 執行 / parameters.parameters.jsCode 顯示)— 上次 Alist 升級只更新咗內層,外層仲係 v3.62.0 造成 false positive,已修正
- jsonBody expression 初版 syntax error(單引號衝突)→ 改用雙引號 + JSON.stringify
- 實測:API ping ✓、模擬觸發(「收到測試OK」)✓、manual execute workflow success ✓
- 修正埋 workflow pinned:Alist v3.63.0(外層 jsCode)
- MEMORY.md 已加 stack 對應 + Alist lrcfix build 流程
Alist PikPak captcha 修復(繼續,18:5x)
- 用戶之前話 Alist → Pikpak error(need verify captcha),已研究 PR #7024 並登入過 PikPak(captcha 已過),但 session 因 Internal error 中斷。
- 根因:Alist x_storages id=1 用緊舊 refresh_token(
os.qF0P1...)已失效 → 每次 list 觸發 need verify captcha;OpenList 用緊有效 token(os.1edqc...,同 account shinggo@ymail.com,device_id 一樣 17135f24e6f5dc4bfdf62c56e4b0c57a)正常。
- 修復:停 alist →
docker cp alist:/opt/alist/data/data.db → host python3 改 refresh_token 為 OpenList 有效值 + 清空 captcha_token → docker cp 返入去 → start alist。
- 驗證:fastmcp alist_list /Pikpak = 200 OK,17 個資料夾(provider PikPak);OpenList /Pikpak 亦 200 OK。
- ⚠️ 教訓:Alist DB
/opt/docker/alist/data/data.db 係 root-owned(644 root root),opc 直接寫唔到;要 docker cp 出嚟改再放返入去;sqlite3 CLI 容器 image 只有 amd64 版(host 係 arm64)用唔到。