跳到內容

OpenClaw System Prompt 運作機制全解析

你有沒有遇過這種情況:給 AI Agent 下了指令,它卻忘記自己在哪個目錄,或者根本不知道手邊有哪些工具可以用?當 System Prompt 變得又臭又長時,模型不只反應變慢,還容易漏掉關鍵的約束條件。

OpenClaw 捨棄了 p-coding-agent 的預設設定,改用一套自研的 System Prompt 構建邏輯。這套流程會根據你當前的環境自動組裝最精簡的指令,確保 Agent 既聰明又不會因為資訊過載而當機。

在調整 System Prompt 行為前,請確保你具備以下條件:

  • 已安裝並運行 OpenClaw
  • 專案 Workspace 中包含基礎配置文件(如 AGENTS.md 或 USER.md)
  • 已在配置中設定 agents.defaults.userTimezone

想讓你的 Agent 快速進入狀況,只需完成以下四個步驟:

  1. 準備基礎文件:在 Workspace 根目錄建立 AGENTS.md 與 IDENTITY.md,定義 Agent 的身分與任務。
  2. 設定時區:在配置中指定 agents.defaults.userTimezone,讓 Agent 具備正確的時間觀念。
  3. 檢查注入內容:使用 /context list 指令查看哪些文件被選入 System Prompt。
  4. 驗證細節:使用 /context detail 查看文件是否因過大而被截斷。

OpenClaw 的 System Prompt 是高度結構化的,主要包含以下幾個區塊:

  • Tooling: 當前的工具列表與簡短描述。
  • Safety: 護欄提醒,防止 AI 繞過監管。
  • Skills: 告知模型如何在需要時加載技能指令。
  • Workspace: 當前工作目錄(agents.defaults.workspace)。
  • Documentation: 本地文件路徑,引導模型優先閱讀本地文檔。
  • Runtime: 包含主機環境、OS、Node.js 版本及模型資訊。
  • Current Date & Time: 使用者當地的時區資訊。

OpenClaw 會根據任務類型自動切換 Prompt 模式,這不是由使用者直接配置,而是由 Runtime 控制:

  • full (預設): 包含所有區塊,適用於主 Agent。
  • minimal: 移除 Skills、Memory Recall、Self-Update 等區塊,專為 Sub-agents 設計。
  • none: 僅回傳基礎的身分標識。

為了讓模型一開始就具備專案上下文,OpenClaw 會自動讀取並修剪以下文件,將其附加在 Project Context 區塊下:

  • AGENTS.md / SOUL.md
  • TOOLS.md / IDENTITY.md
  • USER.md / HEARTBEAT.md
  • BOOTSTRAP.md (僅在全新 Workspace 中出現)

如果文件內容太長,OpenClaw 會進行截斷。你可以透過 agents.defaults.bootstrapMaxChars 來控制每個文件的字數上限(預設為 20000 字)。

當環境中有可用的技能時,OpenClaw 會注入一個精簡的列表:

\<available_skills\>
\<skill\>
\<name\>...\</name\>
\<description\>...\</description\>
\<location\>...\</location\>
\</skill\>
\</available_skills\>

這會要求模型在需要時使用 read 指令去讀取特定路徑的 SKILL.md,而不是把所有技能內容一次塞進 Prompt。

為了保持 Prompt Cache 的穩定性,System Prompt 現在只包含 時區 (Time Zone)。如果 Agent 需要精確的當前時間,它會使用 session_status 工具來獲取狀態卡片上的時間戳。

你可以透過以下參數配置:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormat (auto | 12 | 24)

如果你發現 Agent 遺失了 AGENTS.md 結尾的指令,通常是因為文件超過了 bootstrapMaxChars 的限制。

  • 方案:增加 agents.defaults.bootstrapMaxChars 的數值,或精簡文件內容。

如果 Agent 回報的時間與你本地不符,通常是時區配置錯誤。

  • 方案:檢查 agents.defaults.userTimezone 是否正確設定,並確保 Agent 是透過 session_status 獲取時間而非自行通靈。

想要更進一步優化你的 AI 開發流程?歡迎諮詢 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。