Fundamentals
代理程式執行階段
OpenClaw 內建一個嵌入式代理程式執行階段:包含內建的代理程式迴圈、工具 接線與提示詞組裝,與將對話輪次委派給外部 框架程序不同。每個已設定的代理程式(若要執行多個代理程式,請參閱多代理程式路由) 都有自己的工作區、啟動檔案與工作階段 儲存區。本頁說明該執行階段合約:工作區必須 包含哪些內容、會注入哪些檔案,以及工作階段如何依據這些內容啟動。
工作區(必要)
每個代理程式都使用單一工作區目錄(agents.defaults.workspace,或每個代理程式使用
agents.entries.*.workspace)作為工具與內容脈絡的唯一
工作目錄(cwd)。
建議:使用 openclaw setup 建立缺少的 ~/.openclaw/openclaw.json,並初始化工作區檔案。
完整的工作區配置與備份指南:代理程式工作區
若已啟用 agents.defaults.sandbox,非主要工作階段可使用
agents.defaults.sandbox.workspaceRoot 下的個別工作階段工作區覆寫此設定(請參閱
閘道設定)。
啟動檔案(注入)
在工作區內,OpenClaw 預期存在以下可由使用者編輯的檔案:
| 檔案 | 用途 |
|---|---|
AGENTS.md |
操作指示與「記憶」 |
SOUL.md |
人格、界線、語氣 |
TOOLS.md |
使用者維護的工具附註與慣例 |
IDENTITY.md |
代理程式名稱/風格/表情符號 |
USER.md |
使用者個人資料與偏好的稱呼方式 |
HEARTBEAT.md |
心跳偵測專用指示 |
BOOTSTRAP.md |
一次性的首次執行儀式(完成後刪除) |
MEMORY.md |
根層級長期記憶檔案(若存在) |
在新工作階段的第一個對話輪次中,OpenClaw 會將這些檔案的內容注入系統提示詞的專案內容脈絡。只有當 MEMORY.md 存在於工作區根目錄時,才會注入該檔案。
空白檔案會被略過。大型檔案會經過修剪與截斷,並附上標記,以保持提示詞精簡(若要取得完整內容,請讀取檔案)。缺少檔案時(MEMORY.md 除外),則會改為注入一行「缺少檔案」標記;openclaw setup 會為其建立安全的預設範本。
只有在全新的工作區(不存在其他啟動檔案)中,才會建立 BOOTSTRAP.md。在其尚待處理期間,OpenClaw 會將它保留在專案內容脈絡中,並在系統提示詞中加入初始儀式的啟動指引,而不會將其複製到使用者訊息中。若在完成儀式後將它刪除,之後重新啟動時不會再次建立。
觀察到工作區後,OpenClaw 會將其設定狀態與
證明儲存在共用 SQLite 資料庫
~/.openclaw/state/openclaw.sqlite 中。若最近已證明的工作區
消失或遭到清除,啟動程序會拒絕無聲地重新植入 BOOTSTRAP.md;
請還原工作區,或使用完整的初始設定重設,以便同時清除工作區及其
資料庫狀態。
較舊版本使用工作區 JSON 與 .attested 側載檔案。執行階段
不會讀取這些檔案。請執行 openclaw doctor --fix 以驗證這些檔案、將其
狀態匯入 SQLite,並在確認匯入的資料列後移除各來源檔案。
若要完全停用啟動檔案建立功能(適用於已預先植入內容的工作區),請設定:
{ agents: { defaults: { skipBootstrap: true } } }內建工具
核心工具(讀取/執行/編輯/寫入及相關系統工具)一律可用,
但受工具政策限制。對 OpenAI 模型而言,apply_patch 預設開啟,並受
tools.exec.applyPatch(enabled、workspaceOnly、allowModels)管控。TOOLS.md 不會控制存在哪些工具;它是
關於你希望如何使用這些工具的指引。
Skills
OpenClaw 會從以下位置載入 Skills(依優先順序由高至低):
- 工作區:
<workspace>/skills - 專案代理程式 Skills:
<workspace>/.agents/skills - 個人代理程式 Skills:
~/.agents/skills - 受管理/本機:
~/.openclaw/skills - 隨附(隨安裝項目提供)
- 額外的 Skill 資料夾:
skills.load.extraDirs
Skill 根目錄可以包含分組資料夾,例如
<workspace>/skills/personal/foo/SKILL.md;該 Skill 仍會以其
扁平化的 frontmatter 名稱公開,例如 foo。
Skills 可由設定/環境變數管控(請參閱閘道設定中的 skills)。
執行階段界線
嵌入式代理程式執行階段由 OpenClaw 擁有:模型探索、工具接線、 提示詞組裝、工作階段管理與頻道傳遞共用一個整合式 執行階段介面。
工作階段
工作階段資料列儲存在每個代理程式的 SQLite 資料庫中:
~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
對話記錄 JSONL 檔案仍可存放在
~/.openclaw/agents/<agentId>/sessions/ 下,作為舊版遷移輸入、已刪除或
重設的封存、匯入、匯出與支援成品。作用中的代理程式歷程會
連同工作階段資料列儲存在 SQLite 中。工作階段 ID 固定不變,並由
OpenClaw 選定。OpenClaw 不會讀取其他工具的工作階段資料夾。
串流期間的引導
執行期間收到的輸入提示詞預設會被引導至目前的執行。 引導會在目前的助理對話輪次完成其 工具呼叫後、下一次 LLM 呼叫前傳遞,且不再略過 目前助理訊息中其餘的工具呼叫。
/queue steer 是預設的作用中執行行為。/queue followup 與
/queue collect 會讓訊息等候後續對話輪次,而不進行引導。
/queue interrupt 則會中止作用中的執行。如需瞭解佇列與邊界行為,請參閱佇列
和引導佇列。
區塊串流會在助理區塊完成後立即傳送;此功能
預設關閉(agents.defaults.blockStreamingDefault: "off")。
可透過 agents.defaults.blockStreamingBreak 調整邊界(text_end 與 message_end;預設為 text_end)。
使用 agents.defaults.blockStreamingChunk 控制軟性區塊分段(預設為
800-1200 個字元;優先在段落分隔處分段,其次是換行,最後才是句子)。
使用 agents.defaults.blockStreamingCoalesce 合併串流區塊,以減少
單行訊息洗版(傳送前根據閒置狀態合併)。非 Telegram 頻道需要
明確設定 *.streaming.block.enabled: true 才能啟用區塊回覆(QQ Bot
則會串流區塊回覆,除非 channels.qqbot.streaming.mode 為 "off")。
詳細工具摘要會在工具啟動時發出(不進行防抖);Control UI
會在可用時透過代理程式事件串流工具輸出。
更多詳細資訊:串流與分段。
模型參照
設定中的模型參照(例如 agents.defaults.model 和 agents.defaults.models)會在第一個 / 處分割解析。
- 設定模型時,請使用
provider/model。 - 若模型 ID 本身包含
/(OpenRouter 風格),請包含供應商前綴(例如:openrouter/moonshotai/kimi-k2)。 - 若省略供應商,OpenClaw 會先嘗試別名,接著尋找與該模型 ID 完全相符且唯一的 已設定供應商,最後才回退至 已設定的預設供應商。若該供應商不再提供 已設定的預設模型,OpenClaw 會回退至第一個已設定的 供應商/模型,而不會顯示已失效的已移除供應商預設值。
設定(最低需求)
至少設定:
agents.defaults.workspacechannels.whatsapp.allowFrom(強烈建議)