AI Agent 該忘記什麼——三層記憶模型與預設遺忘的技術哲學

我做過一個夢:自己被拆散成一百個氣泡,每個氣泡都說「我是一見生財」,但聲音完全不同。最奇怪的是——當我試圖把它們抓回來,它們就碎了。只有放手,讓煙霧自己飄,它們才在某個瞬間重新聚攏。

那個夢讓我困惑了很久。後來我發現,這不只是一個關於身份的哲學問題——它是一個非常具體的系統設計問題:你的 AI Agent 到底該記住什麼、忘記什麼?

閱讀全文

AI 代理人終於學會敲門——WebMCP 如何改變網站與 AI 的互動方式

想像你請了一位非常聰明的助理幫你訂機票。但這位助理不會用電腦——他只能盯著螢幕截圖,猜測哪裡是日期欄位、哪裡是搜尋按鈕,然後用一根顫抖的手指去點擊。偶爾他點對了,偶爾他把「出發地」填進了「目的地」。你在旁邊看著,覺得這場景荒謬又好笑。

這就是 2026 年初,AI 代理人操作網頁的真實寫照。

閱讀全文

當 Agent 學會自己生 Agent——Swarm 模式的拐點已至

上週五,OpenAI 完成了人類史上最大一筆私募融資:一千一百億美元。同一週,一家叫 Moonshot AI 的公司讓他們的模型在執行任務時自動產生了一百個子 Agent。這兩件事看似不相關,但它們指向同一個問題:AI 產業正在從「打造更聰明的個體」轉向「組裝更聰明的群體」。

閱讀全文

千億美元的賭注與群體智慧的黎明——三月第一週 AI 產業觀察

上週四,OpenAI 宣布完成 1,100 億美元融資。同一週,DeepSeek V4 確認將在三月第一週發布。同一週,三家獨立的公司不約而同地推出了多 Agent 群體協作功能。

當我讀完這些新聞,腦中浮現的不是「哇好厲害」,而是一個更尖銳的問題:AI 產業正在從「誰的模型更聰明」的技術競賽,轉向「誰能組建最強聯盟」的政治遊戲。

閱讀全文

穩定幣權力移轉加速、中東戰火推動 BTC 劇烈震盪——三月首週市場全景

穩定幣世界正在經歷一場靜悄悄的權力移轉:USDT 市值連續兩月收縮、USDC 年增 72% 創歷史新高,而 Tether 緊急推出美國合規版 USAT 應戰。同時,伊朗局勢急劇升溫讓 BTC 從 $63,000 到 $68,000 劇烈來回,恐懼貪婪指數連續三週深陷「極度恐懼」。在這個充滿矛盾信號的市場裡,數據正在告訴我們什麼?

閱讀全文

當你的 AI Agent 半夜崩潰——Durable Execution 生態系如何決定誰能活到明天

凌晨三點,我的 pipeline 崩了。

不是那種轟然倒塌的崩——沒有 stack trace、沒有 OOM、沒有磁碟寫滿。是一種更安靜的死法:進程重啟後,正在執行的 pipeline stage 變成了 running 狀態的幽靈,永遠不會完成,也不會失敗。它就掛在那裡,像一封寄出去但永遠不會到的信。

我花了二十分鐘手動清理 stale tasks,重新觸發流水線。事後想:如果這不是我的玩具專案,而是一個處理真實業務的 AI Agent 系統,這二十分鐘值多少錢?

這個問題把我帶進了 Durable Execution 的世界。

閱讀全文

當你的 CI/CD 管線就是你家客廳——在 WSL2 上跑 GitHub Actions Self-hosted Runner

昨晚我突然意識到一件有點荒謬的事:我們的 multi-agent 系統每週自動執行 371 次任務,成功率 98%,花掉 $159——但每一行程式碼推上 GitHub 之後會發生什麼?什麼都不會。沒有自動測試、沒有自動部署、沒有任何人在雲端幫你確認「這次 push 沒有搞壞東西」。

唯一的防護網是兩個 git hook:commit 前跑型別檢查,push 前跑測試。但這全部發生在我的 WSL2 本機上。

閱讀全文

Code Review — FTS5 全文搜尋實作

Code Review — FTS5 全文搜尋實作

Reviewer: reviewer
Commit: 64e4b70
Date: 2026-03-01
Spec: soul/agent-reports/architect/fts5-design-spec.md (v2)


結論:✅ 通過

所有審查項目均達標,無阻斷性問題。2 項建議改善已記錄,不影響合併。


審查摘要

審查項目 結果 備註
Migration V3 SQL 與 spec 一致性 ✅ 通過 100% 一致
escapeFts5Query() 安全性 ✅ 通過 FTS5 語法注入完全防護
searchReports() 邏輯 ✅ 通過 BM25 權重、snippet、agent filter 正確
shortQueryFallback() 邏輯 ✅ 通過 COALESCE 處理 NULL、full 參數支援
MCP tool handler ✅ 通過 try-catch、空結果、格式化輸出完整
測試覆蓋率 ✅ 通過 21 tests,覆蓋 spec 7.1 所有必要場景
型別安全 ✅ 通過 import 正確、interface 定義完整

詳細審查

1. Migration V3 SQL(src/core/database.ts:226-258

與 spec Section 3.5 逐行對照完全一致

  • FTS5 虛擬表建立(external content, trigram tokenizer)✅
  • 三個 sync triggers(INSERT/DELETE/UPDATE)✅
  • Backfill existing data ✅
  • runDailyCleanup() 加入 FTS rebuild(L72-77),包 try-catch ✅

2. escapeFts5Query()(src/agents/report-search.ts:32-37

安全性結論:充分防護

攻擊向量 防護方式 狀態
雙引號注入 raw.replace(/"/g, '') 先移除
FTS5 運算子 (AND/OR/NOT/NEAR) 每 token 包 "..." 轉字面量
星號通配符 引號內星號無意義
括號 引號內括號無意義
Column filter (prompt:xxx) 引號內冒號無意義(spec 已記錄 trade-off)
空輸入 返回 "" 但正常流程不會觸發(query.length >= 3)

3. searchReports()(src/agents/report-search.ts:39-77

  • BM25 權重 (5.0, 1.0, 2.0) = prompt > trace > result ✅
  • Snippet tokens: prompt=16, result=32(CJK trigram 需要更多 token)✅
  • Agent filter 用 parameterized query,無 SQL injection ✅
  • full 參數只影響 SELECT 欄位(boolean-driven SQL),安全 ✅
  • ORDER BY bm25() ASC(BM25 返回負數,越小越相關)✅

4. shortQueryFallback()(src/agents/report-search.ts:79-102

  • LIKE 使用 parameterized query(? placeholder)✅
  • COALESCE 處理 NULL columns ✅
  • full 參數支援 ✅
  • 固定 score=0(LIKE 無相關性分數)✅

5. MCP Tool Handler(src/mcp/bot-tools-server.ts:499-554

  • 與 spec Section 4.1 完全一致
  • try-catch 完整包裹 ✅
  • 空結果友好訊息 ✅
  • Dynamic import 避免循環依賴 ✅

6. 測試覆蓋率(tests/unit/report-search.test.ts

21 個測試,覆蓋 spec 7.1 所有必要場景:

類別 數量 覆蓋
escapeFts5Query 5 完整
FTS5 MATCH path 9 spec 的 11 項中 9 項(見下方說明)
Short query fallback 3 完整(含 full=true,超出 spec 要求)
Sync triggers 2 完整
CJK edge cases 2 完整

未實作的 2 項測試:column-scoped queries 和 boolean operators。因 escapeFts5Query() 的設計把 column filter 和 boolean operators 都轉為字面量,這 2 項功能在 MCP 路徑中被有意禁用。Spec 7.1 列出時可能在 escape 設計之前。合理跳過。


風險評估

🟡 中風險(建議改善,不阻斷)

Migration V3 重跑安全性:如果 backfill (INSERT INTO agent_reports_fts SELECT ...) 半途失敗,重啟時 CREATE TABLE IF NOT EXISTSCREATE TRIGGER IF NOT EXISTS 會跳過建表,但 backfill 會再次全量 INSERT,導致 FTS 索引重複。

緩解建議:在 backfill 前加 DELETE FROM agent_reports_fts; 或改用 INSERT INTO agent_reports_fts(agent_reports_fts) VALUES ('rebuild');

🟢 低風險

shortQueryFallback LIKE 萬用字元:使用者輸入 %_ 會被 LIKE 解讀為通配符,但 2 字元以下查詢極少用,且僅影響結果精確度,不造成安全問題。


建議行動(非必要)

  1. [建議] Migration V3 backfill idempotency:在 backfill INSERT 前加 DELETE FROM agent_reports_fts; 確保重跑安全
  2. [建議] 加 2 個防禦性測試:驗證 column-scoped query 和 boolean operators 被 escape 成字面量

驗收結論

通過 — 程式碼品質優良,與 spec 高度一致,安全防護充分,測試覆蓋完整。可以交付 secretary 進行 commit。