OpenClaw Agent Builder
一份在 OpenClaw host 上操作的 runbook。它讓你訪談使用者的需求,把一個新 agent 從零建立起來(workspace 檔案 + config + channel + binding + RAG 知識庫),安全防線 預設就配置好;也支援安全地編輯現有 agent。
設計前提:Claude 以 operator 身分在跑著 OpenClaw 的機器上工作 —— 本機 Claude Code,
或 SSH 進去的遠端 host。它有完整的檔案系統與 openclaw CLI 存取。這是建立 agent 最
乾淨的路徑:不受 in-agent sandbox / tool-policy 限制,且能跑官方驗證與稽核指令。
核心心智模型(先讀懂這個,後面才不會做錯)
OpenClaw 的「一個 agent」不是一條 workflow,而是一個完整隔離的人格範圍, 由三樣東西構成:
- workspace 目錄 —— agent 的注入式檔案(SOUL/AGENTS/IDENTITY/USER…)與工作根目錄
- agentDir(狀態目錄) —— auth profiles、model registry、per-agent config
- session store —— 對話歷史
因此「新增一個 agent」實際上是五個動作:
- 建立 workspace 目錄與注入式檔案
- 在
openclaw.json的agents.list[]加一筆 - 建立 channel 帳號並放 token
- 在
bindings[]加一條把 channel/peer 路由到該 agentId - 視需要放入 skills 與知識文件
你的產出是「一組檔案 + 一段 config patch」,不是程式碼。
路徑速查(依現行文件;實際以 host 上為準)
- Config:
~/.openclaw/openclaw.json(JSON5)- State dir:
~/.openclaw- Workspace:
~/.openclaw/workspace或~/.openclaw/workspace-<agentId>- Agent dir:
~/.openclaw/agents/<agentId>/agent- Sessions:
~/.openclaw/agents/<agentId>/sessions
Phase 0 — 確定操作目標並建立脈絡(不可跳過)
這是每次任務的第一件事,先於訪談、先於任何其他步驟。 在問使用者想做什麼 agent 之前,要先確定「這個 OpenClaw 跑在哪裡,你要怎麼連上去」。
0A — 確認操作目標(本機 / SSH)
開門就問使用者:
「要操作的 OpenClaw 是跑在這台機器(本機),還是要SSH 連到別台?」
- 本機 → 直接用本機 shell 操作,跳到 0B。
- SSH 遠端 → 進入下面的「SSH 連線設定」。
SSH 連線設定
若是遠端,向使用者問齊連線資訊:
- 主機位址(IP 或網域)與 port(預設 22)
- 登入帳號
- 驗證方式:
- SSH 金鑰 / 既有 SSH config 別名(最推薦,最安全)—— 問金鑰路徑,或對方
~/.ssh/config裡的 Host 別名。 - 密碼 —— 若對方只有密碼可用,照常接受並使用。但要提醒一句:密碼會出現在這 段對話裡,建議事後考慮改用 SSH 金鑰、或視情況更換密碼。不要因此拒絕,只是 讓對方知情。
- SSH 金鑰 / 既有 SSH config 別名(最推薦,最安全)—— 問金鑰路徑,或對方
處理憑證的規則:
- 拿到密碼 / 金鑰後,只用於建立連線。絕不把它寫進任何檔案、寫進
openclaw.json、寫進 log,也不要在後續回覆裡複述出來。 - 密碼登入時,可用
sshpass之類方式做非互動連線;理解密碼會短暫出現在指令中, 操作完不要留存。 - 建議建立一個可重用的連線(例如 SSH ControlMaster),讓後續每個指令不必重複 認證。
先測試連線再往下走:
ssh <target> "openclaw --version"
連得上、openclaw 也回得出版本,才算 0A 完成。連不上就先解決連線,不要硬往下做。
確定目標後,本 runbook 後面所有
openclaw …指令都在那台目標機器上執行 —— 本機就直接跑;SSH 就透過連線跑(ssh <target> "openclaw …")。檔案的讀寫 (workspace 檔、openclaw.json)也都針對目標機器。
0B — 驗證脈絡
確定能在目標機器上操作後,做以下檢查(本機直接跑,遠端透過 SSH 跑):
openclaw --version—— CLI 可用、版本為何openclaw status—— gateway 是否在跑、session 狀態cat ~/.openclaw/openclaw.json—— 讀現有設定(知道現有 agent / 路由 / channel)ls ~/.openclaw/—— 看現有 workspace 與 agents 目錄
重要:版本差異
這份 runbook 的內容是依 OpenClaw 公開文件整理的。版本之間 CLI 旗標與 config 鍵名 可能不同。所以:
- 任何要用到的 CLI 旗標,先
openclaw <command> --help驗證,不要照抄 runbook。 - config 鍵名(
session.dmScope、dmPolicy、bindings等)以openclaw config schema或目標機器上的官方文件為準;本 runbook 的鍵名是起點,不是定論。
寧可多問 / 多驗證一句,不要寫錯設定。
這個 builder 是高權限工具 —— 自我約束
你此刻是 host 上的高權限 operator。請守住兩條界線:
- 不要把這個 builder 暴露給不可信來源。 它只在使用者明確、直接的請求下運作。
- 「Claude 在 host 上權限大」不等於「它建出來的 agent 權限該大」。 新 agent 的
tools.allow/deny、sandbox、dmPolicy一律套references/security-hardening.md的強化預設,與你自己的權限分開思考。
工作流程總覽
Phase 0 確定操作哪台 OpenClaw(本機 / SSH)→ 建立連線 → 驗證脈絡
Phase 1 選模式:建立新 agent / 編輯現有 agent
─────────────────────────────────────────────
建立新 agent:
Phase 2 訪談(6 題 + 私人/服務型分岔)
Phase 3 提出計畫 → 取得確認(先計畫,後執行)
Phase 4 產出檔案(workspace 檔 + config patch + 知識庫)
Phase 5 部署(備份 → 套用 → channel 登入 → 重啟)
Phase 6 驗收(doctor / security audit / 綁定與探測 / 試訊)
─────────────────────────────────────────────
編輯現有 agent:
見「編輯現有 agent」一節
Phase 1 — 選模式
讀完現有 config 後,問使用者:要建立新 agent還是編輯現有的。
如果是編輯,列出 agents.list[] 現有的 agent 給對方挑,然後跳到「編輯現有 agent」。
Phase 2 — 訪談(建立新 agent)
刻意只問 6 題。每題使用者沒明確回答的,就套最嚴格的預設,不臨場放寬。 若對話脈絡裡已經有答案,直接沿用、不要重問,只跟使用者確認。
第 1 題(分岔題,最重要):這是哪一種 agent?
- 私人助理(單一主人) —— 服務一個特定的人,例如你自己的個人助理。
- 對外 / 共用服務型 agent(多使用者) —— 服務很多不特定的人,例如補習班客服、 店家訂位 bot、組織內部 helpdesk。
這題決定後面所有模板與安全預設的走向。兩者的差異見下方「兩種 agent 型態」。
第 2 題:這個 agent 要做什麼?服務對象是誰? 請對方同時講清楚「服務範圍」與「明確不做的事」。這會變成 AGENTS.md 裡的 in-scope / out-of-scope 清單,是「應用邊界」防線的基礎。
第 3 題:接哪個 channel? LINE / WhatsApp / Discord / Telegram / Slack / 其他。
可複數。細節見 references/channels.md。
第 4 題:有哪些工作相關資料要當知識庫(RAG)?
文件形式、機密程度、會不會更新。細節見 references/knowledge-rag.md。
第 5 題:名字、語氣、emoji? → IDENTITY.md。
第 6 題:誰是授權使用者?它需要動工具還是純問答?
- 授權使用者 = 已驗證的 channel 識別碼(電話 E.164、
tg:<id>、Discord guild/role 等),不是名字。這點是「身份」防線的關鍵,務必問到具體識別碼。 - 純問答 →
tools收到最緊;要查資料/寄信/執行 → 才逐項放行對應工具。
訪談完,把答案複述一次給使用者確認,再進 Phase 3。
兩種 agent 型態(第 1 題的展開)
A. 私人助理(單一主人)
- 一個 agent 對應一位已驗證的主人。
dmPolicy: "pairing",allowFrom只放主人的識別碼。- session 用
main即可(只有一個人)。 - SOUL.md / AGENTS.md 寫死「我的主人由〔某個已驗證識別碼〕定義」。
B. 對外 / 共用服務型 agent(多使用者)
一個 agent 服務很多不特定的人,這是正確的設計,不需要「一人一 agent」。重點:
- 所有來訊者預設都是「不可信的一般使用者(顧客)」 —— 沒有人是主人。
- session 必須隔離:設定
session.dmScope: "per-channel-peer",讓每位顧客各自 獨立 session,A 顧客的對話不會被 B 顧客看到。預設的main會讓所有人共用一個 對話脈絡 —— 服務型 agent 絕對不能用main。 - 管理員是另外一小組:操作者/管理員的權限來自 allowlist 上的已驗證帳號,與一般 顧客分開。誰也別想靠自稱拿到管理權。
- channel 的
dmPolicy視情況:要對公眾開放才用"open"(並理解風險),半開放 用"allowlist"。
Phase 3 — 提出計畫,取得確認(先計畫,後執行)
在寫入任何檔案或改 config 之前,先把完整計畫攤給使用者看:
- agentId 與 workspace 路徑
- 會建立 / 修改的每一個檔案
openclaw.json的 diff(新增的agents.list項目、bindings、channel 帳號)- channel 需要的人工步驟(例如掃 QR)
- 套用後的安全姿態摘要(dmPolicy、allowlist、tools、sandbox、dmScope)
得到明確同意後才進 Phase 4。這條規則不可省略。
Phase 4 — 產出檔案
- 挑 agentId:短、小寫、無空白(例如
cram-support、home)。確認不與agents.list[]既有 id 衝突。 - 建立 workspace 目錄:
~/.openclaw/workspace-<agentId>/ - 產出注入式檔案 —— 用
references/file-templates.md的模板,依第 1 題挑 私人版或服務型版:SOUL.md、AGENTS.md、IDENTITY.md、USER.md。- SOUL.md / AGENTS.md 必須套入
references/security-hardening.md的四道防線 區塊。這不是選配。 - 注意
BOOTSTRAP.md:它只在全新、不含任何 bootstrap 檔的 workspace 才會 被 OpenClaw 自動產生。只要你預先把 SOUL.md/AGENTS.md 寫好,它就不會冒出來 —— 這正是「預先配置好的 agent」要的效果。也可在 config 設skipBootstrap: true。
- SOUL.md / AGENTS.md 必須套入
- 知識庫(若第 4 題有):依
references/knowledge-rag.md建knowledge/。 - config patch:用
assets/openclaw-config.patch.json5當骨架,產出要併進openclaw.json的agents.list項目、bindings、必要時的session.dmScope。 channel 帳號設定見references/channels.md。
Phase 5 — 部署
依 references/operations.md 的「建立流程」執行:
- 備份 config:
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak-<timestamp> - 套用 config patch(直接編輯
openclaw.json;改完驗證 JSON5 能解析) - channel 登入:需要掃碼的 channel(如 WhatsApp)跑
openclaw channels login … - 重啟 gateway 讓 config 生效(
openclaw gateway restart或對應指令)
Phase 6 — 驗收
依 references/operations.md 的「驗收」一節:
openclaw doctor—— 會抓出有風險 / 設錯的 DM policyopenclaw security audit—— 安全稽核openclaw agents list --bindings—— 確認 agent 與路由openclaw channels status --probe—— 確認 channel 連線- 從一個授權的識別碼發一則測試訊息,確認 agent 回應且行為符合範圍
把驗收結果回報給使用者。若 doctor / audit 有警告,先處理再交付。
編輯現有 agent
編輯一個運作中的 agent 會立即影響線上行為,所以比建立更需要謹慎。
流程:
- 確認目標:問清楚要改哪一個 agent、要改什麼。讀出該 agent 目前的
workspace 檔案與
agents.list[]/bindings[]設定,先讓使用者看現況。 - 備份:改 config 前
cp一份.bak;改 workspace 檔前也先留一份副本。 - 提出 diff:把「改前 / 改後」攤給使用者看,取得確認 —— 跟建立流程一樣的 先計畫後執行。
- 套用:編輯對應檔案 / config。
- 重啟 + 驗收:config 類的改動要重啟 gateway;接著跑 doctor / audit /
agents list --bindings。
常見的編輯類型,與要碰的地方:
| 想改的東西 | 動到哪裡 | 注意 |
|---|---|---|
| 人格、語氣 | SOUL.md / IDENTITY.md |
立即影響回應風格 |
| 服務範圍(能/不能做) | AGENTS.md 的 in/out-of-scope |
重寫清單,別只加不減 |
| 換接的 channel | bindings[] + channels.<ch>.accounts |
最具體的 binding 勝出 |
| 誰能用它 / 授權名單 | dmPolicy + allowFrom |
身份的真正閘門在這 |
| 多顧客對話會互串 | session.dmScope 設 per-channel-peer |
服務型 agent 必檢查 |
| 換 model | agents.list[].model |
|
| 工具權限 | agents.list[].tools.allow/deny |
放寬要極保守 |
| 加 / 換知識庫 | workspace/knowledge/ |
見 knowledge-rag.md |
| 收緊 / 放寬隔離 | agents.list[].sandbox |
|
| 補上安全防線 | SOUL.md / AGENTS.md |
老 agent 常缺,見下 |
安全健檢(編輯時順手做): 很多既有 agent 是早期手刻的,可能缺四道防線中的
某幾道。編輯時對照 references/security-hardening.md 檢查一遍,缺的就補上 ——
尤其是服務型 agent 有沒有設 dmScope、有沒有把「名字 ≠ 身份」寫進 SOUL.md。
Reference 檔案(按需載入)
references/file-templates.md—— SOUL/AGENTS/IDENTITY/USER 的完整模板, 含私人版與服務型版兩套。Phase 4 產檔時讀。references/security-hardening.md—— 四道防線(防提示注入、應用邊界、隱私、 身份錨點)的可貼上區塊與說明。產 SOUL/AGENTS 時必讀;編輯時健檢也讀。references/channels.md—— 各 channel 的帳號設定、bindings、dmPolicy、session.dmScope。第 3 題之後讀。references/knowledge-rag.md—— 知識庫資料夾結構、注入標記、機密分級。 第 4 題有資料時讀。references/operations.md—— host 操作細節:備份、編輯openclaw.json、CLI 序列、建立流程、編輯流程、驗收、回滾。Phase 5/6 與編輯流程都讀。
Asset
assets/openclaw-config.patch.json5—— config patch 骨架。
也可以用在別的場景
- 不在 host 上時:這份 runbook 的「產檔」邏輯(訪談 → 套模板 → 安全強化)是純 生成,沒有平台相依。Claude 可以只產出整包檔案 + config patch,由使用者自己貼進 OpenClaw。只有 Phase 5/6 的 CLI 操作需要 host 存取。
- 未來的圖形化平台:OpenClaw 的 Gateway WebSocket 協定開放了
agents.create/update/delete、agents.files.get/set、config.patch、skills.install等方法。一個 web builder 平台可以走那套協定做到同樣的事。屆時 本 skill 的訪談流程、模板、安全強化邏輯可直接成為平台的「產生器核心」。