一文講清Skills概念與OpenClaw運作機制(最佳實踐)
“Skills”在 2025–2026 年的語境里,已不僅是“可復(fù)用提示詞模板”,而逐漸演化為一種可移植的、可工程化治理的“過程性能力包”:以文件夾為最小分發(fā)單元,包含 SKILL.md(YAML frontmatter + Markdown 指令)、可選的 references/(按需加載知識/規(guī)程)、assets/(模板/靜態(tài)資源)與 scripts/(可執(zhí)行腳本),并以“漸進式信息披露(progressive disclosure)”降低上下文成本、提升可維護性與可審計性。AgentSkills 規(guī)范將這一模式標(biāo)準(zhǔn)化:啟動時僅加載元數(shù)據(jù)(name/description),觸發(fā)后加載 SKILL.md 正文,執(zhí)行時再按需讀取資源或運行腳本。
OpenClaw(開源、可自托管的常駐 Agent 平臺)把“Skills”作為核心擴展機制,并顯式實現(xiàn)了:多目錄技能加載與覆蓋優(yōu)先級、基于 metadata 的加載時過濾(OS / binaries / env / config 依賴)、將“可用技能清單”以緊湊 XML 形式注入系統(tǒng)提示、以及與 Slash Commands(/...)的聯(lián)動(可選擇繞過模型,直接把命令分發(fā)到工具以獲得確定性)。同時,圍繞 Skills 的開放生態(tài)(ClawHub 注冊中心、第三方 skills)也帶來了顯著的供應(yīng)鏈與提示注入風(fēng)險,促使社區(qū)與安全廠商提出“把 Skills 當(dāng)作不可信代碼”的運行與隔離建議。
本文從 Prompt 到 Scripts的譜系,逐層給出定義、作用、示例與誤區(qū);進一步系統(tǒng)分解 Skill 的組成成分、運行流程與 LLM 交互模式(同步/異步、流式/批量),并給出可落地的偽碼與 Mermaid 序列圖;隨后給出兩張對比表(Prompt/Memory/MCP/Skills;以及 LLM→工具調(diào)用→Agent→多 Agent→增強記憶→Workflow/Manus→OpenClaw),最后用兩個端到端示例展示從 prompt 到 skill 觸發(fā)、執(zhí)行、結(jié)果整合的完整鏈路。
1.從 Prompt 到 Scripts:可操作上下文的分層譜系
1.1 Prompt
定義:Prompt 是一次模型推理的“輸入上下文集合”,通常包含:系統(tǒng)級指令、用戶輸入、對話歷史、工具/函數(shù)定義與工具返回、以及(可能的)外部檢索片段或記憶摘要等。它不是單一字符串,而是多段結(jié)構(gòu)化內(nèi)容在運行時拼裝后的整體。
作用:Prompt 的核心作用是把“任務(wù)意圖 + 約束 + 可用能力邊界 + 證據(jù)”對齊到一次或多次模型調(diào)用中。提示工程研究與實踐普遍認(rèn)為:結(jié)構(gòu)更清晰、約束更明確的輸入,通常能降低幻覺與偏航概率,但過度復(fù)雜的提示也可能帶來收益遞減。
示例(偽碼):
prompt = [
system("你是一個工程助理。遵循安全與權(quán)限規(guī)則。"),
system("可用工具: search_web, fetch_url, run_script"),
user("總結(jié)最近的 OpenClaw skills 安全事件,并給出緩解建議。"),
tool_result("search_web", {...}), // 后續(xù)回填]response = LLM.generate(prompt)最佳實踐:把 Prompt 當(dāng)作“輸入合約(input contract)”來設(shè)計:明確角色、目標(biāo)、不可做的事、以及可用工具邊界;將可變信息(證據(jù)、運行參數(shù))從不可變規(guī)范(策略、格式)中分離,減少“提示耦合”。
常見誤區(qū):把 Prompt 等同于“幾段話術(shù)”;把所有背景一次性塞進上下文導(dǎo)致窗口膨脹;在缺乏證據(jù)時要求模型“給出權(quán)威結(jié)論”,誘發(fā)編造。
1.2 普通提示詞
定義:普通提示詞指以自然語言為主的指令/問答式輸入,輸出期望也通常是自然語言。它強調(diào)“人類可讀”,但對模型而言約束較松。
作用:快速表達意圖與評估模型能力;適合探索性對話、創(chuàng)意生成、粗略方案討論。
示例:
請用中文解釋 OpenClaw 的 skills 機制, 說明它與 MCP、工具調(diào)用的關(guān)系,并給出工程化最佳實踐。
最佳實踐:用“任務(wù) + 受眾 + 約束 + 輸出格式”四件套寫法減少歧義;把不可妥協(xié)的約束(安全、權(quán)限、引用)寫成顯式規(guī)則。
常見誤區(qū):把復(fù)雜工作流交給一個“長句”提示;把“過程”隱藏,只要“結(jié)果”,導(dǎo)致模型在中間步驟難以自糾錯。
1.3 結(jié)構(gòu)化提示詞
定義:結(jié)構(gòu)化提示詞是指把輸入/輸出組織為明確結(jié)構(gòu)(如分隔區(qū)塊、YAML/JSON、表格約束、或直接使用函數(shù)/工具調(diào)用的 JSON Schema 合約)。在現(xiàn)代 API 里,它往往與“工具調(diào)用(tool/function calling)”與“結(jié)構(gòu)化輸出(structured outputs)”綁定。
作用:把部分“語言問題”變成“接口問題”:模型只負(fù)責(zé)選擇工具與生成參數(shù),運行時負(fù)責(zé)執(zhí)行與校驗,從而提升確定性與可測試性。
示例(OpenAI 風(fēng)格工具定義,JSON Schema)(示意):
{
"tool":
{
"name": "search_web",
"description": "在互聯(lián)網(wǎng)上檢索最新信息并返回結(jié)果列表",
"parameters":
{
"type": "object",
"properties": {
"q": { "type": "string" },
"recency_days": { "type": "integer" }
},
"required": ["q"]
}
}}這類“用 schema 定義工具輸入”的機制是 entity [“company”,“OpenAI”,“ai research company”] 與 entity [“company”,“Anthropic”,“ai safety company”] 文檔中共同強調(diào)的能力形態(tài):工具輸入可被校驗,非法參數(shù)可直接失敗并回傳給模型進入下一輪修正。
最佳實踐:
把“結(jié)構(gòu)”用在真正需要確定性的地方(工具參數(shù)、輸出格式、可審計報告);對 schema 做“向后兼容”設(shè)計(可選字段、版本號);將工具返回做成“短而有效”的上下文,不把大段日志原封不動塞回模型。
常見誤區(qū):以為“給了 JSON schema 就必然嚴(yán)格遵守”;在流式場景下把工具調(diào)用 JSON 當(dāng)作字符串拼接,造成半截 JSON/非法 JSON;把“結(jié)構(gòu)化提示”誤用為“更長的模板”,反而增加 token 負(fù)擔(dān)。
1.4 Command
定義:Command 是“繞過自然語言推理、直接驅(qū)動控制流”的輸入形式。典型表現(xiàn)是 Slash Commands(/...)或 CLI 子命令,其語義更接近“操作系統(tǒng)命令/協(xié)議幀”而不是問答。OpenClaw 的文檔將其明確為由 Gateway 處理:多數(shù)命令必須是以 / 開頭的獨立消息;并存在“directives”(如 /think、/model、/exec)這類會在進入模型前被剝離的控制指令。
作用:
- 把“會話狀態(tài)”(模型選擇、推理強度、是否允許 exec、隊列模式等)顯式化;
- 在安全與可預(yù)期性要求更高的場景下,把路徑從“模型決定”改為“確定性分發(fā)”。OpenClaw 甚至允許 skill 聲明
command-dispatch: tool,使某些 skill 命令直接路由到工具而完全不經(jīng)模型。
示例(OpenClaw):
/status/skill pdf-processing ./input.pdf/think high/exec host=sandbox security=allowlist ask=on-miss
最佳實踐:把命令系統(tǒng)當(dāng)作“控制平面 API”:做授權(quán)(allowlist)、審計、以及“默認(rèn)拒絕”(deny wins)的策略;讓普通自然語言只走“數(shù)據(jù)平面”(模型推理與工具組合),避免把權(quán)限控制混進 prompt。
常見誤區(qū):把 commands 當(dāng)作“更強 prompt”,把敏感信息與權(quán)限開關(guān)暴露在群聊或不可信入口;把“命令執(zhí)行成功”誤判為“任務(wù)已安全完成”,忽視命令鏈路帶來的副作用(例如環(huán)境被修改、憑據(jù)常駐、配置漂移)。
1.5 Metadata description
定義:Metadata description 是“給模型/運行時用于發(fā)現(xiàn)、篩選、觸發(fā)與治理”的緊湊描述層。在 AgentSkills/Skill 體系里,它通常落在 SKILL.md 的 YAML frontmatter(至少 name 與 description),決定“這個 skill 何時該被使用”。
OpenClaw 在此基礎(chǔ)上擴展了更強的運行時 metadata:其技能解析器要求 frontmatter key 多為單行,并建議 metadata 為單行 JSON 對象;metadata.openclaw 可聲明依賴(需要哪些 bins/env/config)、平臺限制(OS)、安裝器規(guī)格、以及與 skills.entries.<name> 的注入與配置綁定。
作用:
- 發(fā)現(xiàn)與觸發(fā):啟動時只加載
name/description,讓模型用低成本“知道有哪些技能”,再在匹配時加載正文。 - 過濾與治理:運行時據(jù) metadata 決定 skill 是否“eligible”(可用),例如缺少二進制依賴或環(huán)境變量則不加載,避免“模型看到不可執(zhí)行能力”導(dǎo)致失敗循環(huán)。
- 安全與權(quán)限邊界:通過
disable-model-invocation讓 skill 不進入模型提示,僅允許用戶顯式調(diào)用;或通過command-dispatch: tool走確定性路徑。
示例(一個合并“規(guī)范 + OpenClaw gating”的 SKILL.md 頭部):
---name:web-researchdescription:面向技術(shù)調(diào)研的證據(jù)檢索與引用匯總。
用戶提到“最新/近況/對比/引用來源”時使用。
metadata:{"openclaw":{"os":["darwin","linux"],"requires":{"config":["web.enabled"]}}}
user-invocable:truedisable-model-invocation:false---最佳實踐:把 description 寫成“可檢索的觸發(fā)器”(包含用戶可能說的關(guān)鍵詞 + 明確的使用邊界);把平臺/依賴寫入 metadata 而不是正文;為 metadata 加版本號與作者信息,便于審計與回滾。元數(shù)據(jù)質(zhì)量直接影響“技能檢索是否被投毒/誤選”,屬于治理重點。
常見誤區(qū):description 過于抽象(“幫助你更高效”)導(dǎo)致檢索泛化;metadata 與實際行為不一致(“只讀”卻要求執(zhí)行腳本);將復(fù)雜 JSON 放入 OpenClaw 不支持的多行 frontmatter,導(dǎo)致解析失敗。
1.6 Reference
定義:Reference 是“技能執(zhí)行時按需加載的補充材料”,典型形態(tài)是獨立 Markdown 文檔、表單填寫指南、API 參考、政策/規(guī)范等。AgentSkills/Claude 的最佳實踐明確建議:SKILL.md 類似目錄(table of contents),詳細(xì)材料放到 reference.md、FORMS.md、examples.md 等文件里,必要時再加載。
作用:
- 把上下文窗口當(dāng)作“公共資源”:只在需要時消耗 token;
- 讓參考資料成為可審計資產(chǎn)(版本控制、diff、評審);
- 讓技能正文保持短小,降低觸發(fā)成本。
示例(目錄結(jié)構(gòu))(來自 Claude 最佳實踐示意):
pdf/├── SKILL.md├── FORMS.md├── reference.md├── examples.md└── scripts/ ├── analyze_form.py ├── fill_form.py └── validate.py
最佳實踐:reference 以“可定位、可檢索”為第一原則:短段落、強標(biāo)題、明確輸入輸出示例;在 SKILL.md 中用相對路徑鏈接引用文件;把組織級 SOP/安全策略放進 references 而不是寫進 prompt 模板里。
常見誤區(qū):把 reference 當(dāng)作“知識倉庫傾倒點”,導(dǎo)致加載成本巨大;把敏感信息(密鑰、內(nèi)網(wǎng)地址)放入 reference,形成泄漏面;引用鏈過深(reference 里再引用 reference)使 agent 在執(zhí)行時迷失。
1.7 Scripts
定義:Scripts 是技能包內(nèi)的可執(zhí)行代碼(Python/Bash/JS 等),其關(guān)鍵點在于:腳本應(yīng)被“執(zhí)行”而不是“加載進上下文”。Claude 的技能目錄示例明確標(biāo)注 scripts 為“executed, not loaded”。AgentSkills 規(guī)范也把 scripts/resources 放在漸進式披露的第 3 層:僅在需要時才使用。
作用:把確定性步驟外包給傳統(tǒng)程序:解析/校驗/格式化/批處理等;從而提升可測試性、可復(fù)現(xiàn)性,并降低“讓模型憑 token 模擬執(zhí)行”的錯誤率。
示例(SKILL.md 中聲明可用腳本):
## Available scripts- scripts/extract_citations.py — 從網(wǎng)頁抓取結(jié)果中抽取主張與證據(jù)片段- scripts/normalize_md.py — 把輸出歸一化為團隊博客模板執(zhí)行規(guī)則:優(yōu)先運行腳本,不要嘗試在對話中“腦補執(zhí)行”。
最佳實踐:
- 運行腳本前先做輸入校驗與最小權(quán)限(workspace-only、deny-by-default);
- 將腳本視作供應(yīng)鏈依賴:需要簽名、審計、鎖版本與 CI 驗證;
- 把“驗證步驟”寫進 skill(例如
validate.py),形成反饋閉環(huán),避免錯誤一路傳播到最后一步。
常見誤區(qū):把 scripts 當(dāng)作“更強的 prompt”,允許其在宿主機任意執(zhí)行;從不審計第三方 skills/scripts;將“安裝依賴”寫成一條不透明的 curl | bash 指令,制造典型社會工程入口。
2.Skill:最新概念、組成與運行機制
2.1 “Skill”在 2026 語境下的嚴(yán)格定義
從規(guī)范與主流實現(xiàn)看,一個“Skill”更接近如下定義:
Skill = 可發(fā)現(xiàn)的元數(shù)據(jù) + 可執(zhí)行/可操作的過程性指令 + 可選資源(references/assets/scripts) + 漸進式加載策略 +(可選)權(quán)限/環(huán)境門控。
AgentSkills 規(guī)范給出了最小合約:skill 是包含 SKILL.md 的目錄;啟動時加載 name/description,激活時加載正文,運行時按需加載 resources。 Claude、GitHub Copilot、VS Code 等實現(xiàn)都圍繞這一文件系統(tǒng)布局展開,并強調(diào)“目錄名與 name 匹配、description 要寫清何時使用”。 OpenClaw 明確聲明其 skills 文件夾兼容 AgentSkills,并在運行時做額外 gating 與命令聯(lián)動。
2.2 Skill 的組成成分拆解
下面給出一個面向工程實現(xiàn)的“Skill 組件清單”(不是唯一標(biāo)準(zhǔn),但與主流規(guī)范兼容)。
接口(Interface):Skill 對外至少暴露“何時使用(trigger)”與“如何調(diào)用(instructions)”。在實踐里,接口由兩層構(gòu)成:
- 發(fā)現(xiàn)接口:
name/description(以及可選 trigger hints、兼容性信息); - 執(zhí)行接口:正文指令 + 告訴 agent 需要哪些工具、需要讀哪些 reference、要運行哪些 scripts。
Schema(合約/結(jié)構(gòu)):
- 對“工具調(diào)用”的 schema:通常是 JSON Schema(OpenAI/Anthropic 工具接口)或 MCP 的 tool schema;
- 對“skill 輸入”的 schema:行業(yè)里有兩種常見做法:
- 輕量做法:讓 skill 在指令中要求模型先提取字段并以固定格式呈現(xiàn);
- 強約束做法:將 skill 暴露為一個 tool(SkillTool),用 JSON Schema 約束 skill 的輸入?yún)?shù),再由運行時裝載 skill 正文與資源。
能力描述(Capability description):description 是核心,決定檢索命中質(zhì)量。學(xué)術(shù)綜述將其視為“Pattern-1:Metadata-Driven Disclosure”的關(guān)鍵風(fēng)險面:元數(shù)據(jù)寫錯會導(dǎo)致誤檢索或被投毒。
輸入/輸出(I/O):
- 輸入:用戶原始意圖 +(可選)從對話中結(jié)構(gòu)化提取的槽位參數(shù) +(可選)執(zhí)行上下文(workspace 路徑、會話狀態(tài)、工具權(quán)限);
- 輸出:對用戶的自然語言結(jié)果 +(可選)結(jié)構(gòu)化產(chǎn)物(JSON、補丁、文件、外部系統(tǒng)狀態(tài)變更)。OpenAI 的 Responses API 設(shè)計把“tool call”與“tool output”作為可關(guān)聯(lián)的 item(call_id),便于回放與評估。
狀態(tài)/上下文(State/Context):技能執(zhí)行往往依賴會話狀態(tài)(已檢索到的證據(jù)、已生成的 artifacts、已運行的命令與返回碼)。在工程實現(xiàn)上,常見做法是將其放入 Agent state(LangGraph/LangChain 語境)或 SDK 提供的內(nèi)置 agent loop 狀態(tài)。
錯誤處理(Error handling):技能的價值之一是“把錯誤處理流程也固化下來”:例如命令失敗時要收集 stderr、調(diào)整參數(shù)重試、或回退到保守策略。SoK 指出:把“恢復(fù)(recovery)”當(dāng)作一等技能,會帶來可治理性與可信度上的要求(恢復(fù) skill 必須至少與被恢復(fù) skill 同等可信)。
2.3 Skill 的運作流程:觸發(fā)、解析、執(zhí)行、回調(diào)與結(jié)果整合
下面用一個“兼容 AgentSkills/OpenClaw”的通用流水線描述技能生命周期(階段名與 OpenClaw/AgentSkills 的術(shù)語做了對齊)。(圖在評論區(qū)置頂)
flowchart TD A[Discover: 掃描技能目錄] --> B[Index: 僅加載name/description等元數(shù)據(jù)] B --> C{Match: 與用戶意圖匹配?} C -- 否 --> D[繼續(xù)普通對話/工具調(diào)用] C -- 是 --> E[Activate: 加載SKILL.md正文] E --> F{Need refs/assets?} F -- 是 --> G[Load refs/assets: 按需讀取文件] F -- 否 --> H[Execute: 進入Agent Loop] G --> H H --> I{Need scripts/tool calls?} I -- 工具調(diào)用 --> J[Tool call -> 執(zhí)行 -> tool result回填] I -- 運行腳本 --> K[Run script -> stdout/stderr -> 回填] J --> H K --> H H --> L[Integrate: 匯總結(jié)果與證據(jù)] L --> M[Respond: 輸出給用戶 + 可選產(chǎn)物]
這一流程與 AgentSkills 的“漸進式披露三層結(jié)構(gòu)”一致:先元數(shù)據(jù),再正文,再資源;也與 OpenClaw 的“加載/過濾/注入/執(zhí)行/回填”相吻合。
在 OpenClaw 中,上述階段還會疊加若干運行時細(xì)節(jié):
- 多來源與覆蓋優(yōu)先級:bundled →
~/.openclaw/skills→<workspace>/skills,同名 skill 可被更高優(yōu)先級覆蓋。 - Load-time gating:讀取
metadata.openclaw.requires(bins/env/config)決定 skill 是否 eligible;并支持在一次 agent run 內(nèi)注入 env、結(jié)束后還原。 - Prompt 注入策略:把“可用技能清單”以緊湊 XML 列表注入系統(tǒng)提示,并給出確定的字符成本公式,便于估算 token 開銷。
- Slash command 聯(lián)動:
user-invocableskill 會暴露為 slash command;并可選擇“轉(zhuǎn)發(fā)給模型”或“command-dispatch: tool”確定性執(zhí)行。
2.4 Skill 與大模型的交互模式:同步/異步、流式/批量
同步 vs 異步:
- 同步:模型發(fā)起工具調(diào)用,運行時立即執(zhí)行并回填,再讓模型生成最終結(jié)果;這是傳統(tǒng)函數(shù)調(diào)用/agent loop 的默認(rèn)形態(tài)。
- 異步:長耗時任務(wù)(爬取、編譯、批處理)常被放入后臺隊列/進程;OpenClaw 的 exec 支持前臺/后臺以及配套的 process 工具來管理后臺會話。 工程建議是:把異步當(dāng)成“第一類控制流”,否則技能一旦遇到長任務(wù)就會出現(xiàn)超時、截斷或上下文漂移。
流式 vs 批量:
- 流式:模型邊生成邊產(chǎn)出工具調(diào)用片段、或邊生成邊匯總結(jié)果;流式對“結(jié)構(gòu)化輸出”更苛刻,容易出現(xiàn)半截 JSON,需要修復(fù)策略。
- 批量:將多個 tool call 規(guī)劃好后批量執(zhí)行,再一次性把關(guān)鍵結(jié)果回填;在強調(diào)效率與可復(fù)現(xiàn)的技能里更常見。
與 MCP 的關(guān)系:MCP(在 LLM 生態(tài)中通常指 Model Context Protocol)把“工具/資源/提示”等能力以標(biāo)準(zhǔn)化的 JSON-RPC 客戶端/服務(wù)器架構(gòu)暴露給 Host 應(yīng)用,并支持多種傳輸;它解決的是“怎么連工具與數(shù)據(jù)源”的 N×M 集成問題,而 Skills 更偏“教 agent 怎么用這些工具完成 SOP”。
2.5 示例實現(xiàn):一個最小 Skill 引擎(偽碼)與序列圖
下面給一個“最小技能引擎”偽碼:它體現(xiàn) AgentSkills 的 5 步最小要求(discover → load metadata → match → activate → execute)。
class SkillIndexItem: name: string description: string path: string metadata: mapclass SkillEngine:def discover(skills_dirs) -> list[SkillIndexItem]: items = [] for dir in skills_dirs: for skill_dir in list_subdirs(dir): if exists(skill_dir+"/SKILL.md"): fm = parse_yaml_frontmatter(skill_dir+"/SKILL.md") items.append(SkillIndexItem( name=fm.name, description=fm.description, metadata=fm.metadata, path=skill_dir )) return itemsdef eligible(item, runtime_env) -> bool: # OpenClaw 風(fēng)格:按 OS/bins/env/config 門控 return satisfies(item.metadata, runtime_env)def match(user_msg, index_items) -> SkillIndexItem?: # 最簡:embedding/關(guān)鍵詞;工程上應(yīng)加投毒防護與閾值 return best_semantic_match(user_msg, index_items)def run(user_msg): index = [i for i in discover(dirs) if eligible(i, env)] skill = match(user_msg, index) ifnot skill: return llm_generate(normal_prompt(user_msg, index)) full = read_file(skill.path+"/SKILL.md") # Activate prompt = build_prompt(user_msg, index, full) # 注入 skill 清單 + 正文 whileTrue: # Agent loop out = llm_generate(prompt, stream=True) if out.is_tool_call: result = execute_tool(out.tool_name, out.args) prompt.append(tool_result(out.call_id, result)) else: return out.final_text
對應(yīng)的交互序列如下:(圖在評論區(qū)置頂)
sequenceDiagram participant U as User participant G as Gateway/Agent Runtime participant M as LLM participant T as Tools/Sandbox U->>G: message G->>G: discover+load metadata (name/description) G->>G: match & activate (load SKILL.md) G->>M: prompt (skills index + skill body) M-->>G: tool_call(args) G->>T: execute tool / script T-->>G: tool_result(stdout/stderr/data) G->>M: tool_result (call_id關(guān)聯(lián)) M-->>G: final answer (integrated) G-->>U: response
該序列與 OpenAI 的“tool calls 與 outputs 通過 call_id 關(guān)聯(lián)”的實踐一致,也符合 OpenClaw 的“Gateway 組裝 prompt、工具在 sandbox/host 執(zhí)行、結(jié)果回填”的形態(tài)。
3.機制對比:Prompt / Memory / MCP / Skills
- Prompt 更像“當(dāng)前對話的瞬時指令”,優(yōu)勢是低門檻與即時性,劣勢是不可持久與難治理;Skills 像“可版本化 SOP 包”,在一致性、可復(fù)用、可審計上更強,但引入供應(yīng)鏈與權(quán)限治理成本。
- MCP 的核心價值在“標(biāo)準(zhǔn)化連接外部工具/數(shù)據(jù)(協(xié)議層)”,而 Skills 的核心價值在“標(biāo)準(zhǔn)化可復(fù)用過程(方法層)”;二者互補:MCP 給“手”,Skill 給“操作手冊”。
| 機制 | 定義 | 持久性 | 可編程性 | 可組合性 | 調(diào)用延遲 | 示例場景 |
|---|---|---|---|---|---|---|
| 提示詞(Prompt) | 一次推理的輸入上下文集合(系統(tǒng)/用戶/歷史/工具結(jié)果等) | 低(默認(rèn)隨會話消失) | 低到中(主要靠提示工程) | 中(可拼接模板,但易沖突) | 低(單輪調(diào)用) | 快速問答、頭腦風(fēng)暴、一次性總結(jié) |
| 記憶(Memory) | 跨輪保存的對話/狀態(tài)/檢索片段(短期或長期),供后續(xù)調(diào)用檢索 | 中到高(取決于存儲與策略) | 中(需要檢索、壓縮、沖突處理) | 中(可被多個技能/工具復(fù)用) | 中(檢索+融合) | 個性化助理、長任務(wù)跟蹤、跨會話項目協(xié)作 |
| MCP | Model Context Protocol:以 JSON-RPC 標(biāo)準(zhǔn)化“LLM 應(yīng)用 ↔ 外部工具/數(shù)據(jù)源”連接 | 中(server/connector 常駐) | 高(工具/資源以協(xié)議暴露) | 高(多 server 組合) | 中(網(wǎng)絡(luò)/鑒權(quán)/執(zhí)行) | IDE 接入代碼庫、企業(yè)系統(tǒng)連接(CRM/DB/工單) |
| Skills | 以目錄為單位的可移植能力包:SKILL.md +(可選)references/assets/scripts;漸進式披露加載 | 高(版本化、可共享) | 高(可運行腳本/約束流程) | 高(可同時加載多個 skill) | 中到高(匹配+激活+執(zhí)行) | 代碼評審 SOP、自動化報表、受控的數(shù)據(jù)處理流水線 |
備注:這里的 “MCP” 在 LLM 場景下通常指 Anthropic 提出的 Model Context Protocol。
4.框架演進:從 LLM 到 OpenClaw
- 從 LLM → Tool Calling → Agent 的演進,本質(zhì)是在把“控制流”從人類手工(寫提示、點按鈕)轉(zhuǎn)移到運行時(agent loop),再用更強的結(jié)構(gòu)(skills/workflow)把不確定性收束到可治理范圍。
- OpenClaw 的“產(chǎn)品化差異”在于:它把 agent 變成常駐基礎(chǔ)設(shè)施(多入口聊天應(yīng)用 + 本地執(zhí)行 + 可安裝技能市場),因此其主要挑戰(zhàn)從“能不能做事”轉(zhuǎn)向“能不能在開放生態(tài)里安全地做事”。
| 階段 | 架構(gòu)層級 | 控制流 | 狀態(tài)管理 | 擴展性 | 典型實現(xiàn)/開源項目 | 適用場景 | 優(yōu)缺點 |
|---|---|---|---|---|---|---|---|
| LLM | 單次生成 | 人工組織 prompt | 低(主要靠對話歷史) | 低 | 通用對話 API / 提示工程總覽 | 問答、生成、分析 | ??簡單;??不可控、難復(fù)現(xiàn) |
| 工具調(diào)用 | LLM + tools | 模型選擇工具、運行時執(zhí)行 | 中(工具結(jié)果回填) | 中 | OpenAI function calling;Claude tool use | 結(jié)構(gòu)化參數(shù)調(diào)用、RAG、自動化步驟 | ??更確定;??工具描述/返回需精心設(shè)計 |
| Agent | LLM + tool loop | 運行時循環(huán)直到 stop condition | 中到高(state/checkpoints) | 中到高 | LangChain Agents;OpenAI Agents SDK(內(nèi)置 agent loop) | 多步任務(wù)、交互式執(zhí)行 | ??會規(guī)劃迭代;??易循環(huán)/漂移,需護欄與評估 |
| 多 Agent 協(xié)同 | 多 agent + 路由/對話協(xié)議 | 分工、handoff、協(xié)作對話 | 高(跨 agent 協(xié)作狀態(tài)) | 高 | Microsoft AutoGen(多 agent 對話框架) | 復(fù)雜項目拆解、角色協(xié)作 | ??并行與分工;??狀態(tài)與一致性更難、成本更高 |
| 增強記憶的 Agent | agent + 長短記憶 | 控制流同 agent,但記憶參與決策 | 高(長期存儲+檢索) | 中到高 | LangGraph/LangChain memory;Generative Agents 架構(gòu) | 個性化助理、長周期任務(wù) | ??連續(xù)性強;??隱私與污染風(fēng)險、需壓縮與治理 |
| Workflow / Manus | workflow 引擎 + agent(或 agent 平臺) | 更顯式的圖/流程/約束,或“CodeAct”式執(zhí)行 | 高(強狀態(tài)機/虛擬環(huán)境) | 高 | LangGraph 圖式編排;Manus(行動引擎/工作流執(zhí)行) | 可重復(fù)業(yè)務(wù)流程、端到端交付 | ??可控、可觀測;??搭建成本高、需要更多工程能力 |
| OpenClaw | 常駐 agent 平臺 + skills 市場 + 本地執(zhí)行 | Gateway 命令/指令 + agent loop + 可選確定性分發(fā) | 高(session、workspace、插件槽等) | 很高(skills、plugins、registry) | OpenClaw(自托管、聊天入口、多工具與技能) | 個人/小團隊自動化、跨應(yīng)用操作 | ??“能做事”的可用性強;??安全面巨大、供應(yīng)鏈與權(quán)限治理是硬問題 |
4.1 重點:OpenClaw 的機制解剖、信息來源與不確定性
信息來源(相對確定):
- OpenClaw 官方倉庫與文檔明確其定位:運行在用戶自有設(shè)備上、通過已有聊天渠道交互;并強調(diào) Gateway 是控制平面(control plane)。
- Skills 文檔明確:兼容 AgentSkills;多目錄加載與覆蓋優(yōu)先級;load-time gating(bins/env/config);會話快照/熱更新;以及把技能清單注入系統(tǒng) prompt 的方式。
- Slash Commands 文檔明確:命令由 Gateway 處理;directives 會在模型看到消息前被剝離;skill 可作為命令暴露,并可配置為直接 dispatch 到工具。
- ClawHub 文檔明確:作為公開 registry,提供版本化存儲與發(fā)現(xiàn);支持 install/update/publish/sync;并描述了默認(rèn)開放上傳與“GitHub 賬號至少 1 周”之類的 moderation 策略。
- Plugins 文檔明確:插件加載的目錄/ID 規(guī)則、配置 schema 校驗、以及若干安全護欄(例如路徑不能逃逸、安裝依賴時
--ignore-scripts)。
公開資料稀少或仍在變化的部分(需要保留不確定性):
- “技能匹配/檢索”具體算法(embedding、關(guān)鍵詞、閾值、是否有對抗投毒防護)通常不會在產(chǎn)品文檔里詳述;SoK 提到 metadata-driven disclosure 的風(fēng)險,但具體實現(xiàn)策略依賴各平臺。
- 多 agent/遠(yuǎn)程節(jié)點/沙箱與權(quán)限的組合細(xì)節(jié)在快速迭代,且安全修復(fù)頻繁(這類系統(tǒng)高度時變);因此任何“架構(gòu)推斷”都應(yīng)以源碼與版本為準(zhǔn),并配套驗收測試。
在不完整信息下的合理架構(gòu)推斷(可驗證):
基于官方文檔,“OpenClaw 的核心循環(huán)”可以被驗證性地理解為:
- Gateway 接收消息并先做 command/directive 解析;
- 構(gòu)建會話級上下文(含技能清單 XML、工具策略、可選激活 skill 正文);
- 調(diào)用外部模型;
- 若模型發(fā)起工具調(diào)用,則在 sandbox/host 執(zhí)行并回填;
- 進入下一輪直到產(chǎn)出最終響應(yīng);
- 會話狀態(tài)與技能快照在 session 維度管理。
你可以用兩類“可驗證建議”來驗證/替代上述推斷:
- 驗收測試(黑盒):構(gòu)造一個只含 2 個 skill 的環(huán)境(一個可用、一個因缺少 bin/env 被 gating),觀察系統(tǒng)提示內(nèi) skills list 是否包含/不包含它,并用
/context detail(OpenClaw 提供的上下文可視化命令)確認(rèn) token 分布與注入內(nèi)容。 - 替代實現(xiàn)(白盒):若不使用 OpenClaw,也可用“OpenAI Agents SDK + MCP + AgentSkills 文件夾”搭建同構(gòu)系統(tǒng):SDK 提供 agent loop 與 handoffs,MCP 提供工具/數(shù)據(jù)接入,AgentSkills 提供可移植 SOP 包。
安全重點:OpenClaw 及其 skills 生態(tài)的公開事件顯示:開放 registry 與“markdown 指令 + 可執(zhí)行腳本”的組合會形成供應(yīng)鏈攻擊面;多家安全報告與新聞指出了惡意 skills、信息竊取與隔離建議; entity [“company”,“Microsoft”,“software company”] 的安全博客也明確建議將 OpenClaw 視為“帶持久憑據(jù)的不可信代碼執(zhí)行”,僅在隔離環(huán)境中運行。
5.端到端示例:兩個完整場景
下面兩個示例分別覆蓋:
- 示例一:信息檢索 + 工具調(diào)用(強調(diào)結(jié)構(gòu)化工具與證據(jù)匯總);
- 示例二:多步驟任務(wù)自動化(強調(diào) command 顯式觸發(fā) + scripts 確定性執(zhí)行 + 結(jié)果整合)。
5.1 示例一:技術(shù)調(diào)研與證據(jù)匯總(自動觸發(fā) Skill)
目標(biāo):用戶問“最近 OpenClaw Skills 的安全事件有哪些?我該如何安全使用?”系統(tǒng)自動觸發(fā) web-research skill:先檢索、再抓取、再抽取證據(jù)、最后按模板輸出“主張-證據(jù)-建議”。這一類 workflow 對“可信引用”敏感,適合用 skill 固化流程并用工具做檢索與抓取。
Skill 目錄結(jié)構(gòu)(示例):
web-research/├── SKILL.md├── references/│ ├── source_policy.md│ └── output_template.md└── scripts/ ├── extract_claims.py └── dedupe_sources.py
SKILL.md(核心片段):
---name: web-researchdescription: 當(dāng)用戶要求“最新/近況/引用來源/對比”時,執(zhí)行證據(jù)驅(qū)動的技術(shù)調(diào)研并輸出可追溯引用。---# Web Research## Rules1) 先檢索再下結(jié)論;2) 每個關(guān)鍵主張必須對應(yīng)來源;3) 遇到相互矛盾的來源要并列呈現(xiàn)并說明不確定性。## References- references/source_policy.md- references/output_template.md## Procedure1) 用 search_web 獲取候選來源(優(yōu)先官方/論文/權(quán)威媒體)2) 用 fetch_url 抓取全文3) 運行 scripts/dedupe_sources.py 去重4) 運行 scripts/extract_claims.py 抽取“主張-證據(jù)片段”5) 按模板生成最終報告,并附來源列表
該寫法符合“SKILL.md 作為總覽,細(xì)則與模板在 references,確定性處理在 scripts”的最佳實踐。
工具定義(結(jié)構(gòu)化提示的一部分,示意):
[ {
"name": "search_web",
"description": "檢索最新網(wǎng)頁并返回[{title,url,snippet,date}]",
"parameters": { "type": "object", "properties": { "q": {"type":"string"} }, "required": ["q"] } },
{
"name": "fetch_url",
"description": "抓取url正文并返回{text,meta}",
"parameters": { "type": "object", "properties": { "url": {"type":"string"} }, "required": ["url"] } },
{
"name": "run_script",
"description": "在沙箱內(nèi)運行技能腳本,返回stdout/stderr/exit_code",
"parameters": { "type": "object", "properties": { "path":{"type":"string"}, "args":{"type":"array"} }, "required":["path"] }
}]這對應(yīng)主流“用 JSON Schema 描述工具輸入”的實踐。
端到端時序圖:(圖在評論區(qū)置頂)
sequenceDiagram
participant U as User
participant A as Agent Runtime
participant M as LLM
participant W as Web Tools
participant S as Sandbox (scripts)
U->>A: "總結(jié)最近OpenClaw skills安全事件并給建議(含引用)"
A->>A: match skills index ->> activate web-research
A->>M: prompt + web-research(SKILL.md)
M-->>A: tool_call search_web(q)
A->>W: search_web W-->>A: results[]
A->>M: tool_result(call_id=1)
M-->>A: tool_call fetch_url(url...) xN
A->>W: fetch_url xN W-->>A: pages{text} xN
A->>S: run_script(dedupe_sources.py) S-->>A: deduped list
A->>S: run_script(extract_claims.py) S-->>A: claims+citations
A->>M: tool_results merged M-->>A: final report (claims + sources + mitigation)
A-->>U: response關(guān)鍵實現(xiàn)片段(處理 OpenAI Responses 工具回填的思路,偽碼):
resp = responses.create(input=prompt, tools=tools, stream=true)for item in resp.items: if item.type == "tool_call": result = exec_tool(item.name, item.arguments) responses.submit_tool_output(call_id=item.call_id, output=result)
這里的關(guān)鍵是“tool call 與 tool output 分離,并用 call_id 關(guān)聯(lián)”,便于可觀測與評估。
5.2 示例二:多步驟任務(wù)自動化(顯式 Command + 確定性 Scripts)
目標(biāo):用戶在 OpenClaw 里用命令觸發(fā)一個“發(fā)布說明自動生成”流程:從倉庫拉取最近變更 → 根據(jù)模板生成 release notes → 寫入 workspace 文件并回傳摘要。該例故意用 /skill <name> 顯式觸發(fā),以展示“command 作為控制平面”的作用。
Skill 目錄結(jié)構(gòu)(示例):
release-notes/├── SKILL.md├── references/│ └── notes_template.md└── scripts/ ├── git_log.sh └── render_notes.py
SKILL.md(含 command 相關(guān) frontmatter 的 OpenClaw 風(fēng)格示例):
---name:release-notesdescription:為代碼倉庫生成發(fā)布說明;當(dāng)用戶說“發(fā)版說明/變更日志/releasenotes”或執(zhí)行/release-notes時使用。user-invocable:truecommand-dispatch:toolcommand-tool:execcommand-arg-mode:raw---
command-dispatch: tool 表示:當(dāng)用戶用 /release-notes ... 觸發(fā)時,不走模型推理路徑,而是直接把命令分發(fā)到指定工具,以獲得確定性(例如直接執(zhí)行腳本入口)。此能力在 OpenClaw 的 skills 與 slash commands 文檔中明示。
命令觸發(fā):
/release-notes repo=. since="7 days"
端到端時序圖:(圖在評論區(qū)置頂)
sequenceDiagram participant U as User
participant G as OpenClaw Gateway
participant X as Exec Tool (sandbox/host)
participant P as Process Tool
participant F as Filesystem Tools
U->>G: /release-notes repo=. since="7 days"
G->>G: command parsing + authz
G->>X: exec("scripts/git_log.sh --since '7 days'")
X-->>G: stdout (commit list) + exit_code alt long running
G->>P: track background session
P-->>G: status/result end G->>X: exec("python scripts/render_notes.py --template references/notes_template.md")
X-->>G: release_notes.md content
G->>F: write("release_notes.md", content)
F-->>G: ok G-->>U: 摘要 + 文件路徑 + 可選 diff這里用到了 OpenClaw 文檔中描述的 exec(前臺/后臺)與 process(管理后臺會話)思路,以及 slash command 解析由 Gateway 執(zhí)行。
腳本片段示例(簡化版):
# scripts/git_log.shgit log --since="$1" --pretty=format:"- %s (%h) by %an"
``````plaintext
# scripts/render_notes.py (偽代碼風(fēng)格)import syscommits = sys.stdin.read().splitlines()template = open("references/notes_template.md").read()notes = template.replace("{{COMMITS}}", "\n".join(commits))print(notes)工程要點:這個例子刻意讓“關(guān)鍵步驟都在 scripts 里”,把模型扮演的角色降到最低:模型不需要“幻想執(zhí)行 git”,而是讀取腳本輸出并做輕量整合。
6.結(jié)論與后續(xù)研究清單
6.1 結(jié)論
“Skills”的最新含義可以概括為:用標(biāo)準(zhǔn)化目錄結(jié)構(gòu)把“方法(SOP)”產(chǎn)品化,并用漸進式披露把上下文成本最小化;它與工具調(diào)用、MCP、記憶共同構(gòu)成“Agent 工程棧”的不同層次:MCP 解決連接,工具調(diào)用解決接口與參數(shù),Skills 解決方法與一致性,記憶解決跨時延續(xù)。
OpenClaw 則是這一工程棧的一種“平臺化落地”:它把 skills、commands、plugins、registry、沙箱/工具策略與多入口聊天整合為常駐系統(tǒng);其優(yōu)勢是“非常接近真實生產(chǎn)力”,其風(fēng)險也同步放大為“真實的權(quán)限與供應(yīng)鏈安全問題”。因此,對技術(shù)團隊而言,OpenClaw 更像一個值得研究的“參照架構(gòu)”,而不是不加隔離就能直接引入企業(yè)內(nèi)網(wǎng)的通用解。
6.2 進一步研究與實現(xiàn)建議清單
- 為 Skills 引入 CI/CD 與評估飛輪:把每個 skill 當(dāng)作軟件包,建立版本號、變更日志、lint/validate(如
skills-ref validate)與回歸評估;可參考評估框架與“把技能納入 Evals”類實踐,形成持續(xù)改進閉環(huán)。 - 把“元數(shù)據(jù)安全”當(dāng)作一等問題:對
description做質(zhì)量門控(避免過寬、避免誤導(dǎo)、避免注入式關(guān)鍵詞堆砌),并對 skill 檢索加入防投毒策略(閾值、白名單、交叉驗證、多路檢索)。 - 最小權(quán)限與分層隔離:工具策略堅持 deny-wins;高風(fēng)險工具(exec、browser、web_fetch/search)默認(rèn)關(guān)閉或僅 allowlist;運行時盡量 sandbox;把憑據(jù)注入限制為“會話內(nèi)、最小集合、可輪換”。
- 把 Scripts 當(dāng)作供應(yīng)鏈依賴治理:強制審計第三方 scripts;拒絕不透明安裝指令;對
curl | bash等模式在執(zhí)行層直接攔截或需要人工批準(zhǔn);對外部依賴鎖版本并記錄 SBOM。 - 優(yōu)先“確定性外包”:對解析、驗證、格式化、diff、patch 這類任務(wù),優(yōu)先寫腳本而不是讓模型憑 token 模擬;并在 skill 中固化驗證步驟與失敗恢復(fù)路徑。
- MCP + Skills 的組合設(shè)計:用 MCP 暴露標(biāo)準(zhǔn)化工具/資源,把 Skills 作為“如何用這些工具”的 SOP;在企業(yè)內(nèi)可先做私有 MCP server 與私有 skills registry,避免直接接入開放市場。
- 對 OpenClaw 做“可驗證的漸進式采用”:先在隔離環(huán)境驗證 commands/tool policy/sandbox;只引入少量自研 skills;對 ClawHub/第三方 skills 采取默認(rèn)禁止策略;通過
/context detail或類似可觀測命令持續(xù)測量上下文與權(quán)限變化。 - 替代方案路線圖:如果目標(biāo)是企業(yè)級可控自動化,可考慮“Agents SDK(agent loop)+ LangGraph(可控流程)+ MCP(工具接入)+ AgentSkills(SOP 包)”的組合式自建;用更小的攻擊面獲得 OpenClaw 式能力。
到此這篇關(guān)于一文講清Skills概念與OpenClaw運作機制(最佳實踐)的文章就介紹到這了,更多相關(guān)OpenClaw Skills運作機制內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章

12類人群必裝的OpenClaw Skills總結(jié)
很多人第一次上手時,最興奮的一件事就是裝 Skills,本文就來介紹一下12類人群必裝的OpenClaw Skills總結(jié),文中介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-03-10
OpenClaw/Clawdbot必裝10大Skills指南:從部署到技能精通
本文推薦的10大必裝Skills,覆蓋了搜索、自動化、部署、分析四大核心場景,通過合理搭配,可將OpenClaw從普通問答助手升級為能執(zhí)行真實任務(wù)的智能工作系統(tǒng)——無論是職場辦2026-03-09
一文分享最適合新手先裝的20個OpenClaw Skills
這兩天,越來越多人開始折騰 OpenClaw,很多人第一次上手時,最興奮的一件事就是裝 Skills,看著社區(qū)里一排排工具,感覺像剛進五金倉庫,什么都想拿一點,下面小編就和大家簡2026-03-09
最近 OpenClaw 是真的火,裝機量蹭蹭漲,Skills 市場一打開,13000 多個 Skill 擺在你面前,不知道如何選擇,今天為大家?guī)砹薕penClaw最值得裝的10個Skills推薦,一起看看2026-03-09
OpenClaw ClawHub安裝skills時報錯的問題解決
文章主要介紹了在使用ClawHub進行AI插件開發(fā)或集成時遇到的兩個常見問題:Ratelimitexceeded和Missingstate,下面就來詳細(xì)的介紹一下這兩個問題的解決方法,感興趣的可以了2026-03-06
OpenClaw最強插件庫:5400+Skills,22.7K Star,一條命令全搞定強的離譜
最近一段時間,一個叫OpenClaw(前身是 Clawdbot / Moltbot)的本地 AI Agent 項目突然爆火,技術(shù)圈幾乎人人都在討論,下面給大家分享OpenClaw最強插件庫,5400+Skills,22.2026-03-05







