20260727 會議記錄
:::info
上週重點整理(2026-07-21 ~ 2026-07-26)
GitHub 活動
cofacts/ai
- #115 Separate Langfuse traces by environment (local/preview/production)(merged 2026-07-22)
[!Caution] 疑似忘記 deploy or set environment,production trace 顯示為
default,回去驗一下 - #120 docs: agent-ready docs/ tree with architecture overview + decision records(opened 2026-07-23 / merged 2026-07-25)
- #119 fix: let proofreaders reliably see the draft and message (#117)(opened 2026-07-22,draft 待 rebase)
- #118 Pre-fetch verifier URLs via url-resolver to stop source hallucination(opened 2026-07-22,draft 待 rebase)
[!Caution] 沒有把 url-resolver deploy 到 cloudrun sidecar 裡,要補做,不然不能在 preview & staging 環境上面測試
cofacts/url-resolver
- #72 feat: add Cloudflare browser backend and bound Puppeteer resource usage(merged 2026-07-22)
- release/2026-07-22(released 2026-07-22)
[!Caution] orz 確認一下有沒有 deploy to production 先跑 local 不用接 cloudflare
benchmark
- https://docs.google.com/spreadsheets/d/115rDeTc-4Wnih5SlQpZsbQ4hpjIVo0xt/edit?gid=1755570366#gid=1755570366
detail
- https://hackmd.io/978W_khJQBW20H6ptJc_1A?view
- markdown for ai 因為只有 api doc 類的網站有支援,不太適用 cofacts 使用情境
cofacts/kb
- #12 doc: add 20260721 meeting notes(merged 2026-07-22)
- #13 docs: migrate cofacts.ai auth design doc to cofacts/ai as an MADR(opened 2026-07-23 / closed 未 merge,內容併入 cofacts/ai #120)
cofacts/opendata
- #34 Kaggle 資料集上傳與授權評估(issue opened 2026-07-21)
cofacts/takedowns
- #307 Takedown spam user 快樂快樂、#308 Takedown spam user 眇眇(2026-07-21 opened + closed)
Discord 重點討論
general
@bil:嗨嗨我想請問,下週的周會改到 07/27(一)會是可以的嗎? @mrorz:收到,已調整完畢 @mrorz:https://cofacts.tw/article/3r95ela9vhf51 這篇在 LINE 查詢數這麼高,也尚未回應,為啥 reply request 數量才 4 個|同一人重複查詢這麼多次嗎 @@ @mrorz:結論:是因為他是 FB 連結、再加上我們群組裡面做「visit」的比對較寬鬆,所以任何 FB 連結可能都會被視為很接近
dev
@MrOrz:上週更新了(忘記在開會時講)結果 observation v2 API 其實是要啟動 v4 observation 才適用的。v4 observation 其實是滿大的變動,要把現有 trace 的欄位也寫到 observation 去,藉此省去昂貴的 join operation,我們目前還沒使用。所以即使我們 Langfuse 已經更新到新版了,我們用 langfuse cli 分析的時候,他還是會抱怨 observation v2 API 無效 ._. @MrOrz:更新一下 cofacts/ai 的部分。現在是 cofacts/ai 建構整個系統的時候,過去幾個月其實做了不少設計選擇……這一層一層的實作是為何要這樣做,資訊可能散佈在 PR description、comment 等地方。其實這些決策,如果能在實作的當下就用文件記下來,最能夠記錄設計選擇的脈絡,供未來參考。因此,我開了這個 PR: https://github.com/cofacts/ai/pull/120 ——把之前寫在 kb 的、關於 cofacts/ai 的 design doc(只有 authentication 一則)和之前的大 PR,放到 docs/decisions 裡面,用 Markdown Architecture Decision Record 的格式 @MrOrz:PR120 的文件 review 過了,大家也可以看一看唷~ 這樣回頭看,cofacts/ai 也確實在技術上幾經更迭呢。這個應該會對寫報告滿有幫助的(可以讓 claude 去掃);然後開發的時候,有了這些文件,會比較知道為何 cofacts/ai 選擇了 vertex ai 等脈絡,應該能讓 coding agent 在做技術選擇時能考慮過往決策歷史 @MrOrz:這個 PR120 沒問題的話我打算 merge 唷。我還要 rebase 現有的兩個 draft PR,那兩個 draft PR 我覺得都大到需要寫 ADR
上週待辦
url-resolver
- nonumpa benchmark 與 normalize flow(考慮 merge parseMeta / extractStatic)
- beta-ai 實驗:分析擋 bot 情況能做到哪些地步,供 COSCUP 分享
- https://github.com/cofacts/url-resolver/pull/72
COSCUP
- 完成 presentation:https://docs.google.com/presentation/d/1mfEZTcyd5f6gVCYNGQs198Kj6sdamXdHu1U00vKbedo/edit
AI 修正
- 追蹤並修正影音訊息處理時,模型產生幻覺(腦補)或
0:00:00時間戳的問題 - 為 AI writer prompt 新增長度與精簡準則
- 驗證 AI pipeline 有時會聲稱有呼叫 proofreader 但沒呼叫的問題
GGM: 目前沒有更新,可以看的時候會貼 DC cfacts-ai dev channel
cofacts.ai
- writer 不會傳 context 給 proofreader –> track in https://github.com/cofacts/ai/issues/117
- URL resolver 整合(等 url-resolver 完成後討論如何當 tool / verifier callback 先 resolve) –> Track in PR #118
- markdown 回應:研究 strip markdown 或在 API 層 format(GHF markdown 存、輸出時選 text / markdown)
[!Warning] 從上週的討論紀錄開成 github issue 追蹤即可
- 出處幻覺:評估補上「出處一致性」LLM-as-judge score,量化發生率(見 20260609 提議)
- GGM 在做
- 請子龍多報價 accessibility 部分(顏色對比度、按鈕最小大小需在設計階段納入)
小聚(08/16)
- 食物:沒有
- 場地:spshfu 603(30 人教室;
Plan B:NPO Hub 202, 8/23)- 有電梯,沒有鎖樓下
- 社區大學 vibe
- 六日也有其他人上課,有機會認識長輩
- 網路還行,有密碼,應該比青職基地穩定
[!Note] TODO
- 確定借這間,預算 OK
- 記得 8 月初轉帳
- 研究場地的延長線與插座
- 活動日兩週前 (8/2) 可以宣傳:A4 紙放在紅龍裡
- 投放目標:北北桃(推播日: 8/5)
[!Note] 下週討論
- KKTIX: https://cofacts.kktix.cc/events/cofactseditor54
- 記得帶:貼紙、不太環保杯 (bil)
- LINE 文案
- VOOM 發文
- FB 發文
信件
- AI reply –> 我們有在做 cofacts.ai,可以來 COSCUP 聊
- API –> 不用 API key
Cofacts 正式環境狀態檢查(2026-07-14 ~ 2026-07-26)
1. GCE 伺服器 (cofacts-prod)
注:歷史資料實際涵蓋 07-18~07-26(9 天),07-14~07-17 因監控取樣視窗限制未回傳每日聚合值。
| 日期 | CPU (min|avg|p95|max) | Mem (min|avg|p95|max) | Swap (min|avg|p95|max) |
|---|---|---|---|
| 07-18 | 10.24% | 20.14% | 25.81% | 32.66% | 62.44% | 65.74% | 68.67% | 71.12% | 39.74% | 40.94% | 42.27% | 42.82% |
| 07-19 | 11.12% | 28.27% | 64.68% | 75.70% | 62.48% | 66.62% | 71.39% | 80.45% | 37.65% | 41.00% | 44.29% | 45.49% |
| 07-20 | 8.65% | 41.11% | 72.12% | 80.44% | 62.09% | 68.35% | 74.53% | 78.42% | 32.54% | 36.23% | 42.89% | 43.54% |
| 07-21 | 11.21% | 52.62% | 75.04% | 86.78% | 62.19% | 69.21% | 74.99% | 79.54% | 39.70% | 40.71% | 42.31% | 42.79% |
| 07-22 | 9.03% | 29.71% | 42.68% | 73.85% | 62.84% | 65.74% | 68.68% | 70.95% | 37.88% | 40.46% | 42.60% | 44.79% |
| 07-23 | 7.48% | 25.46% | 39.42% | 43.05% | 62.26% | 65.07% | 67.49% | 69.72% | 40.12% | 42.03% | 43.31% | 44.08% |
| 07-24 | 13.88% | 23.84% | 32.39% | 59.31% | 62.09% | 65.30% | 68.07% | 73.80% | 40.96% | 43.22% | 45.94% | 47.71% |
| 07-25 | 10.98% | 16.57% | 21.40% | 41.97% | 62.59% | 65.56% | 67.39% | 85.43% | 42.35% | 44.32% | 46.52% | 46.58% |
| 07-26 | 17.41% | 24.33% | 31.13% | 37.26% | 63.42% | 66.44% | 68.08% | 84.93% | 41.58% | 43.04% | 46.04% | 47.63% |
目前即時狀態:已連續運行 80 天未重啟(load avg 1.14/1.50/1.49);Mem 20Gi/31Gi(約 65%,與均值一致);Swap 1.7Gi/4Gi(約 43%,與均值一致);Disk 52G/67G(77%)。
觀察:07-19~07-22 出現明顯的 CPU/Mem 尖峰(07-21 CPU 均值衝到 52.62%、max 86.78%),與 process 層資料交叉比對,是 Elasticsearch (java) 與 node server.js(rumors-api)同時飆高造成(見下方 §3)。這與 [[project_transcript_outage_202607]] 記錄中「07-19/07-20 尖峰成因待查」是同一起事件,目前仍未有定論,不是本次新發現。07-25/26 出現 Mem max 85%、84% 的短暫尖峰但未反映在均值/p95,應是瞬間突波,非持續性問題。
2. Cloud Run 服務狀態
所有 11 個服務皆為 Serving 狀態,無異常。
| 服務 | Normal Range (p50) | Stability (p95/p99) | 觀察 |
|---|---|---|---|
| site-tw | CPU 0.03~0.38 vCPU(隨流量波動,週間較高) | p99 多日精準落在 1.0118(疑似 CPU 配額上限) | CPU 經常打到分配上限,有 throttling 風險 |
| site-tw (mem) | p50 0.76~0.81 GiB | p95 固定 0.981GiB,p99 多日精準落在 1.0118 GiB | 記憶體也經常頂到上限,建議評估調高配置 |
| cofacts-ai | CPU p50 極低(~0.015,幾乎閒置) | p99 07-19 出現單日尖峰(0.469,為期間最高) | 07-19 有一次性負載尖峰,之後回穩 |
| site-staging-tw/ja/en | CPU/Mem 均低且平穩 | 偶有 p99 頂到 ~1.01 上限(與 site-tw 同款配置) | Staging 環境同樣有配額頂格現象,但因流量低影響不大 |
| line-bot-en/ja, dev-line-bot | CPU/Mem 皆極低且平穩 | 無異常波動 | 正常,無需關注 |
⚠️ 重點發現:site-tw、site-staging-tw/ja/en 這幾個服務的 CPU 與 Memory p99 在多個日期都精準落在同一個數值(~1.0118),這通常代表指標已達到 Cloud Run 容器的資源配額上限(而非真實用量),意味著實際負載可能被截斷/節流。建議之後檢查這幾個服務的 CPU/Memory 配置上限是否需要調高,尤其 site-tw 是主要對外服務。
3. GCE Process 層級排名(按尖峰用量)
記憶體 (RSS) Top 消耗者:
| Process | 平均/峰值 | 穩定度 | 備註 |
|---|---|---|---|
Elasticsearch (java) |
~19.2GB / 19.8GB | 極穩定(std ~100MB) | 常駐最大記憶體用戶,07-21 峰值略升(19.67GB) |
node /srv/www/server.js |
293~652MB / 2.58GB | 07-19~07-21 明顯不穩(std 達 225) | 與上述 GCE CPU/Mem 尖峰同一時段,07-20 衝到 2.58GB |
node build/index.js |
~145MB / 857MB | 平穩(std ~5-8) | SSR 前端,偶有短暫突波但均值穩定 |
python main.py(cofacts-ai) |
18~140MB / 323MB | 波動較大(std 最高 79) | [[project_cofacts_ai_python]] 已知此服務用量本就不穩定 |
CPU Top 消耗者:Elasticsearch (java) 全期最高,其次是 node server.js,兩者皆在 07-19~07-22 出現同步尖峰(呼應 §1 的 GCE CPU 異常),其餘為零星單日出現的 Puppeteer headless chrome render process(截圖/爬取任務所致,一次性,非持續問題)。
小結
- 系統整體穩定,GCE 與多數 Cloud Run 服務均在正常範圍內。
- 07-19~07-22 的 GCE CPU/Mem 尖峰是已知但尚未查明根因的既有問題([[project_transcript_outage_202607]]),本次未有新進展。
- 新發現:
site-tw及部分 staging 服務的 Cloud Run CPU/Memory p99 經常頂到配額上限,建議後續評估是否需調高資源配置以避免 throttling。