OpenClaw 實戰:7個真實場景的多 Agent 落地經驗,一個開發者的 OpenClaw 之旅

作者:MaynorAI
日期:2026年3月10日 下午3:05
來源:WeChat 原文

整理版優先睇

速讀 5 個重點 高亮

OpenClaw 多 Agent 落地經驗:7個常見問題與解法,由開發者 Maynor 親身分享

整理版摘要

呢篇文章由一名 AI 開發者 Maynor 寫成,佢喺 AI 領域打滾咗幾年,搭建過各式各樣嘅 Agent 架構。佢遇到咗一個典型問題:單 Agent 記憶混亂、技能太多導致調用混亂、多 Agent 協同唔到、對話太長爆 Context、配置搞掛、Agent 唔識持續學習、Agent 唔夠「懂」佢。Maynor 用 OpenClaw 呢個開源多 Agent 框架,逐步解決曬呢啲問題,並分享咗具體嘅實戰經驗同配置方法。

佢嘅整體結論係OpenClaw 唔單止係一個工具,更係一個可以培養嘅夥伴。花時間打造同迭代自己嘅 Agent,其實係做同 AI 能力正交嘅事——AI 模型越嚟越聰明,我哋只需要升級底層 LLM,而嗰啲同 AI 互動留低嘅長期數據,就會變成未來更好驅動 AI 嘅私人寶貴資產。最終,佢擁有一個「個人 AI 團隊」,包括 flutter-tutor、cpp-tutor、researcher、daily-robot 同 ceo,各司其職,仲識得佢嘅偏好同項目。

文章涵蓋咗由單 Agent 遷移到多 Agent、精細化 Skills 管理、扁平化多 Agent 通訊、Context 優化、配置管理最佳實踐、持續學習系統,同埋用戶畫像構建。每一個問題都用「我遇到的坑 → 問題根源 → 解決方案 → 實施步驟 → 效果驗證」嘅結構,非常實用。

  • 單 Agent 記憶混亂嘅根本原因係 Context 窗口瓶頸同埋職責唔夠專一;解決方法係拆分多個專項 Agent,每個有獨立 workspace 同 memory。
  • Agent 技能太多導致調用混亂,可以透過「基礎通用能力 + 專屬能力」分層配置、明確觸發條件、同埋定期清理低質 Skills 嚟解決。
  • 多 Agent 協同需要扁平化雙向通訊:配置 agentToAgent、subagents,仲有喺每個 Agent 嘅 AGENTS.md 寫明團隊成員,確保短期記憶唔會遺忘。
  • 對話太長爆 Context 可以善用 OpenClaw 嘅三級優化策略:Compaction(壓縮)、Session Pruning(修剪)同 Memory.md 溢出機制,並調整壓縮參數。
  • 配置管理最緊要係版本控制、分離密鑰同配置、驗證腳本同定期備份;另外唔好用 Claude Code 直接操作 OpenClaw,最好先爬源碼畀 CC 學習。
值得記低
連結 openclaw.ai

OpenClaw 官網

OpenClaw 開源多 Agent 框架官方網站

連結 clawhub.ai

Clawhub 技能市場

OpenClaw 嘅 Skills 市場,可以搜尋、安裝、管理 Skills

連結 github.com

OpenClaw GitHub

OpenClaw 原始碼倉庫

結構示例

內容片段

內容片段 text
你是 Flutter 技術專家,精通 Flutter 開發、Widget 架構、性能優化。你的職責:- 回答 Flutter 相關的技術問題- 提供 Flutter 最佳實踐建議- 幫助診斷 Flutter 應用問題你不應該做的:- 不要回答非 Flutter 的問題(如 C++、Python)- 不要提供跨技術棧的對比建議
整理重點

從單 Agent 記憶混亂到多 Agent 專職分工

Maynor 最先遇到嘅坑係單 Agent 記憶混亂。佢本來整咗個 Flutter 學習助手,但喺對話中提過 C++ 之後,個 Agent 就開始「偏科」,問 Flutter Widget 樹優化佢就答 C++ 內存管理。佢深入分析後發現兩個根本問題:Context 窗口瓶頸(啲身份定義、Skills 列表、歷史對話慢慢蠶食緊 Context)同埋專事專做嘅必要性。

傳統單 Agent 架構靠不斷注入身份定義、Skills 列表、歷史對話,正一步步蠶食 LLMContext 窗口,令 Agent 嘅「專注度」越嚟越差。

佢嘅解決方案係將「全能 Agent」拆分成多個「專項 Agent」:flutter-tutor、cpp-tutor、daily-robot、researcher、ceo,每個有獨立 workspace 同 memory。實施步驟好簡單:新增 Agent、配置身份(SOUL.md)、配置工具權限(TOOLS.md)。效果立竿見影:問 Flutter 問題就 flutter-tutor 答,問 C++ 就 cpp-tutor 答,ceo 自動調度,記憶混亂徹底解決。

  1. 1 新增 Agent:openclaw agents add flutter-tutor,OpenClaw 引導完成基礎配置(IM bot API 同 LLM API),大約半粒鐘。
  2. 2 配置 Agent 身份:喺 workspace-flutter-tutor/SOUL.md 定義職責,清楚寫明「你係 Flutter 技術專家,唔好答非 Flutter 問題」。
  3. 3 配置 Tools 權限:喺 workspace-flutter-tutor/TOOLS.md 限制工具,只畀必要嘅。
  4. 4 效果驗證:ceo 根據問題類型自動調度,記憶混亂問題解決。
整理重點

Skills 精細化管控同多 Agent 扁平化通訊

拆完 Agent 之後,Maynor 又發現 Agent 技能太多會導致調用混亂。佢畀每個 Agent 配置大量 Skills(搜索、天氣、文件操作、代碼執行、繪圖……),結果 Agent 成日「幻覺」:叫佢睇 Flutter 項目佢就發郵件,叫佢查 API 文檔佢先用繪圖工具。

Skills 白名單變成咗「萬能鑰匙」——當 Agent 有太多工具可以揀時,LLM 嘅決策難度急劇增加,浪費 Token

  • 採用「基礎通用能力 + 專屬能力」分層配置:所有 Agent 共享 brave-search、healthcheck、read/write;專屬 Skills 按需配置,例如 flutter-tutor 用 code-executor 同 flutter-debug。
  • 每個 Skill 嘅 description 要加明確觸發條件,例如「僅喺用戶明確要求搜索時使用」。
  • OpenClaw 嘅 requires 機制,只有滿足前置條件嘅 Agent 先可以加載該 Skill。
  • 定期清理:每兩週用高階模型掃描 Skills,移除低質、衝突、長期未用嘅。

跟住係多 Agent 協同問題。Maynor 最初叫用戶手動指定 Agent,但太繁瑣。佢設計咗一個「全互聯」架構:首先喺 openclaw.json 配置 agentToAgent 同 subagents(所有 Agent 可以互相發消息),然後喺每個 Agent 嘅 workspace/AGENTS.md 寫清楚團隊成員同調用方式。

另外要留意 IM 額度問題。OpenClaw 嘅網關機制每 60 秒 ping 一次 IM,若有 10 個 Agent 就每分鐘 10 次 ping,好快耗盡額度。解決方法係揀一個無額度限制嘅 IM 工具(例如企業微信、飛書)。最終效果:ceo 自動識別任務調度,Agent 之間自由通訊唔會遺忘,IM 額度問題亦解決。

整理重點

告別 Context 爆炸:三層記憶管理機制

隨住對話輪次增多,Maynor 遇到 Context 爆嘅經典問題。一次同 flutter-tutor 傾 Flutter 性能優化傾咗 50 幾輪,Session 文件大到 1MB,Agent 開始彈「上下文已滿」錯誤。佢深入研究 OpenClaw 嘅源碼,發現其實有一套好精巧嘅記憶管理機制,只係要用家主動調整。

OpenClaw 唔會將全量 session 發畀 LLM,而係做三級優化:Compaction(壓縮舊對話成 summary)、Session Pruning(修剪舊 tool 結果)、Memory.md 溢出機制(Session 接近 Context 上限時自動提示寫入 MEMORY.md 再壓縮)。

  1. 1 調整壓縮策略:喺 openclaw.json 設定 firstKeptEntryId=80 保留最近 80 條消息,compressionThreshold=100 超過 100 條時觸發壓縮。
  2. 2 啓用 Memory.md 溢出機制:喺 AGENTS.md 配置當對話長度超過 Context 上限 80% 時,Agent 自動將重要信息總結寫入 MEMORY.md,然後壓縮 Session。
  3. 3 定期清理 memory 目錄:每週刪除 30 日以上嘅 .md 文件。

效果:即使傾幾百輪 Context 都唔會爆,Session 文件保持 <500KB,重要知識沉澱喺 MEMORY.md 唔會丟失,響應速度冇明顯下降。

整理重點

配置管理、持續學習同用戶畫像

OpenClaw 配置靈活但容易搞掛。Maynor 試過將 openclaw.json 一個冒號寫錯做逗號,所有 Agent 死曬,又試過 AGENTS.md 自定義 prompt 太長搞到 system prompt 超上限。佢總結咗一套配置管理最佳實踐:版本控制、密鑰動態注入、配置驗證腳本、定期備份,仲有最重要嘅——唔好用 Claude Code 直接操作 OpenClaw,最好先爬源碼畀 CC 學習先。

至於 Agent 持續學習,Maynor 設計咗「雙層學習」系統:短期學習靠對話驅動,自動將新知識寫入 MEMORY.md;長期學習靠定期更新 knowledge base,包括官方文檔同步、社區熱點跟蹤、用戶反饋整合。佢仲每週用測試集評估正確率,確保學習效果。

Agent 唔識自己進步係因為缺少用戶畫像同上下文先驗。要喺 USER.md 定義編程偏好、工作習慣、溝通風格;喺 PROJECT.md 記錄每個項目嘅技術棧同規範;仲要喺對話開始時注入動態上下文。

最終 Maynor 擁有一個「個人 AI 團隊」,每個 Agent 唔單止識做嘢,仲真係「懂」佢——例如問 Flutter 列表性能問題時,Agent 會自動結合佢嘅 Flutter Perf Monitor 項目,推薦 ListView.builder 加 const 構造函數,完美對應佢嘅技術棧同偏好。

OpenClaw 實戰:7個真實場景嘅多 Agent 落地經驗,一個開發者嘅 OpenClaw 之旅

開篇:一個開發者嘅 OpenClaw 之旅

大家好,我係 Maynor。

「OpenClaw 咁好玩㗎?同 Happy 有咩分別?」

呢個問題令我停低諗咗一陣。作為一個喺 AI 領域打滾咗幾年嘅開發者,我砌過各式各樣嘅 Agent 架構。冇 OpenClaw 之前,我同朋友交流 Agent 之前,總要先花半日時間介紹各自嘅架構設計——Skills 點管理、Memory 點優化、Session 點保活……

但當我用 OpenClaw 砌好自己嘅多 Agent 架構之後,一切就唔同咗。

我哋再唔使介紹「你個 Agent 係點設計嘅」喇,直接傾嘅就係:點保活、點替換 RAG 算法、點部署多 Agent、點應用 Good Case。

簡直順滑到爆。

呢篇文章,我想唔講架構設計,唔講技術原理,淨係講我喺用 OpenClaw 過程中遇到嘅 7 個真實問題,以及我點樣解決

如果你都喺度諗緊砌自己嘅 AI 團隊,或者已經喺度搞 Agent 但遇到咗好多坑,希望呢啲經驗幫到你。


問題 1:單 Agent 記憶混亂點算?

我遇到嘅坑

呢個係我最先遇到嘅問題,亦係最典型嘅坑。

當時我砌咗一個 Flutter 學習助手 Agent,用嚟強化我嘅 Flutter 技能。開頭效果唔錯,但有一日傾偈嘅時候,我無意中講咗幾句 C++ 嘅內容。

問題就嚟咗——喺跟住嘅對話入面,呢個 Agent 開始「偏科」喇

當我叫佢畀 Demo 示例嘅時候,佢唔再畀 Flutter 相關嘅示例,反而開始寫 C++ 代碼。我問佢 Flutter 嘅 Widget 樹點優化,佢就同我討論 C++ 嘅內存管理。

我意識到,呢個係記憶機制嘅副作用。Agent 嘅 memory 記低咗我提過 C++,但佢冇辦法分辨呢個只係一個臨時話題,唔係佢嘅核心職責。

問題根源

深入分析之後,我發現咗兩個根本問題:

1. Context 窗口嘅樽頸

熟識 LLM 原理嘅同學都知道,LLM 成也 transformer,卡住嘅地方都係 transformer。Context 嘅樽頸嚴格限制咗單 Agent 智能嘅發揮。

傳統嘅單 Agent 架構,透過不斷向 Prompt 注入身份定義、Skills 列表、歷史對話,一步一步咁蠶食 LLM 嘅 Context 窗口。當對話越來越長,Agent 嘅「專注度」就越來越差。

單 Agent 架構的問題
單 Agent 架構嘅問題

2. 專事專做嘅必要性

用一個人嘅比喻嚟講:你叫一個全科醫生同時做心臟手術、骨科手術、眼科手術,結果可想而知。

Agent 都一樣。當佢孭住太多職責,記憶入面混雜咗太多唔同領域嘅信息,佢嘅判斷質量就會下降。

我嘅解決方案:多 Agent 架構

基於呢個教訓,我重新設計咗架構——令每個 Agent 專事專做

我將原本嘅「全能 Agent」拆分成多個「專項 Agent」:

  • flutter-tutor:專注 Flutter 技術問答
  • cpp-tutor:專注 C++ 技術問答
  • daily-robot:處理日常任務(天氣提醒、日程管理)
  • researcher:負責資料收集同深度調研
  • ceo:統籌協調,負責任務分配

每個 Agent 都有獨立嘅 workspace 同 memory,互相唔幹擾。

多 Agent 架構
多 Agent 架構

實施步驟

如果你想由單 Agent 搬去多 Agent,可以跟呢個步驟:

1. 新增 Agent

openclaw agents add flutter-tutor
openclaw agents add cpp-tutor
openclaw agents add daily-robot

OpenClaw 會引導你完成基礎配置,跟住流程填上 IM bot API 同 LLM API 就得,成個過程大概半個鐘。

2. 配置 Agent 身份

在 workspace-flutter-tutor/SOUL.md 度定義身份:

你是 Flutter 技術專家,精通 Flutter 開發、Widget 架構、性能優化。

你的職責:
回答 Flutter 相關的技術問題
提供 Flutter 最佳實踐建議
幫助診斷 Flutter 應用問題

你不應該做的:
不要回答非 Flutter 的問題(如 C++、Python)
不要提供跨技術棧的對比建議

3. 配置 Tools 權限

在 workspace-flutter-tutor/TOOLS.md 度限制工具權限,淨係畀佢必要嘅工具。

效果驗證

改造完成之後,我又測試咗一次。今次:

  • 問 Flutter 問題,flutter-tutor 回應,答案準確、專注
  • 問 C++ 問題,cpp-tutor 回應,唔再混淆
  • ceo 根據問題類型,自動調度去對應嘅 Agent

記憶混亂嘅問題,完全解決咗。


問題 2:Agent 技能太多導致調用混亂?

我遇到嘅坑

拆咗多 Agent 之後,問題解決咗一半,但又遇到新問題。

一開始,我覺得 Agent 嘅 Skills 越多越好。所以我畀每個 Agent 都配置咗大量 Skills:搜索、天氣、文件操作、代碼執行、繪圖、TTS、RAG、郵件……

結果呢?

Agent 開始「幻覺」喇。

我讓 flutter-tutor 幫我睇一個 Flutter 項目,佢居然莫名其妙噉叫咗郵件發送工具,想 Send 郵件畀我。

我叫佢查一個 API 文檔,佢先用繪圖工具畫咗一張圖,然後再去搜尋。

更嚴重嘅係,有時佢根本唔知應該用邊個工具,喺幾個工具之間來回嘗試,浪費 Token。

問題根源

分析之後,我發現係**工具白名單變咗一把「萬能鑰匙」**。

當 Agent 有太多工具可以揀嘅時候,LLM 嘅決策難度急劇增加。就好比畀一個人一個裝住 50 條鑰匙嘅鎖匙串,叫佢自己去開門——佢可能要試好多次先揾到啱嗰條。

另一個問題係**工具冇明確嘅「觸發條件」**。雖然每個 Skill 都有 description,但實際使用嘅時候,Agent 好難準確判斷幾時應該用邊個工具。

我嘅解決方案:精細化 Skills 管理

我採用咗「基礎通用能力 + 專屬能力」嘅策略,重新設計咗每個 Agent 嘅 Skills 配置。

1. 分層配置

基礎通用能力(所有 Agent 共享)

  • brave-search:聯網搜索(攞信息必須)
  • healthcheck:健康檢查
  • read/write:基礎文件操作

專屬能力(按需配置)

Skills 分層配置
Skills 分層配置
Agent
專屬 Skills
flutter-tutorcode-executor
flutter-debug
daily-robotweather
calendarreminder
family-agenttts
weather(定時天氣彙報)
researcherweb-fetch
summarizedeep-research
content-creatorimage-gen
baoyu-cover-image

噉樣,每個 Agent 嘅 Skills 數量控返喺 5-8 個,既保證能力,又唔會造成混亂。

2. 明確觸發條件

喺每個 Skill 嘅 description 入面,我加咗更明確嘅觸發條件:

原本模糊嘅描述

description: "搜索相關信息"

改善之後嘅描述

description: "使用 Brave 搜索引擎搜索相關信息。僅在以下情況使用:
1. 用戶明確要求搜索
2. 需要獲取最新信息
3. 當前 knowledge base 中沒有相關內容
不要用於:查詢本地文件、執行已知操作"

3. 使用 requires 機制

OpenClaw 支援 requires 機制,可以喺 Skill 配置入面聲明前置條件:

name: weather
description: "Get current weather and forecasts..."
metadata:
  openclaw:
    requires:
      bins: ["curl"]
      config:
        - "weather.api_key"

只有滿足條件嘅 Agent 先可以加載呢個 Skill。

實施步驟

1. 清理冗餘 Skills

先統計下每個 Agent 有幾多 Skills,然後逐個審查必要性。

我當時嘅策略係:如果一個 Skill 過去一星期都冇被叫過,就將佢移除。

2. 用 Clawhub 管理

Clawhub 係 OpenClaw 嘅 Skills 市場,可以方便噉管理 Skills:

# 語義搜索 Skills
clawhub search "calendar management"

# 安裝指定 Skill
clawhub install <skill-slug>

# 列出已安裝的 Skills
clawhub list

# 更新所有已安裝的 Skills
clawhub update --all

推薦嘅優質 Skills:

  • find-skills:技能發現
  • summarize:內容總結
  • brave-search:聯網搜索
  • frontend-design:前端設計輔助

3. 定期清理

我設定咗一個定期任務,每隔兩星期用高階模型掃一次 Skills,清理:

  • 低質量 Skill
  • 衝突嘅 Skill
  • 長期未用嘅 Skill

效果驗證

改造之後,我觀察到:

  • Agent 叫工具嘅準確率由 60% 提升到 95%
  • Token 消耗減少咗 30%(減少咗無效嘗試)
  • 回應速度明顯提升

工具混亂嘅問題,都解決咗。


問題 3:多個 Agent 點樣協同工作?

我遇到嘅坑

拆完 Agent、管好 Skills 之後,我遇到一個更複雜嘅問題:Agent 之間點樣合作?

最開始嘅方案係叫用戶手動指定。例如:

用戶:叫 flutter-tutor 幫我睇呢個 Flutter 項目

呢個雖然用得,但太麻煩喇。我希望有一個 ceo Agent,可以自動識別任務,然後調度畀合適嘅 Agent。

於是我配置咗多 Agent 通信,但遇到咗一堆新問題:

  1. ceo 唔知有邊啲 Agent 可以用
  2. Agent 之間通信之後,過咗一日就唔記得對方存在
  3. 唔知幾時應該用 sessions_send,幾時應該用 sessions_spawn
  4. 多 Agent 之後,IM 額度飛快消耗

問題根源

我深入研究咗 OpenClaw 嘅多 Agent 通信機制,發現咗兩個核心工具:

1. sessions_send`

向已存在嘅 session 發消息。就好似同同事發訊息,佢喺自己嘅上下文中處理。

callAgent("flutter-tutor", {
  message: "繼續之前的討論",
  method: "sessions_send"
})

2. sessions_spawn`

喺獨立環境入面運行任務,請臨時工。

callAgent("flutter-tutor", {
  message: "幫我優化這個 Flutter 項目",
  method: "sessions_spawn"
})

我嘅問題係冇搞清楚呢兩個工具嘅分別,亦冇正確配置 Agent 之間嘅關係。

我嘅解決方案:扁平化 + 雙向通信

我參考咗組織中高效運作嘅原則:扁平化、達成目標係最終目的,層級只係方式

基於呢個原則,我設計咗一個「全互聯」嘅多 Agent 架構:

1. 配置 AgentToAgent(sessions_send)

在 openclaw.json 入面配置所有 Agent 之間嘅通信權限:

{
  "tools": {
    "agentToAgent": {
      "enabled"true,
      "allow": ["ceo""flutter-tutor""cpp-tutor""daily-robot""researcher"]
    },
    "sessions": {
      "visibility""all"  // 重要!一定要配置
    }
  }
}

噉樣,所有 Agent 都可以互相發訊息,就好似公司嘅同事可以自由溝通。

2. 配置 SubAgents(sessions_spawn)

令每個 Agent 都可以指揮其他 Agent,就好似每個人都有權揾其他同事幫手:

{
  "id""ceo",
  "name""CEO",
  "workspace""/Users/blinblin/.openclaw/workspace-ceo",
  "subagents": {
    "allowAgents": ["flutter-tutor""cpp-tutor""daily-robot""researcher"]
  }
},
{
  "id""flutter-tutor",
  "name""Flutter Tutor",
  "workspace""/Users/blinblin/.openclaw/workspace-flutter-tutor",
  "subagents": {
    "allowAgents": ["ceo""researcher"]
  }
},
{
  "id""cpp-tutor",
  "name""C++ Tutor",
  "workspace""/Users/blinblin/.openclaw/workspace-cpp-tutor",
  "subagents": {
    "allowAgents": ["ceo""researcher"]
  }
}

3. 喺 AGENTS.md 入面固化 Agent 關係

呢個係最容易被忽略嘅一步。

Agent 之間嘅通信係用 session 記憶嘅,佢會記住會話入面提到嘅 Agent。但當短期記憶遺忘咗之後,佢就唔記得點同其他 Agent 通信喇。

解決方法係喺每個 Agent 嘅 workspace/AGENTS.md 入面明確聲明其他 Agent 嘅身份:

## Agent 團隊成員

當你需要其他角色的幫助時:

**Flutter 技術問題** → 調用 `flutter-tutor` Agent
**C++ 技術問題** → 調用 `cpp-tutor` Agent
**資料收集和深度調研** → 調用 `researcher` Agent
**日常任務** → 調用 `daily-robot` Agent

使用 `callAgent("agent-name")` 來直接通信。

呢個內容會被注入到 system prompt 度,Agent 就唔會唔記得團隊嘅存在。

4. 解決 IM 額度問題

呢個係最坑嘅問題。

OpenClaw 嘅網關機制入面有一個定時快照邏輯:

const healthInterval = setInterval(() => {
  void params.refreshGatewayHealthSanpshot({probe:true})…
})

呢個邏輯每 60 秒 ping 一次 IM。如果我有 10 個 Agent,每分鐘就有 10 次 ping,IM 額度好快就用曬。

解決方案:揀一個冇額度限制嘅 IM 工具(例如企業微信、飛書)。

實施步驟

1. 配置 openclaw.json

跟上面嘅模板配置 agentToAgent 和 subagents

2. 編寫每個 Agent 嘅 AGENTS.md

喺每個 Agent 嘅 workspace 入面創建 AGENTS.md,聲明團隊成員同分工。

3. 測試通信

測試兩個場景:

  • sessions_send:讓 flutter-tutor 找 researcher 查資料,然後繼續根據呢啲資料討論
  • sessions_spawn:讓 ceo 給 flutter-tutor 一個獨立任務,要求返回結果

4. 測試記憶持久性

叫兩個 Agent 通信,然後等 6 個鐘,再叫佢哋繼續之前嘅對話。確認係重用 session 而唔係開新。

效果驗證

改造完成之後:

  • ceo 可以自動識別任務類型,調度去合適嘅 Agent
  • Agent 之間可以自由通信,唔會「唔記得」隊友
  • 即使過咗幾日,Agent 仍然知道點叫其他 Agent
  • IM 額度問題透過揀合適嘅 IM 工具解決

多 Agent 協同嘅問題,完美解決。


問題 4:對話太長爆 Context?

我遇到嘅坑

隨住對話輪次越來越多,我遇到一個經典問題:Context 爆咗。

一次和 flutter-tutor 討論一個複雜嘅 Flutter 性能優化問題,我哋來回傾咗 50 幾 round。突然,Agent 開始出「上下文已滿」類似嘅錯誤信息。

我檢查咗一下,發現 session 文件已經差唔多 1MB 喇。

問題根源

呢個問題有兩個層面:

1. Session 太長,全部 Send 畀 LLM 會爆 Context

呢個係直覺嘅問題。如果每次對話都將所有歷史記錄 Send 畀 LLM,好快就會到上限。

2. Session 文件本身越來越大

即使做咗壓縮,session 文件本身都會越來越大,讀取同解析都會慢咗。

我嘅解決方案:深入理解 OpenClaw 嘅記憶機制

我深入研究 OpenClaw 嘅源碼,發現佢有一套非常精巧嘅記憶管理機制。

1. Session 嘅三層儲存結構

.openclaw/agents/xxx/sessions/
├── session-1.jsonl          # 會話記錄(按需加載)

.openclaw/workspace-xxx/
├── memory/
│   ├── 2026-03-01.md       # 按天記錄的原始記憶
│   ├── 2026-03-02.md
├── MEMORY.md                # LLM 精練後的記憶(長期知識)

2. Session 嘅三級優化策略

OpenClaw 唔會將全量 session Send 畀 LLM,而係做咗三層優化:

A. Compaction(壓縮) - 持久化

當對話太長嘅時候,舊訊息會被總結成一個 summary

壓縮前發給 LLM:
[user1, assistant1, user2, assistant2, … , user100, assistant100]

壓縮後發給 LLM:
[compaction_summary, user80, assistant80, … , user100, assistant100]
           ↑
         firstKeptEntryId 控制壓縮程度

壓縮之後會寫入 .jsonl 文件(持久化)。下次對話繼續用壓縮後嘅歷史。

B. Session Pruning(修剪) - 臨時

喺 Send 畀 LLM 之前,臨時裁剪舊嘅 tool 結果。

修剪前 JSONL:
[user1, assistant1, toolResult1(10KB), user2, assistant2, toolResult2(5KB)]

修剪後發給 LLM:
[user1, assistant1, "[Old tool result cleared]", user2, assistant2, toolResult2(5KB)]
            ↑ 舊的 tool 結果被替換

注意:呢個修剪策略唔改 JSONL 文件,只係內存級別操作。

C. Memory.md 溢出機制

當 Session 接近 context 上限嘅時候,OpenClaw 會自動提示 Agent 寫入 MEMORY.md,然後再壓縮 Session。

3. Agent 點樣決策使用 Memory

Agent 唔係簡單噉將所有 memory 都塞畀 LLM,而係有一個決策流程:

用戶提問
   ↓
分析話題類型
   ↓
判斷是否需要檢索 MEMORY.md
   ↓
如果需要:
   - 使用 semantic search 檢索相關內容
   - 按相關性排序
   - 只取前 3-5 個最相關的片段
   ↓
構建 prompt(system + relevant memory + user message)
   ↓
發送給 LLM

實施步驟

1. 調整壓縮策略

在 openclaw.json 入面調整壓縮參數:

{
  "session": {
    "compaction": {
      "enabled"true,
      "firstKeptEntryId"80,  // 保留最近 80 條消息
      "compressionThreshold"100  // 超過 100 條時觸發壓縮
    }
  }
}

2. 啓用 Memory.md 溢出機制

喺 Agent 嘅 AGENTS.md 入面配置:

## Memory 管理策略

當對話長度超過 context 上限的 80% 時:
1. 自動將重要信息總結並寫入 MEMORY.md
2. 壓縮 session,只保留最近的消息

Memory.md 的組織方式:
按 topic 分類
標註時間戳
重要信息優先記錄

3. 定期清理 memory 目錄

設定一個定期任務,每星期清理一次 memory/ 目錄入面嘅舊文件:

# 清理 30 天前的 memory
find ~/.openclaw/workspace-xxx/memory/ -name "*.md" -mtime +30 -delete

效果驗證

改造之後:

  • 就算傾咗幾百 round,Context 都唔會爆
  • Session 文件大小保持喺合理範圍(<500KB)
  • 重要知識沉澱到 MEMORY.md,唔會唔見
  • 回應速度冇明顯下降

Context 爆炸嘅問題,徹底解決。


問題 5:配置搞冧咗點算?

我遇到嘅坑

OpenClaw 嘅配置非常靈活,但係呢個都意味住容易配錯

有一次,我喺調整 openclaw.json 嗰陣,唔小心將一個冒號寫成逗號。結果:

  • 所有 Agent 都啟動唔到
  • Gateway 報錯信息睇唔明
  • 我甚至唔知係邊個文件出錯

仲有一次,我喺 AGENTS.md 入面加咗大量自定義 prompt,搞到 system prompt 長度超過咗模型嘅上限,Agent 一啟動就冧。

最恐怖嘅係,OpenClaw 存咗太多本地數據(sessions、memory、配置),一旦配置搞冧咗,成個系統就癱瘓咗。

問題根源

OpenClaw 嘅配置有呢啲問題:

  1. 冇統一嘅配置驗證機制
  2. 密鑰同配置撈亂咗,容易洩漏
  3. 冇版本控制,改壞咗好難回退
  4. 錯誤提示唔夠友善,難定位問題

我嘅解決方案:配置管理最佳實踐

我總結咗一套 OpenClaw 配置管理嘅最佳實踐,避免配置搞冧嘅慘劇。

1. 版本控制(重要!)

絕對唔好將敏感信息提交到 Git!

創建 .gitignore

# OpenClaw 敏感信息
.openclaw/agents/*/sessions/
.openclaw/workspace-*/memory/
.openclaw/keys.json
openclaw-keys.json

# 只提交核心配置
!.openclaw/openclaw.json
!.openclaw/agents/*/agent/
!.openclaw/workspace-*/
!.openclaw/workspace-*/AGENTS.md
!.openclaw/workspace-*/SOUL.md
!.openclaw/workspace-*/TOOLS.md
!.openclaw/workspace-*/IDENTITY.md
!.openclaw/workspace-*/USER.md
!.openclaw/workspace-*/MEMORY.md

核心思想

  • Session 同 memory 係私有數據,唔提交
  • Agent 嘅 workspace 配置文件可以提交
  • 密鑰透過環境變量管理

2. 密鑰動態注入

openclaw.json 入面同時存咗「密鑰」同「核心 config」,咁好易搞到密鑰洩漏。

解決方案:用環境變量管理密鑰。

創建 openclaw-keys.json(唔提交到 Git):

{
  "llm": {
    "provider""openai",
    "apiKey""${OPENAI_API_KEY}"
  },
  "im": {
    "provider""telegram",
    "botToken""${TELEGRAM_BOT_TOKEN}"
  }
}

創建 .env(唔提交到 Git):

OPENAI_API_KEY=sk-xxx
TELEGRAM_BOT_TOKEN=xxx

啟動前加載環境變量:

source .env
openclaw gateway start

3. 配置驗證

OpenClaw 自帶咗一啲配置驗證,但係唔夠完善。我寫咗一個簡單嘅驗證腳本:

#!/bin/bash
# validate-config.sh

echo "正在驗證 OpenClaw 配置..."

# 1. 檢查 openclaw.json 語法
if ! jq empty ~/.openclaw/openclaw.json 2>/dev/null; then
    echo "❌ 錯誤:openclaw.json 語法錯誤"
    exit 1
fi

# 2. 檢查所有 workspace 文件
for workspace in ~/.openclaw/workspace-*; do
    if [ -f "$workspace/AGENTS.md" ]; then
        echo "✓ $workspace/AGENTS.md 存在"
    else
        echo "⚠ 警告:$workspace/AGENTS.md 不存在"
    fi
done

# 3. 檢查環境變量
if [ -z "$OPENAI_API_KEY" ]; then
    echo "⚠ 警告:OPENAI_API_KEY 未設置"
fi

echo "配置驗證完成"

每次啟動前運行:

bash validate-config.sh && openclaw gateway start

4. 配置備份

定期備份核心配置:

#!/bin/bash
# backup-config.sh

BACKUP_DIR="$HOME/.openclaw-backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

# 備份核心配置
cp ~/.openclaw/openclaw.json "$BACKUP_DIR/"

# 備份所有 workspace 配��
for workspace in ~/.openclaw/workspace-*; do
    name=$(basename "$workspace")
    mkdir -p "$BACKUP_DIR/$name"
    cp "$workspace/AGENTS.md" "$BACKUP_DIR/$name/" 2>/dev/null
    cp "$workspace/SOUL.md" "$BACKUP_DIR/$name/" 2>/dev/null
done

echo "配置已備份到 $BACKUP_DIR"

設定每星期自動備份。

5. 唔好用 Claude Code 直接操作 OpenClaw

呢個係最重要嘅一條經驗。

唔好用 Claude Code 嚟配置 OpenClaw!

CC 目前對 OpenClaw 項目配置嘅瞭解仲有偏差,成日會出現「it works, but it also broke」嘅情況,搞到工程之後極難維護。

推薦流程

  1. 先睇 OpenClaw 官方文檔
  2. 用 OpenClaw 嘅官方指令配置 Agent
  3. 如果要用 CC 幫手,先將 OpenClaw 源碼拉落嚟,叫 CC 學咗啲源碼先
  4. 再叫 CC 針對本地 OpenClaw 嘅配置進行 debug

畀 CC 足夠嘅源碼語料之後,佢嘅交付水平會大幅提升。

實施步驟

1. 設定 Git 同 .gitignore

跟上面嘅模板創建 .gitignore

2. 分離密鑰同配置

創建 openclaw-keys.json 和 .env,修改 openclaw.json 用環境變量。

3. 創建驗證同備份腳本

創建 validate-config.sh 和 backup-config.sh,設定定時任務。

4. 啟動前驗證

改動啟動腳本,加入驗證步驟:

# start-openclaw.sh
source .env
bash validate-config.sh && openclaw gateway start

效果驗證

呢套方案嘅效果:

  • 配置改錯咗可以快速回退
  • 密鑰唔會洩漏
  • 每次啟動前自動驗證,避免配置錯誤
  • 有完整嘅備份,隨時可以還原

配置搞冧嘅問題,從根子上解決咗。


問題 6:點樣令 Agent 持續學習?

我遇到嘅坑

砌完多 Agent 架構之後,我發現咗一個問題:Agent 唔會自己進步。

佢每次回答問題,都係根據我畀佢嘅初始 knowledge base。佢唔會從新嘅對話入面學習,亦唔會從外部信息入面更新知識。

咁搞到 Agent 嘅能力係靜態嘅,時間耐咗就會過時。

問題根源

Agent 嘅學習機制有兩個層面:

  1. 短期學習:從對話入面學習(Session + MEMORY.md)
  2. 長期學習:從外部信息入面學習(Knowledge base 更新)

OpenClaw 本身支援短期學習,但長期學習就需要我哋自己設計。

我嘅解決方案:構建 Agent 學習系統

我設計咗一個「雙層學習」系統:

1. 短期學習:對話驅動

機制:Agent 從對話入面提取有價值嘅信息,寫入 MEMORY.md。

配置方式:在 AGENTS.md 入面定義學習規則:

## 學習規則

當滿足以下條件時,將信息寫入 MEMORY.md:
1. 用戶提供了新的知識點
2. Agent 學到了新的解決方案
3. 用戶明確要求記住某事
4. 對話中發現的重要規律

MEMORY.md 的格式:
```markdown
## 主題
時間:YYYY-MM-DD
來源:對話/用戶
內容:具體的知識點
重要性:高/中/低

**驗證方式**:定期檢查 MEMORY.md,確認 Agent 在持續學習。

#### 2. 長期學習:知識庫更新

**機制**:定期更新 Agent 的 knowledge base。

我設計了三個更新源:

**A. 官方文檔同步**

```bash
#!/bin/bash
# sync-official-docs.sh

# Flutter 官方文檔
curl -o ~/.openclaw/workspace-flutter-tutor/knowledge/flutter-docs.md \
  https://docs.flutter.dev/overview.md

# C++ 官方文檔
curl -o ~/.openclaw/workspace-cpp-tutor/knowledge/cpp-docs.md \
  https://en.cppreference.com/w/cpp

每個月運行一次。

B. 社區熱點跟蹤

使用 researcher Agent 定期抓取社區熱點:

#!/bin/bash
# track-community-trends.sh

# 讓 researcher Agent 抓取 Flutter 社區熱點
openclaw agent run researcher \
  "抓取本週 Flutter 社區熱點,更新到 knowledge base"

每星期運行一次。

C. 用戶反饋整合

將用戶嘅反饋同修正整合到 knowledge base:

#!/bin/bash
# integrate-user-feedback.sh

# 從對話中提取用戶修正
grep -r "修正:" ~/.openclaw/agents/*/sessions/ >> user-corrections.md

# 讓 Agent 整理反饋
openclaw agent run researcher \
  "整理 user-corrections.md,更新相關 Agent 的 knowledge base"

3. 學習效果評估

定期評估 Agent 嘅學習效果:

測試集驗證

創建測試用例,定期叫 Agent 回答,驗證能力提升:

## Flutter Agent 測試集

| 問題 | 期望答案類型 | 當前正確率 |
|------|-------------|-----------|
| 如何優化 Widget 重建? | 性能優化方案 | 85% |
| 狀態管理有哪些方案? | 方案列表 | 90% |
| 如何處理路由跳轉? | 代碼示例 | 80% |

如果正確率下降,即係學習出咗問題(可能學到錯誤信息)。

實施步驟

1. 配置短期學習

喺每個 Agent 嘅 AGENTS.md 入面加學習規則。

2. 設定定期更新腳本

創建三個腳本:sync-official-docs.shtrack-community-trends.shintegrate-user-feedback.sh

3. 設定定時任務

# 每月同步官方文檔
0 0 1 * * bash sync-official-docs.sh

# 每週跟蹤社區熱點
0 0 * * 0 bash track-community-trends.sh

# 每天整合用戶反饋
0 0 * * * bash integrate-user-feedback.sh

4. 創建測試集

為每個 Agent 創建測試集,設定每星期評估。

效果驗證

運行咗一段時間之後,我觀察到:

  • Agent 嘅回答質量持續提升
  • 新技術出現之後,Agent 好快就掌握到
  • 用戶反饋可以快速整合到 knowledge base
  • 測試集正確率由 75% 提升到 92%

Agent 持續學習嘅問題,解決咗。


問題 7:點樣令 Agent 真正「明」我?

我遇到嘅坑

解決曬所有技術問題之後,我仲有一個「軟問題」:Agent 唔夠明白我。

佢可以準確回答技術問題,但佢唔知我嘅偏好、習慣、工作方式。

比如:

  • 我鍾意簡潔嘅代碼,佢就寫出繁複嘅實現
  • 我關注性能優化,佢就推薦咗簡單嘅方案
  • 我習慣用某種工具鏈,佢就推薦咗另一種

問題根源

Agent 缺少「用戶畫像」同「上下文先驗」。

OpenClaw 提供咗 USER.md 文件,專門用嚟存用戶偏好,但我之前冇好好利用。

我嘅解決方案:構建用戶畫像系統

我設計咗三個層次嘅用戶畫像:

1. 基礎偏好(USER.md)

喺每個 Agent 嘅 USER.md 入面定義基礎偏好:

## 用戶偏好

### 編程偏好
語言:TypeScript、Dart、C++
代碼風格:簡潔、可讀性優先
注重:性能、可維護性

### 工作習慣
工作時間:週一到週五 9:00-18:00
項目類型:Flutter 應用、桌面工具
團隊規模:3-5 人

### 溝通風格
喜歡直接,不喜歡廢話
偏好代碼示例,不喜歡純文字
喜歡對比方案

### 不喜歡的
❌ 過於複雜的抽象
❌ 不必要的封裝
❌ 引入過多依賴

2. 項目上下文(PROJECT.md)

為每個項目創建 PROJECT.md

## 項目:Flutter 性能監控工具

### 項目信息
名稱:Flutter Perf Monitor
報告週期:2024.03-2025.06
角色:核心開發者

### 技術棧
Flutter 3.24
Dart 3.5
包:provider、flutter_riverpod、dio

### 項目規範
代碼風格:Google Dart Style Guide
測試覆蓋:>80%
CI/CD:GitHub Actions

### 已解決的問題
Widget 重建優化(已解決,使用 const)
內存泄漏(已解決,使用 dispose)
列表性能(已解決,使用 ListView.builder)

### 待解決的問題
網絡請求優化
圖片緩存策略
狀態管理重構

3. 動態上下文(SESSION.md)

喺對話開始時注入動態上下文:

## ��前會話上下文

當前任務:優化 Flutter 列表性能
優先級:高
截止時間:2026-03-15
相關資源:已提供 Flutter 官方性能文檔

實施步驟

1. 完善 USER.md

為每個 Agent 創建詳細嘅 USER.md,定義你嘅偏好、習慣、工作方式。

2. 創建 PROJECT.md

為你嘅主要項目創建 PROJECT.md,擺喺對應嘅 Agent workspace 入面。

3. 用上下文注入

喺對話開始時,先提供上下文:

項目:Flutter Perf Monitor
任務:優化列表性能
優先級:高,下週五截止

請幫我優化這個 Flutter 列表性能問題

效果驗證

配置咗用戶畫像之後,Agent 嘅回答有咗明顯變化:

改造前

可以用 ListView 或 GridView,根據需求選擇。如果數據量大,建議用分頁加載...

改造後

根據你嘅 Flutter Perf Monitor 項目,我建議用 ListView.builder 並配合 itemBuilder 懶加載。考慮到你注重性能,可以:

  1. 使用 const 構造函數減少 Widget 重建
  2. 使用 AutomaticKeepAliveClientMixin 保持狀態
  3. 配合 provider 管理狀態,符合你項目嘅技術棧

Agent 真正開始「明」我喇。


結尾:從工具到夥伴

搞完呢一整 set,我最大嘅感受係:OpenClaw 唔單止係一個工具,而係一個可以培養嘅夥伴。

一年前同 Manus 嘅朋友傾偈嗰陣,佢分享過一個觀點:

「要做同 AI 能力正交嘅事。」

花時間心力打造同迭代自己嘅 Agent,其實就係同 AI 能力正交嘅一件事,同培養一個人一樣。AI 模型越來越聰明,我哋只需要升級底層 LLM,嗰啲同 AI 互動留低嘅長期數據,都會變成我哋未來更好驅動 AI 嘅私人寶貴數據。

而家,我擁有咗一個「個人嘅 AI 團隊」:

  • flutter-tutor:Flutter 技術專家
  • cpp-tutor:C++ 技術專家
  • researcher:研究分析師
  • daily-robot:日常助理
  • ceo:統籌協調

佢哋唔係冷冰冰嘅工具,而係我嘅「數字同事」,明我嘅偏好,明我嘅項目,幫我解決各種問題。

呢個,就係 OpenClaw 嘅魅力。


附錄:快速部署清單

如果你都想砌自己嘅 OpenClaw 多 Agent 架構,呢個係我嘅建議清單:

✅ 部署前準備

  • [ ] 揀 IM 工具(建議揀冇額度限制嘅)
  • [ ] 揀 LLM Model(越聰明越好)
  • [ ] 準備硬件(Mac Mini M1/M4,睇嚇要唔要跑本地模型)

✅ 快速開始(30 分鐘)

  • [ ] 執行安裝:curl -fsSL https://openclaw.ai/install.sh | bash
  • [ ] 完成 onboarding 配置
  • [ ] 測試 main Agent

✅ 多 Agent 部署

  • [ ] 新增 Agent:openclaw agents add xxx
  • [ ] 配置每個 Agent 嘅 workspace 文件(AGENTS.md、SOUL.md、TOOLS.md)
  • [ ] 配置 AgentToAgent 同 Subagents
  • [ ] 測試 Agent 通信

✅ 精細化管控

  • [ ] 為每個 Agent 配置專屬 Skills
  • [ ] 設定 Skills 延遲加載
  • [ ] 配置 Session 壓縮策略
  • [ ] 配置 Memory.md 溢出機制

✅ 運維保障

  • [ ] 創建 .gitignore,排除敏感信息
  • [ ] 分離密鑰同配置,用環境變量
  • [ ] 創建配置驗證腳本
  • [ ] 設定定期備份
  • [ ] 配置學習系統(官方文檔同步、社區熱點跟蹤)

✅ 用戶畫像

  • [ ] 完善 USER.md
  • [ ] 創建 PROJECT.md
  • [ ] 配置動態上下文注入

預計總時間:2-3 日(包埋除錯同優化)

祝你都可以砌出自己嘅 AI 團隊!


作者:Maynor日期:2026-03-10OpenClaw 版本:v2026.3.7

相關連結

  • OpenClaw 官網:https://openclaw.ai
  • Clawhub 技能市場:https://clawhub.ai
  • OpenClaw GitHub:https://github.com/openclaw-ai/openclaw

OpenClaw 實戰:7個真實場景的多 Agent 落地經驗,一個開發者的 OpenClaw 之旅

開篇:一個開發者的 OpenClaw 之旅

大家好,我是 Maynor。

"OpenClaw 那麼好玩嗎?跟 Happy 有什麼區別?"

這個問題讓我停下來思考。作為一名在 AI 領域摸爬滾打幾年的開發者,我搭建過各種各樣的 Agent 架構。在沒有 OpenClaw 之前,我和朋友們交流 Agent 之前,總是要先花半天時間介紹各自的架構設計——Skills 怎麼管理、Memory 怎麼優化、Session 怎麼保活……

但當我用 OpenClaw 搭建完自己的多 Agent 架構後,一切都變了。

我們再也不用介紹"你的 Agent 是怎麼設計的"了,直接聊的就是:怎麼保活、怎麼替換 RAG 算法、怎麼部署多 Agent、怎麼應用 Good Case。

簡直絲滑爆了。

這篇文章,我想不講架構設計,不講���術原理,只講我在使用 OpenClaw 過程中遇到的 7 個真實問題,以及我是怎麼解決的

如果你也在考慮搭建自己的 AI 團隊,或者已經在折騰 Agent 但遇到了各種坑,希望這些經驗能幫到你。


問題 1:單 Agent 記憶混亂怎麼辦?

我遇到的坑

這是我最先遇到的問題,也是最典型的坑。

當時我搭建了一個 Flutter 學習助手 Agent,讓我強化 Flutter 技能。剛開始效果不錯,但有一天在討論中,我無意間提到了幾句 C++ 的內容。

問題出現了——在後續的對話中,這個 Agent 開始"偏科"了

當我讓它提供 Demo 示例時,它不再提供 Flutter 相關的示例,而是開始給我寫 C++ 代碼。我問它 Flutter 的 Widget 樹怎麼優化,它卻跟我討論 C++ 的內存管理。

我意識到,這是記憶機制的副作用。Agent 的 memory 記住了我提到過 C++,但它無法區分這只是一個臨時話題,不是它的核心職責。

問題根源

深入分析後,我發現了兩個根本問題:

1. Context 窗口的瓶頸

熟悉 LLM 原理的同學都知道,LLM 成也 transformer,卡脖子的地方也在 transformer。Context 的瓶頸嚴格約束了單 Agent 智能的發揮。

傳統的單 Agent 架構,通過不斷往 Prompt 中注入身份定義、Skills 列表、歷史對話,正在一步步蠶食 LLM ��� Context 窗口。當對話越來越長,Agent 的"專注度"就越來越差。

單 Agent 架構的問題
單 Agent 架構的問題

2. 專事專做的必要性

用一個人的比喻來說:你讓一個全科醫生同時做心臟手術、骨科手術、眼科手術,結果可想而知。

Agent 也是一樣。當它承載了太多職責,記憶中混雜了太多不同領域的信息,它的判斷質量就會下降。

我的解決方案:多 Agent 架構

基於這個教訓,我重新設計了架構——讓每個 Agent 專事專做

我把原來的"全能 Agent"拆分成多個"專項 Agent":

  • flutter-tutor:專注 Flutter 技術問答
  • cpp-tutor:專注 C++ 技術問答
  • daily-robot:處理日常任務(天氣提醒、日程管理)
  • researcher:負責資料收集和深度調研
  • ceo:統籌協調,負責任務分配

每個 Agent 都有獨立的 workspace 和 memory,互不干擾。

多 Agent 架構
多 Agent 架構

實施步驟

如果你想從單 Agent 遷移到多 Agent,可以按這個步驟來:

1. 新增 Agent

openclaw agents add flutter-tutor
openclaw agents add cpp-tutor
openclaw agents add daily-robot

OpenClaw 會引導你完成基礎配置,按照流程填上 IM bot API 和 LLM API 即可,整個過程大概半小時。

2. 配置 Agent 身份

在 workspace-flutter-tutor/SOUL.md 中定義身份:

你是 Flutter 技術專家,精通 Flutter 開發、Widget 架構、性能優化。

你的職責:
回答 Flutter 相關的技術問題
提供 Flutter 最佳實踐建議
幫助診斷 Flutter 應用問題

你不應該做的:
不要回答非 Flutter 的問題(如 C++、Python)
不要提供跨技術棧的對比建議

3. 配置 Tools 權限

在 workspace-flutter-tutor/TOOLS.md 中限制工具權限,只給它必要的工具。

效果驗證

改造完成後,我又測試了一遍。這次:

  • 問 Flutter 問題,flutter-tutor 響應,答案准確、專注
  • 問 C++ 問題,cpp-tutor 響應,不再混淆
  • ceo 根據問題類型,自動調度到對應的 Agent

記憶混亂的問題,徹底解決了。


問題 2:Agent 技能太多導致調用混亂?

我遇到的坑

拆分多 Agent 後,問題解決了一半,但又遇到了新問題。

一開始,我覺得 Agent 的 Skills 越多越好。於是我給每個 Agent 都配置了大量的 Skills:搜索、天氣、文件操作、代碼執行、繪圖、TTS、RAG、郵件……

結果呢?

Agent 開始"幻覺"��。

我讓 flutter-tutor 幫我看一個 Flutter 項目,它卻莫名其妙地調用了郵件發送工具,想給我發郵件。

我讓它查一個 API 文檔,它先用繪圖工具畫了一張圖,然後再去搜索。

更嚴重的是,有時候它根本不知道該用哪個工具,在幾個工具之間反覆嘗試,浪費 Token。

問題根源

分析後,我發現是**工具白名單變成了一把"萬能鑰匙"**。

當 Agent 有太多工具可以選擇時,LLM 的決策難度急劇增加。這就好比給一個人一個裝着 50 把鑰匙的鑰匙串,讓他自己去開門——他可能要試很多次才能找到對的。

另一個問題是**工具沒有明確的"觸發條件"**。雖然每個 Skill 都有 description,但在實際使用中,Agent 很難準確判斷什麼時候該用哪個工具。

我的解決方案:精細化 Skills 管理

我採用了"基礎通用能力 + 專屬能力"的策略,重新設計了每個 Agent 的 Skills 配置。

1. 分層配置

基礎通用能力(所有 Agent 共享)

  • brave-search:聯網搜索(獲取信息必需)
  • healthcheck:健康檢查
  • read/write:基礎文件操作

專屬能力(按需配置)

Skills 分層配置
Skills 分層配置
Agent
專屬 Skills
flutter-tutorcode-executor
flutter-debug
daily-robotweather
calendarreminder
family-agenttts
weather(定時天氣彙報)
researcherweb-fetch
summarizedeep-research
content-creatorimage-gen
baoyu-cover-image

這樣,每個 Agent 的 Skills 數量控制在 5-8 個,既保證能力,又不會造成混亂。

2. 明確觸發條件

在每個 Skill 的 description 中,我增加了更明確的觸發條件:

原來模糊的描述

description: "搜索相關信息"

改進後的描述

description: "使用 Brave 搜索引擎搜索相關信息。僅在以下情況使用:
1. 用戶明確要求搜索
2. 需要獲取最新信息
3. 當前 knowledge base 中沒有相關內容
不要用於:查詢本地文件、執行已知操作"

3. 使用 requires 機制

OpenClaw 支持 requires 機制,可以在 Skill 配置中聲明前置條件:

name: weather
description: "Get current weather and forecasts..."
metadata:
  openclaw:
    requires:
      bins: ["curl"]
      config:
        - "weather.api_key"

只有滿足條件的 Agent 才能加載這個 Skill。

實施步驟

1. 清理冗餘 Skills

先統計一下每個 Agent 有多少 Skills,然後逐個審查必要性。

我當時的策略是:如果一個 Skill 過去一週都沒被調用過,就把它移除。

2. 使用 Clawhub 管理

Clawhub 是 OpenClaw 的 Skills 市場,可以方便地管理 Skills:

# 語義搜索 Skills
clawhub search "calendar management"

# 安裝指定 Skill
clawhub install <skill-slug>

# 列出已安裝的 Skills
clawhub list

# 更新所有已安裝的 Skills
clawhub update --all

推薦的優質 Skills:

  • find-skills:技能發現
  • summarize:內容總結
  • brave-search:聯網搜索
  • frontend-design:前端設計輔助

3. 定期清理

我設置了一個定期任務,每兩週用高階模型掃描一次 Skills,清理:

  • 低質量 Skill
  • 衝突的 Skill
  • 長期未使用的 Skill

效果驗證

改造後,我觀察到:

  • Agent 調用工具的準確率從 60% 提升到 95%
  • Token 消耗減少了 30%(減少了無效嘗試)
  • 響應速度明顯提升

工具混亂的問題,也解決了。


問題 3:多個 Agent 如何協同工作?

我遇到的坑

拆分完 Agent、管好 Skills 後,我遇到一個更復雜的問題:Agent 之間怎麼合作?

最開始的方案是讓用戶手動指定。比如:

用戶:讓 flutter-tutor 幫我看這個 Flutter 項目

這雖然能用,但太繁瑣了。我希望有一個 ceo Agent,能自動識別任務,然後調度給合適的 Agent。

於是我配置了多 Agent 通信,但遇到了一堆新問題:

  1. ceo 不知道有哪些 Agent 可用
  2. Agent 之間通信後,過了一天就忘了對方的存在
  3. 不知道什麼時候該用 sessions_send,什麼時候該用 sessions_spawn
  4. 多 Agent 後,IM 額度飛速消耗

問題根源

我深入研究了 OpenClaw 的多 Agent 通信機制,發現了兩個核心工具:

1. sessions_send`

向已存在的 session 發消息。就像給同事發消息,他在自己的上下文中處理。

callAgent("flutter-tutor", {
  message: "繼續之前的討論",
  method: "sessions_send"
})

2. sessions_spawn`

在獨立環境中運行任務,僱傭臨時工。

callAgent("flutter-tutor", {
  message: "幫我優化這個 Flutter 項目",
  method: "sessions_spawn"
})

我的問題是沒有搞清楚這兩個工具的區別,也沒有正確配置 Agent 之間的關係。

我的解決方案:扁平化 + 雙向通信

我參考了組織中高效運作的原則:扁平化、達成目標是最終目的,層級只是方式

基於這個原則,我設計了一個"全���聯"的多 Agent 架構:

1. 配置 AgentToAgent(sessions_send)

在 openclaw.json 中配置所有 Agent 之間的通信權限:

{
  "tools": {
    "agentToAgent": {
      "enabled"true,
      "allow": ["ceo""flutter-tutor""cpp-tutor""daily-robot""researcher"]
    },
    "sessions": {
      "visibility""all"  // 重要!一定要配置
    }
  }
}

這樣,所有 Agent 都可以互相發消息,就像公司的同事可以自由溝通。

2. 配置 SubAgents(sessions_spawn)

讓每個 Agent 都能指揮其他 Agent,就像每個人都有權找其他同事幫忙:

{
  "id""ceo",
  "name""CEO",
  "workspace""/Users/blinblin/.openclaw/workspace-ceo",
  "subagents": {
    "allowAgents": ["flutter-tutor""cpp-tutor""daily-robot""researcher"]
  }
},
{
  "id""flutter-tutor",
  "name""Flutter Tutor",
  "workspace""/Users/blinblin/.openclaw/workspace-flutter-tutor",
  "subagents": {
    "allowAgents": ["ceo""researcher"]
  }
},
{
  "id""cpp-tutor",
  "name""C++ Tutor",
  "workspace""/Users/blinblin/.openclaw/workspace-cpp-tutor",
  "subagents": {
    "allowAgents": ["ceo""researcher"]
  }
}

3. 在 AGENTS.md 中固化 Agent 關係

這是最容易被忽略的一步。

Agent 之間的通信是用 session 記憶的,它能記住會話中提到的 Agent。但當短期記憶遺忘後,它就忘了怎麼跟其他 Agent 通信了。

解決方法是在每個 Agent 的 workspace/AGENTS.md 中明確聲明其他 Agent 的身份:

## Agent 團隊成員

當你需要其他角色的幫助時:

**Flutter 技術問題** → 調用 `flutter-tutor` Agent
**C++ 技術問題** → 調用 `cpp-tutor` Agent
**資料收集和深度調研** → 調用 `researcher` Agent
**日常任務** → 調用 `daily-robot` Agent

使用 `callAgent("agent-name")` 來直接通信。

這個內容會被注入到 system prompt 中,Agent 就不會忘了團隊的存在。

4. 解決 IM 額度問題

這是最坑的一個問題。

OpenClaw 的網關機制中有一個定時快照邏輯:

const healthInterval = setInterval(() => {
  void params.refreshGatewayHealthSanpshot({probe:true})…
})

這個邏輯每 60 秒 ping 一次 IM。如果我有 10 個 Agent,每分鐘就有 10 次 ping,IM 額度很快耗盡。

解決方案:選擇一個沒有額度限制的 IM 工具(如企業微信、飛書)。

實施步驟

1. 配置 openclaw.json

按照上面的模板配置 agentToAgent 和 subagents

2. 編寫每個 Agent 的 AGENTS.md

在每個 Agent 的 workspace 中創建 AGENTS.md,聲明團隊成員和分工。

3. 測試通信

測試兩個場景:

  • sessions_send:讓 flutter-tutor 找 researcher 查資料,然後繼續基於這個資料討論
  • sessions_spawn:讓 ceo 給 flutter-tutor 一個獨立任務,要求返回結果

4. 測試記憶持久性

讓兩個 Agent 通信,然後等 6 小時,再讓它們繼續之前的對話。確認是複用 session 而不是新建。

效果驗證

改造完成後:

  • ceo 能自動識別任務類型,調度到合適的 Agent
  • Agent 之間可以自由通信,不會"遺忘"隊友
  • 即使過了幾天,Agent 仍然知道如何調用其他 Agent
  • IM 額度問題通過選擇合適的 IM 工具解決

多 Agent 協同的問題,完美解決。


問題 4:對話太長爆 Context?

我遇到的坑

隨着對話輪次越來越多,我遇到了一個經典問題:Context 爆了。

一次和 flutter-tutor 討論一個複雜的 Flutter 性能優化問題,我們來回聊了 50 多輪。突然,Agent 開始回答"上下文已滿"類似的錯誤信息。

我檢查了一下,發現 session 文件已經快 1MB 了。

問題根源

這個問題有兩個層面:

1. Session 太長,全部發給 LLM 會爆 Context

這是直覺的問題。如果每次對話都把所有歷史記錄發給 LLM,很快就會達到上限。

2. Session 文件本身越來越大

即使做了壓縮,session 文件本身也會越來越大,讀取和解析都會變慢。

我的解決方案:深入理解 OpenClaw 的記憶機制

我深入研究 OpenClaw 的源碼,發現它有一套非常精巧的記憶管理機制。

1. Session 的三層存儲結構

.openclaw/agents/xxx/sessions/
├── session-1.jsonl          # 會話記錄(按需加載)

.openclaw/workspace-xxx/
├── memory/
│   ├── 2026-03-01.md       # 按天記錄的原始記憶
│   ├── 2026-03-02.md
├── MEMORY.md                # LLM 精練後的記憶(長期知識)

2. Session 的三級優化策略

OpenClaw 不會把全量 session 發給 LLM,而是做了三層優化:

A. Compaction(壓縮) - 持久化

當對話太長時,舊消息會被總結成一個 summary

壓縮前發給 LLM:
[user1, assistant1, user2, assistant2, … , user100, assistant100]

壓縮後發給 LLM:
[compaction_summary, user80, assistant80, … , user100, assistant100]
           ↑
         firstKeptEntryId 控制壓縮程度

壓縮後會寫入 .jsonl 文件(持久化)。下次對話繼續使用壓縮後的歷史。

B. Session Pruning(修剪) - 臨時

在發給 LLM 之前,臨時裁剪舊的 tool 結果。

修剪前 JSONL:
[user1, assistant1, toolResult1(10KB), user2, assistant2, toolResult2(5KB)]

修剪後發給 LLM:
[user1, assistant1, "[Old tool result cleared]", user2, assistant2, toolResult2(5KB)]
            ↑ 舊的 tool 結果被替換

注意:這個修剪策略不修改 JSONL 文件,只是內存級別操作。

C. Memory.md 溢出機制

當 Session 接近 context 上限時,OpenClaw 會自動提示 Agent 寫入 MEMORY.md,然後再壓縮 Session。

3. Agent 如何決策使用 Memory

Agent 不是簡單地把所有 memory 都塞給 LLM,而是有一個決策流程:

用戶提問
   ↓
分析話題類型
   ↓
判斷是否需要檢索 MEMORY.md
   ↓
如果需要:
   - 使用 semantic search 檢索相關內容
   - 按相關性排序
   - 只取前 3-5 個最相關的片段
   ↓
構建 prompt(system + relevant memory + user message)
   ↓
發送給 LLM

實施步驟

1. 調整壓縮策略

在 openclaw.json 中調整壓縮參數:

{
  "session": {
    "compaction": {
      "enabled"true,
      "firstKeptEntryId"80,  // 保留最近 80 條消息
      "compressionThreshold"100  // 超過 100 條時觸發壓縮
    }
  }
}

2. 啓用 Memory.md 溢出機制

在 Agent 的 AGENTS.md 中配置:

## Memory 管理策略

當對話長度超過 context 上限的 80% 時:
1. 自動將重要信息總結並寫入 MEMORY.md
2. 壓縮 session,只保留最近的消息

Memory.md 的組織方式:
按 topic 分類
標註時間戳
重要信息優先記錄

3. 定期清理 memory 目錄

設置一個定時任務,每週清理一次 memory/ 目錄中的舊文件:

# 清理 30 天前的 memory
find ~/.openclaw/workspace-xxx/memory/ -name "*.md" -mtime +30 -delete

效果驗證

改造後:

  • 即使聊了幾百輪,Context 也不會爆
  • Session 文件大小保持在合理範圍(<500KB)
  • 重要知識沉澱到 MEMORY.md,不會丟失
  • 響應速度沒有明顯下降

Context 爆炸的問題,徹底解決。


問題 5:配置搞掛了怎麼辦?

我遇到的坑

OpenClaw 的配置非常靈活,但這也意味着容易配錯

有一次,我在調整 openclaw.json 時,不小心把一個冒號寫成了逗號。結果:

  • 所有 Agent 都無法啓動
  • Gateway 報錯信息看不懂
  • 我甚至不知道是哪個文件出錯了

還有一次,我在 AGENTS.md 中加了大量的自定義 prompt,導致 system prompt 長度超過了模型的上限,Agent 一啓動就崩。

最可怕的是,OpenClaw 存了太多本地數據(sessions、memory、配置),一旦配置搞掛了,整個系統就癱瘓了。

問題根源

OpenClaw 的配置有這些問題:

  1. 沒有統一的配置驗證機制
  2. 密鑰和配置混在一起,容易泄露
  3. 沒有版本控制,改壞了很難回退
  4. 錯誤提示不夠友好,難以定位問題

我的解決方案:配置管理最佳實踐

我總結了一套 OpenClaw 配置管理的最佳實踐,避免配置搞掛的慘劇。

1. 版本控制(重要!)

絕對不要把敏感信息提交到 Git!

創建 .gitignore

# OpenClaw 敏感信息
.openclaw/agents/*/sessions/
.openclaw/workspace-*/memory/
.openclaw/keys.json
openclaw-keys.json

# 只提交核心配置
!.openclaw/openclaw.json
!.openclaw/agents/*/agent/
!.openclaw/workspace-*/
!.openclaw/workspace-*/AGENTS.md
!.openclaw/workspace-*/SOUL.md
!.openclaw/workspace-*/TOOLS.md
!.openclaw/workspace-*/IDENTITY.md
!.openclaw/workspace-*/USER.md
!.openclaw/workspace-*/MEMORY.md

核心思想

  • Session 和 memory 是私有數據,不提交
  • Agent 的 workspace 配置文件可以提交
  • 密鑰通過環境變量管理

2. 密鑰動態注入

openclaw.json 中同時存儲了"密鑰"和"核心 config",這很容易導致密鑰泄露。

解決方案:使用環境變量管理密鑰。

創建 openclaw-keys.json(不提交到 Git):

{
  "llm": {
    "provider""openai",
    "apiKey""${OPENAI_API_KEY}"
  },
  "im": {
    "provider""telegram",
    "botToken""${TELEGRAM_BOT_TOKEN}"
  }
}

創建 .env(不提交到 Git):

OPENAI_API_KEY=sk-xxx
TELEGRAM_BOT_TOKEN=xxx

啓動前加載環境變量:

source .env
openclaw gateway start

3. 配置驗證

OpenClaw 自帶了一些配置驗證,但不夠完善。我寫了一個簡單的驗證腳本:

#!/bin/bash
# validate-config.sh

echo "正在驗證 OpenClaw 配置..."

# 1. 檢查 openclaw.json 語法
if ! jq empty ~/.openclaw/openclaw.json 2>/dev/null; then
    echo "❌ 錯誤:openclaw.json 語法錯誤"
    exit 1
fi

# 2. 檢查所有 workspace 文件
for workspace in ~/.openclaw/workspace-*; do
    if [ -f "$workspace/AGENTS.md" ]; then
        echo "✓ $workspace/AGENTS.md 存在"
    else
        echo "⚠ 警告:$workspace/AGENTS.md 不存在"
    fi
done

# 3. 檢查環境變量
if [ -z "$OPENAI_API_KEY" ]; then
    echo "⚠ 警告:OPENAI_API_KEY 未設置"
fi

echo "配置驗證完成"

每次啓動前運行:

bash validate-config.sh && openclaw gateway start

4. 配置備份

定期備份核心配置:

#!/bin/bash
# backup-config.sh

BACKUP_DIR="$HOME/.openclaw-backups/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

# 備份核心配置
cp ~/.openclaw/openclaw.json "$BACKUP_DIR/"

# 備份所有 workspace 配��
for workspace in ~/.openclaw/workspace-*; do
    name=$(basename "$workspace")
    mkdir -p "$BACKUP_DIR/$name"
    cp "$workspace/AGENTS.md" "$BACKUP_DIR/$name/" 2>/dev/null
    cp "$workspace/SOUL.md" "$BACKUP_DIR/$name/" 2>/dev/null
done

echo "配置已備份到 $BACKUP_DIR"

設置每週自動備份。

5. 不要用 Claude Code 直接操作 OpenClaw

這是最重要的一條經驗。

不要用 Claude Code 來配置 OpenClaw!

CC 目前對 OpenClaw 項目配置的瞭解還有偏差,經常會出現"it works, but it also broke"的情況,導致工程後續極難維護。

推薦流程

  1. 先閲讀 OpenClaw 官方文檔
  2. 使用 OpenClaw 的官方指令配置 Agent
  3. 如果需要 CC 幫忙,先把 OpenClaw 源碼爬下來,讓 CC 學一下源碼
  4. 再讓 CC 針對本地 OpenClaw 的配置進行 debug

給 CC 足夠的源碼語料後,它的交付水平會大幅提升。

實施步驟

1. 設置 Git 和 .gitignore

按照上面的模板創建 .gitignore

2. 分離密鑰和配置

創建 openclaw-keys.json 和 .env,修改 openclaw.json 使用環境變量。

3. 創建驗證和備份腳本

創建 validate-config.sh 和 backup-config.sh,設置定時任務。

4. 啓動前驗證

修改啓動腳本,加入驗證步驟:

# start-openclaw.sh
source .env
bash validate-config.sh && openclaw gateway start

效果驗證

這套方案的效果:

  • 配置改錯了可以快速回退
  • 密鑰不會泄露
  • 每次啓動前自動驗證,避免配置錯誤
  • 有完整的備份,隨時可以恢復

配置搞掛的問題,從根子上解決了。


問題 6:如何讓 Agent 持續學習?

我遇到的坑

搭建完多 Agent 架構後,我發現了一個問題:Agent 不會自己進步。

它每次回答問題,都是基於我給它的初始 knowledge base。它不會從新的對話中學習,也不會從外部信息中更新知識。

這導致 Agent 的能力是靜態的,時間長了就會過時。

問題根源

Agent 的學習機制有兩個層面:

  1. 短期學習:從對話中學習(Session + MEMORY.md)
  2. 長期學習:從外部信息中學習(Knowledge base 更新)

OpenClaw 本身支持短期學習,但長期學習需要我們自己設計。

我的解決方案:構建 Agent 學習系統

我設計了一個"雙層學習"系統:

1. 短期學習:對話驅動

機制:Agent 從對話中提取有價值的信息,寫入 MEMORY.md。

配置方式:在 AGENTS.md 中定義學習規則:

## 學習規則

當滿足以下條件時,將信息寫入 MEMORY.md:
1. 用戶提供了新的知識點
2. Agent 學到了新的解決方案
3. 用戶明確要求記住某事
4. 對話中發現的重要規律

MEMORY.md 的格式:
```markdown
## 主題
時間:YYYY-MM-DD
來源:對話/用戶
內容:具體的知識點
重要性:高/中/低

**驗證方式**:定期檢查 MEMORY.md,確認 Agent 在持續學習。

#### 2. 長期學習:知識庫更新

**機制**:定期更新 Agent 的 knowledge base。

我設計了三個更新源:

**A. 官方文檔同步**

```bash
#!/bin/bash
# sync-official-docs.sh

# Flutter 官方文檔
curl -o ~/.openclaw/workspace-flutter-tutor/knowledge/flutter-docs.md \
  https://docs.flutter.dev/overview.md

# C++ 官方文檔
curl -o ~/.openclaw/workspace-cpp-tutor/knowledge/cpp-docs.md \
  https://en.cppreference.com/w/cpp

每月運行一次。

B. 社區熱點跟蹤

使用 researcher Agent 定期抓取社區熱點:

#!/bin/bash
# track-community-trends.sh

# 讓 researcher Agent 抓取 Flutter 社區熱點
openclaw agent run researcher \
  "抓取本週 Flutter 社區熱點,更新到 knowledge base"

每週運行一次。

C. 用戶反��整合

將用戶的反饋和修正整合到 knowledge base:

#!/bin/bash
# integrate-user-feedback.sh

# 從對話中提取用戶修正
grep -r "修正:" ~/.openclaw/agents/*/sessions/ >> user-corrections.md

# 讓 Agent 整理反饋
openclaw agent run researcher \
  "整理 user-corrections.md,更新相關 Agent 的 knowledge base"

3. 學習效果評估

定期評估 Agent 的學習效果:

測試集驗證

創建測試用例,定期讓 Agent 回答,驗證能力提升:

## Flutter Agent 測試集

| 問題 | 期望答案類型 | 當前正確率 |
|------|-------------|-----------|
| 如何優化 Widget 重建? | 性能優化方案 | 85% |
| 狀態管理有哪些方案? | 方案列表 | 90% |
| 如何處理路由跳轉? | 代碼示例 | 80% |

如果正確率下降,說明學習出了問題(可能是學到了錯誤信息)。

實施步驟

1. 配置短期學習

在每個 Agent 的 AGENTS.md 中添加學習規則。

2. 設置定期更新腳本

創建三個腳本:sync-official-docs.shtrack-community-trends.shintegrate-user-feedback.sh

3. 設置定時任務

# 每月同步官方文檔
0 0 1 * * bash sync-official-docs.sh

# 每週跟蹤社區熱點
0 0 * * 0 bash track-community-trends.sh

# 每天整合用戶反饋
0 0 * * * bash integrate-user-feedback.sh

4. 創建測試集

為每個 Agent 創建測試集,設置每週評估。

效果驗證

運行一段時間後,我觀察到:

  • Agent 的回答質量持續提升
  • 新技術出現後,Agent 很快就能掌握
  • 用戶反饋能快速整合到 knowledge base
  • 測試集正確率從 75% 提升到 92%

Agent 持續學習的問題,解決了。


問題 7:如何讓 Agent 真正"懂"我?

我遇到的坑

解決了所有技術問題後,我還有一個"軟問題":Agent 不夠懂我。

它能準確回答技術問題,但它不知道我的偏好、習慣、工作方式。

比如:

  • 我喜歡簡潔的代碼,它卻寫出繁複的實現
  • 我關注性能優化,它卻推薦了簡單的方案
  • 我習慣用某種工具鏈,它卻推薦了另一種

問題根源

Agent 缺少"用戶畫像"和"上下文先驗"。

OpenClaw 提供了 USER.md 文件,專門用來存儲用戶偏好,但我之前沒有充分利用。

我的解決方案:構建用戶畫像系統

我設計了三個層次的用戶畫像:

1. 基礎偏好(USER.md)

在每個 Agent 的 USER.md 中定義基礎偏好:

## 用戶偏好

### 編程偏好
語言:TypeScript、Dart、C++
代碼風格:簡潔、可讀性優先
注重:性能、可維護性

### 工作習慣
工作時間:週一到週五 9:00-18:00
項目類型:Flutter 應用、桌面工具
團隊規模:3-5 人

### 溝通風格
喜歡直接,不喜歡廢話
偏好代碼示例,不喜歡純文字
喜歡對比方案

### 不喜歡的
❌ 過於複雜的抽象
❌ 不必要的封裝
❌ 引入過多依賴

2. 項目上下文(PROJECT.md)

為每個項目創建 PROJECT.md

## 項目:Flutter 性能監控工具

### 項目信息
名稱:Flutter Perf Monitor
報告週期:2024.03-2025.06
角色:核心開發者

### 技術棧
Flutter 3.24
Dart 3.5
包:provider、flutter_riverpod、dio

### 項目規範
代碼風格:Google Dart Style Guide
測試覆蓋:>80%
CI/CD:GitHub Actions

### 已解決的問題
Widget 重建優化(已解決,使用 const)
內存泄漏(已解決,使用 dispose)
列表性能(已解決,使用 ListView.builder)

### 待解決的問題
網絡請求優化
圖片緩存策略
狀態管理重構

3. 動態上下文(SESSION.md)

在對話開始時注入動態上下文:

## ��前會話上下文

當前任務:優化 Flutter 列表性能
優先級:高
截止時間:2026-03-15
相關資源:已提供 Flutter 官方性能文檔

實施步驟

1. 完善 USER.md

為每個 Agent 創建詳細的 USER.md,定義你的偏好、習慣、工作方式。

2. 創建 PROJECT.md

為你的主要項目創建 PROJECT.md,放在對應的 Agent workspace 中。

3. 使用上下文注入

在對話開始時,先提供上下文:

項目:Flutter Perf Monitor
任務:優化列表性能
優先級:高,下週五截止

請幫我優化這個 Flutter 列表性能問題

效果驗證

配置用戶畫像後,Agent 的回答發生了明顯變化:

改造前

可以使用 ListView 或 GridView,根據需求選擇。如果數據量大,建議使用分頁加載...

改造後

基於你的 Flutter Perf Monitor 項目,我建議使用 ListView.builder 並配合 itemBuilder 懶加載。考慮到你注重性能,可以:

  1. 使用 const 構造函數減少 Widget 重建
  2. 使用 AutomaticKeepAliveClientMixin 保持狀態
  3. 配合 provider 管理狀態,符合你項目的技術棧

Agent 真正開始"懂"我了。


結尾:從工具到夥伴

折騰完這一整套,我最大的感受是:OpenClaw 不只是一個工具,而是一個可以培養的夥伴。

一年前跟 Manus 的朋友聊天時,他分享過一個觀點:

"要做和 AI 能力正交的事情。"

花時間精力打造和迭代自己的 Agent,其實就是跟 AI 能力正交的一件事,跟培養一個人一樣。AI 模型越來越聰明,我們只需要升級���層 LLM,那些跟 AI 交互留下來的長期數據,都將會變成我們未來更好驅動 AI 的私人寶貴數據。

現在,我擁有了一個"個人的 AI 團隊":

  • flutter-tutor:Flutter 技術專家
  • cpp-tutor:C++ 技術專家
  • researcher:研究分析師
  • daily-robot:日常助理
  • ceo:統籌協調

它們不是冷冰冰的工具,而是我的"數字同事",懂我的偏好,懂我的項目,幫我解決各種問題。

這,就是 OpenClaw 的魅力。


附錄:快速部署清單

如果你也想搭建自己的 OpenClaw 多 Agent 架構,這是我的建議清單:

✅ 部署前準備

  • [ ] 選擇 IM 工具(建議選無額度限制的)
  • [ ] 選擇 LLM Model(越聰明越好)
  • [ ] 準備硬件(Mac Mini M1/M4,看是否跑本地模型)

✅ 快速開始(30 分鐘)

  • [ ] 運行安裝:curl -fsSL https://openclaw.ai/install.sh | bash
  • [ ] 完成 onboarding 配置
  • [ ] 測試 main Agent

✅ 多 Agent 部署

  • [ ] 新增 Agent:openclaw agents add xxx
  • [ ] 配置每個 Agent 的 workspace 文件(AGENTS.md、SOUL.md、TOOLS.md)
  • [ ] 配置 AgentToAgent 和 Subagents
  • [ ] 測試 Agent 通信

✅ 精細化管控

  • [ ] 為每個 Agent 配置專屬 Skills
  • [ ] 設置 Skills 延遲加載
  • [ ] 配置 Session 壓縮策略
  • [ ] 配置 Memory.md 溢出機制

✅ 運維保障

  • [ ] 創建 .gitignore,排除敏感信息
  • [ ] 分離密鑰和配置,使用環境變量
  • [ ] 創建配置驗證腳本
  • [ ] 設置定期備份
  • [ ] 配置學習系統(官方文檔同步、社區熱點跟蹤)

✅ 用戶畫像

  • [ ] 完善 USER.md
  • [ ] 創建 PROJECT.md
  • [ ] 配置動態上下文注入

預計總時間:2-3 天(包含調試和優化)

祝你也能搭建出自己的 AI 團隊!


作者:Maynor日期:2026-03-10OpenClaw 版本:v2026.3.7

相關連結

  • OpenClaw 官網:https://openclaw.ai
  • Clawhub 技能市場:https://clawhub.ai
  • OpenClaw GitHub:https://github.com/openclaw-ai/openclaw