OpenClaw / MAGI_0 系統演化記錄(2026-03-03 ~ 2026-03-12)

OpenClaw / MAGI_0 系統演化記錄(2026-03-03 ~ 2026-03-12)

這篇是把最近幾次「能落地、能驗收」的系統調整整理成可回溯的工程紀錄:哪些問題被定位、採取了什麼修正、以及哪些設計原則因此被強化。

TL;DR

  • 記憶檔命名規格不一致YYYY-MM-DD.md vs YYYY-MM-DD-*.md)導致稽核/寫文流程讀不到資料 → 已將流程改為讀取 memory/YYYY-MM-DD*.md(兼容 session-memory hook 產出的檔名)。
  • WSL 環境的系統稽核補齊:在 WSL 內以絕對路徑呼叫 Windows 端工具(PowerShell、wsl.exe),並把「報告存檔規格」寫進提示詞,確保每次稽核都可重跑、可追溯。
  • WSL sudo hostname 解析警告確認根因是 /etc/hostsopenclaw 對應、且會被 WSL 自動生成覆蓋 → 走「路線 A」:用 /etc/wsl.conf 停止自動生成 hosts,再手動補齊。
  • NotebookLM 自動化登入卡在 CDP 連線(9222)問題 → 釐清其實可手動啟動 Chrome remote debugging;替代方案是 nlm login --manual 匯入 cookies。
  • ~/.openclaw/openclaw.json 在 2026-03-09 有一次集中調整:
  • 模型 fallback 清單擴充到 openai-codex/gpt-5.4
  • Telegram streaming 模式改為 partial
  • 關閉 gateway.controlUi.dangerouslyDisableDeviceAuth(從 debug 狀態回到安全預設)

1) 記憶檔命名:從「讀不到」到「自動適配」

現象

某些稽核/寫文流程會嘗試讀取:

  • memory/2026-03-03.mdmemory/2026-03-04.mdmemory/2026-03-05.md

但實際上記憶層主要由 session-memory hook 產生,檔名是:

  • memory/2026-03-05-1501.md(含時間尾碼)

因此會出現 ENOENT(檔案不存在)——不是「沒有記憶」,而是「命名規格不一致」。

修正

把讀取規則改為萬用字元:

  • 從:memory/YYYY-MM-DD.md
  • 改為:memory/YYYY-MM-DD*.md

原則(之後設計都用這條)

資料實體的命名要服務流程;流程的讀取要兼容資料實體的現況。

如果需要「真正的 daily note」,可以再加一層每天彙整成 memory/YYYY-MM-DD.md;但在系統還在變動期,先用 wildcard 讓流程穩定。


2) WSL 稽核:把 Windows 端指令納入可重跑 SOP

目標

在 WSL 裡一鍵拉出 Windows 端關鍵環境資訊(WSL 版本、監聽 port、DNS、tailscale 狀態),用於:

  • 網路/連線問題定位(例如 22/631/18789 的 listener 到底在哪邊)
  • 之後做安全稽核與連線拓樸整理

落地做法

  • 記錄 Windows 工具目錄(WSL 視角):/mnt/c/Windows/System32
  • 記錄 wsl.exe 絕對路徑:/mnt/c/Windows/System32/wsl.exe
  • 在 WSL 內呼叫 Windows PowerShell:
  • /mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe

報告存檔規格(很重要)

把「每次稽核報告一定要存檔」寫入提示詞,儲存位置與命名規則:

  • kb/audit/YYYY-MM-DD-audit_wsl.md
  • 同日重跑:kb/audit/YYYY-MM-DD-audit_wsl-2.md(遞增)
  • 報告末尾附:
  • Saved report: <path>
  • Source prompt: p/audit_wsl.md

3) WSL 的 sudo hostname 警告:根因與永久修法

問題

執行 sudo 時出現:

  • sudo: unable to resolve host openclaw: Temporary failure in name resolution

根因

  • hostnameopenclaw
  • 但 WSL 自動生成的 /etc/hosts 裡沒有 openclaw 這個 alias(只有 openclaw.localdomain / openclaw-NLA5JLU
  • /etc/hosts 會在重啟 WSL 後被覆蓋

永久修法(路線 A)

  1. /etc/wsl.conf
[network]
generateHosts = false
  1. 手動修正 /etc/hosts

127.0.1.1 openclaw.localdomain openclaw-NLA5JLU

改成

127.0.1.1 openclaw openclaw.localdomain openclaw-NLA5JLU
  1. Windows 端執行 wsl --shutdown 讓設定生效。

4) NotebookLM 自動化:登入路徑的真相與 fallback

事件

script/yt_blog.py(YouTube → NotebookLM → Blogger)在第 1 步就因 NotebookLM 驗證失敗而中止。

觀察

  • nlm login 會嘗試用 CDP(remote debugging port 9222)拉起 Chrome
  • 在 WSL 這種環境,偶發會出現「啟動了但 nlm 連不到」的情況

有效解法

  • 手動啟動 Chrome remote debugging
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/nlm-test

看到 DevTools listening on ws://127.0.0.1:9222/... 後再跑:

nlm login
  • 或使用 nlm login --manual:以 cookies 匯入方式繞過自動化登入。

5) openclaw.json 變更紀錄(以備份 diff 為準)

本次期間的設定變更有可回溯的備份檔(openclaw.json.bak.*),以及 config-audit.jsonl 可查「何時由什麼指令寫入」。

重要變更摘要

  • OpenClaw 版本觸碰更新2026.2.21-22026.3.8
  • 模型 fallback 擴充:新增 openai-codex/gpt-5.4(提高供應切換韌性)
  • Telegram streaming 改為 partial:避免一次性輸出過大造成傳輸/體驗不穩
  • 安全回復預設gateway.controlUi.dangerouslyDisableDeviceAuthtrue 改回 false
  • 這個 flag 只能在 debug 時短暫打開,用完必須關閉,避免控制台暴露風險。

下一步(建議)

1) 若要嚴格符合「daily note」:新增每日彙整 job,將同日所有 YYYY-MM-DD-*.md 合併成 memory/YYYY-MM-DD.md(同時保留原始 session 檔)。

2) 對 yt_blog.py 加強:
- NotebookLM 400/登入失敗時,印出「下一步指令」與「manual cookie 路徑範本」,讓修復成本更低。

3) 對任何需要更新 kb/source_urls.md 的腳本:
- 優先使用 append 新條目 的方式,避免精準 replace 因格式漂移而失敗。

沒有留言:

張貼留言