## 2026-02-16 04:17:13 CST – 系統維護記錄
- 修復 Bash 腳本 CRLF 行尾導致語法錯誤的問題（unexpected end of file、'] not found' / near ）。
- 影響檔案：
  - /var/www/html/active_cloud/llm_framework/skills/web-artifacts-builder/scripts/bundle-artifact.sh
  - /var/www/html/active_cloud/llm_framework/skills/web-artifacts-builder/scripts/init-artifact.sh
- 處置：將 CRLF 正規化為 LF，並確保可執行權限；以 bash -n 驗證均通過。
- 驗證結果：bundle-artifact.sh / init-artifact.sh → CRLF=0、SYNTAX=OK；MyCalend 專案下 .sh 語法亦 OK。
- 教訓：僅對真正 shell 腳本（依 shebang 過濾）執行 bash -n，避免對 .md/.txt/.py/.html 等非腳本產生假陽性。
- 待辦（加固）：在上述腳本加入 set -Eeuo pipefail 與 trap 顯示失敗行號；新增 .editorconfig/.gitattributes 強制 LF；撰寫 fix-crlf.sh 以批次正規化與語法快檢。

## System setup and config — 2026-02-16 04:57:11 +0800
- Began apt installs: pandoc, libreoffice, poppler-utils, python3-pip (large download; continuing in background).
- Will install pip package defusedxml and npm -g package docx after apt completes; will verify versions.
- Wrote openclaw.json5 with multi-model providers:
  - cliproxyapi at http://127.0.0.1:11434/v1 (OpenAI responses compat) including GPT-5;
  - anthropic messages (Sonnet, Opus).
- Agents aligned to roles: Opus as project-manager and code-reviewer; Sonnet developer/doc-analyst; Haiku browser/file-organizer; main uses GPT-5 with fallbacks to Sonnet/Opus.
- Tool allowlists tightened per agent; removed wildcard sessions_* in favor of explicit sessions_* entries.
- Wrote auth-profiles.json with ag1=anthropic; ag2/ag3/user=cliproxyapi; order set. Keys managed externally by CLI Proxy/GA.
- Skills symlinking pending: llm_framework/skills path not found on disk; awaiting user to provide actual path to link into workspace/skills.
- Pending action: apply config and restart gateway for e2e test once approved; finish installs and run version checks.
- Note: sudo password provided by user and used; not stored.

