最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Claude Agent Skills的四種設(shè)計模式詳解;從漸進式披露到最小權(quán)限

  發(fā)布時間:2026-07-21 17:10:18   作者:用戶71387422900   我要評論
想讓你的AI Agent永遠(yuǎn)不出錯,核心秘密全在Skill設(shè)計模式里,本文揭秘漸進式披露原則,手把手教你用模板、腳本增強、知識分層與工具隔離四大模式,徹底解決格式漂移、計算不精準(zhǔn)、上下文沖突和越權(quán)操作,需要的朋友可以參考下

一、地基:為什么 Skill 需要"設(shè)計模式"

Agent Skill 的本質(zhì),是一個包含指令、腳本與資源的文件夾,讓 agent 能夠更準(zhǔn)確、更高效地完成某類專業(yè)工作。它最簡的形態(tài)只是一個 SKILL.md,靠 YAML frontmatter 里的 namedescription 被發(fā)現(xiàn)和觸發(fā)。

真正讓 Skill 可擴展的,是 Anthropic 反復(fù)強調(diào)的唯一核心原則——漸進式披露(Progressive Disclosure)。它把信息分成三層,按需加載:

層級內(nèi)容加載時機體量建議
① 元數(shù)據(jù)name + description啟動時全部載入,用于判斷"何時該用"~100 tokens
② 正文SKILL.md 主體指令任務(wù)命中 description 時才讀入< 5,000 tokens
③ 資源reference.md、腳本、模板…正文指示時才按需讀取 / 執(zhí)行無限制

漸進式披露解決的是"上下文經(jīng)濟"問題。但一個成熟 Skill 面對的風(fēng)險遠(yuǎn)不止上下文膨脹,還有:輸出格式漂移、模型算錯數(shù)、權(quán)限越界。于是社區(qū)在這條地基之上,沉淀出四種設(shè)計模式——它們彼此正交,每一種約束一個獨立的風(fēng)險維度:

設(shè)計模式約束的維度核心手段
模板驅(qū)動輸出格式預(yù)定義模板嚴(yán)格約束結(jié)構(gòu)
腳本增強計算可靠性確定性邏輯封裝為腳本
知識分層上下文經(jīng)濟按頻率與互斥性分層加載
工具隔離權(quán)限安全allowed-tools 聲明能力邊界

下面逐一展開。

二、模式一:模板驅(qū)動(約束"輸出格式")

意圖:用預(yù)定義模板嚴(yán)格約束輸出結(jié)構(gòu),讓結(jié)果可預(yù)期、可對比、可自動化后處理。

適用:周報、事故復(fù)盤、代碼審查報告、合規(guī)檢查單——任何"格式必須統(tǒng)一、下游還要機器解析"的場景。在此模式下,Claude 的輸出嚴(yán)格遵循模板骨架,不再自由發(fā)揮。

要點:模板本體應(yīng)放進引用文件或 assets/,SKILL.md 正文只寫"何時套用 + 每個字段怎么填"。這樣既約束了格式,又不讓整段模板擠占正文的 token 預(yù)算——它天然與"知識分層"復(fù)用同一套機制。

實戰(zhàn)示例:事故復(fù)盤報告生成器

場景:SRE 團隊每次線上事故后產(chǎn)出結(jié)構(gòu)一致的復(fù)盤文檔,便于歸檔、檢索、季度匯總。

incident-postmortem/
├── SKILL.md
├── assets/
│   └── template.md
└── reference/
    └── severity.md

SKILL.md

---
name: incident-postmortem
description: 線上事故復(fù)盤報告生成。當(dāng)用戶提供事故時間線、影響范圍,或要求撰寫 postmortem / 事故報告 / 復(fù)盤時使用。
---

# 事故復(fù)盤報告生成

## 何時使用
用戶描述了一次線上事故并需要產(chǎn)出正式復(fù)盤文檔時。

## 步驟
1. 讀取 `assets/template.md` 作為唯一輸出骨架,**不得增刪任何一級標(biāo)題**。
2. 若用戶未提供嚴(yán)重等級,依據(jù) `reference/severity.md` 判定,并在報告中注明判定依據(jù)。
3. 按下列規(guī)則填寫:
   - **影響范圍**:必須量化(受影響用戶數(shù) / 請求數(shù) / 時長);無數(shù)據(jù)寫"待補充",禁止編造。
   - **時間線**:`HH:MM` 單調(diào)遞增,每行一個事件。
   - **改進項**:每條含負(fù)責(zé)人占位 `@owner` 與截止日期 `YYYY-MM-DD`,便于下游腳本抽取建單。
4. 輸出純 Markdown,不要整體包進代碼塊。

## 硬約束
- 不臆測未提供的數(shù)字。
- 一級標(biāo)題順序與模板完全一致(看板按標(biāo)題解析)。

assets/template.md

# 事故復(fù)盤:<一句話標(biāo)題>

## 元信息
- 事故編號:INC-
- 嚴(yán)重等級:
- 發(fā)生時間:
- 恢復(fù)時間:
- 總時長:

## 影響范圍

## 時間線

## 根因分析
### 直接原因
### 根本原因

## 處置與恢復(fù)

## 改進項
| 措施 | 負(fù)責(zé)人 | 截止日期 | 狀態(tài) |
| ---- | ------ | -------- | ---- |

## 經(jīng)驗教訓(xùn)

reference/severity.md

# 嚴(yán)重等級判定

| 等級 | 判定標(biāo)準(zhǔn) |
| ---- | -------- |
| P0 | 核心功能全站不可用,或數(shù)據(jù)丟失/泄露 |
| P1 | 核心功能部分不可用,影響 >10% 用戶 |
| P2 | 非核心功能不可用,或有降級方案 |
| P3 | 輕微影響,無用戶可感知中斷 |

判定就高不就低:同時命中多個等級時取最嚴(yán)重者。

三、模式二:腳本增強(約束"計算可靠性")

意圖:把確定性計算邏輯封裝成腳本,由 Claude 調(diào)用執(zhí)行,而不是用自然語言推導(dǎo)。

適用:財務(wù)計算、正則匹配、數(shù)據(jù)清洗與格式轉(zhuǎn)換、批量文件操作。相較大模型推理,腳本執(zhí)行更精準(zhǔn)、更省 token、可復(fù)現(xiàn)、可測試。

一條黃金法則(源自官方 Skill authoring best practices):

如果你發(fā)現(xiàn)自己正在 SKILL.md 里寫公式、讓 Claude 去"心算"——立刻停下,這段邏輯應(yīng)當(dāng)被搬進腳本。

實戰(zhàn)示例:SLA 可用性計算器

場景:從停機記錄 CSV 精確計算月度可用性、累計停機時長、錯誤預(yù)算消耗。數(shù)字必須精確,絕不讓模型估算。

sla-calculator/
├── SKILL.md
└── scripts/
    └── sla.py

SKILL.md

---
name: sla-calculator
description: 根據(jù)事故記錄計算 SLA 可用性、停機時長與錯誤預(yù)算。當(dāng)用戶提供停機 CSV,或詢問月度可用性、錯誤預(yù)算是否耗盡時使用。
allowed-tools: Bash(python3 *), Read
---

# SLA 可用性計算

## 關(guān)鍵原則
**所有數(shù)值計算必須調(diào)用腳本完成,禁止在對話中心算。**

## 步驟
1. 確認(rèn)停機記錄為 CSV,列:`start,end`(ISO8601)。
2. 執(zhí)行:
   `python3 scripts/sla.py --file <路徑> --target 99.9 --month 2026-07`
3. 將腳本輸出的 JSON 轉(zhuǎn)述為結(jié)論,并明確指出錯誤預(yù)算是否已耗盡。
4. **不要修改腳本輸出的任何數(shù)字。**

scripts/sla.py

#!/usr/bin/env python3
"""從停機記錄計算月度可用性與錯誤預(yù)算。計算集中于此以保證可復(fù)現(xiàn)。"""
import argparse, csv, json, calendar
from datetime import datetime

def parse(ts):
    return datetime.fromisoformat(ts.replace("Z", "+00:00"))

def month_seconds(month):
    year, mon = map(int, month.split("-"))
    return calendar.monthrange(year, mon)[1] * 24 * 3600

def main():
    p = argparse.ArgumentParser()
    p.add_argument("--file", required=True)
    p.add_argument("--target", type=float, required=True)  # SLA 目標(biāo) %,如 99.9
    p.add_argument("--month", required=True)                # YYYY-MM
    a = p.parse_args()

    total = month_seconds(a.month)
    down = 0
    with open(a.file, newline="", encoding="utf-8") as f:
        for row in csv.DictReader(f):
            down += (parse(row["end"]) - parse(row["start"])).total_seconds()

    uptime = (total - down) / total * 100
    allowed = total * (100 - a.target) / 100          # 允許停機秒數(shù)
    budget_used = down / allowed * 100 if allowed else 0

    print(json.dumps({
        "month": a.month,
        "uptime_pct": round(uptime, 4),
        "target_pct": a.target,
        "downtime_seconds": int(down),
        "downtime_human": f"{int(down)//3600}h{int(down)%3600//60}m",
        "error_budget_used_pct": round(budget_used, 2),
        "budget_exhausted": budget_used >= 100,
        "meets_sla": uptime >= a.target,
    }, ensure_ascii=False, indent=2))

if __name__ == "__main__":
    main()

體會一下黃金法則的價值:uptime、error budget 這類公式一旦出現(xiàn)在正文里讓 Claude 心算,結(jié)果就不可復(fù)現(xiàn)、還費 token;搬進 sla.py 后,它變成一次確定性的工具調(diào)用。腳本還能通過 allowed-tools: Bash(python3 *) 把執(zhí)行面收窄到"只能跑 Python"——這正好引出下一個模式。

四、模式三:知識分層(約束"上下文經(jīng)濟")

意圖:按使用頻率組織知識,是漸進式披露的模式化表達(dá)。

遵循 80/20 法則——80% 的請求只需要 20% 的核心知識。于是:

  • 高頻核心內(nèi)聯(lián)進 SKILL.md;
  • 低頻細(xì)節(jié)(完整 API 參考、邊緣案例、長表單說明)拆到引用文件,用一句話說明"什么情況下去讀它"。

一個常被忽略的第二維度:除了頻率,還要看互斥性。官方建議把"mutually exclusive or rarely used"的上下文拆到不同文件——否則 Claude 會同時載入相互沖突的指令。分層不只是為了省 token,也是為了避免指令打架。

實戰(zhàn)示例:REST API 設(shè)計規(guī)范

場景:統(tǒng)一團隊 API 風(fēng)格。90% 的問題只涉及命名/狀態(tài)碼/版本(內(nèi)聯(lián));分頁、錯誤體、鑒權(quán)是低頻且互斥的細(xì)節(jié)(外置)。

rest-api-guide/
├── SKILL.md
└── reference/
    ├── pagination.md
    ├── errors.md
    └── auth.md

SKILL.md(內(nèi)聯(lián) 20% 核心)

---
name: rest-api-guide
description: 團隊 REST API 設(shè)計規(guī)范。設(shè)計/評審 HTTP 接口、命名端點、選狀態(tài)碼,或問及 API 版本、分頁、錯誤格式、鑒權(quán)時使用。
---

# REST API 設(shè)計規(guī)范

## 核心規(guī)則(高頻,直接遵循)
- **資源命名**:復(fù)數(shù)名詞 + kebab-case,如 `/user-groups`;不出現(xiàn)動詞。
- **層級**:`/orders/{id}/items`,嵌套不超過兩層。
- **方法語義**:GET 只讀且冪等;POST 創(chuàng)建;PUT 全量替換;PATCH 局部更新;DELETE 刪除。
- **狀態(tài)碼**:200/201/204 · 400/401/403/404/409/422 · 500。
- **版本**:URL 前綴 `/v1/`,僅破壞性變更升版本。

## 何時查閱引用文件(低頻,按需加載)
- 設(shè)計**分頁 / 游標(biāo)** → 讀 `reference/pagination.md`
- 定義**錯誤響應(yīng)體** → 讀 `reference/errors.md`
- 涉及**鑒權(quán) / Token / 權(quán)限** → 讀 `reference/auth.md`

> 這三個主題互斥且少同時出現(xiàn),故不內(nèi)聯(lián)——既省 token,也避免規(guī)則相互干擾。

reference/errors.md

# 錯誤響應(yīng)體規(guī)范

統(tǒng)一使用 RFC 9457 (Problem Details):

```json
{
  "type": "https://api.example.com/errors/out-of-stock",
  "title": "庫存不足",
  "status": 409,
  "detail": "商品 SKU-123 當(dāng)前庫存為 0",
  "instance": "/orders/8821"
}
```

- `type` 為可跳轉(zhuǎn)錯誤文檔 URL;無專屬文檔時用 `about:blank`。
- 校驗錯誤(422)追加 `errors` 數(shù)組,每項含 `field` 與 `message`。
- 絕不在 `detail` 泄露堆棧、SQL 或內(nèi)部主機名。

reference/pagination.md

# 分頁規(guī)范

默認(rèn)游標(biāo)分頁,大數(shù)據(jù)集禁用 offset。

請求:`GET /orders?limit=50&cursor=eyJpZCI6MTAwfQ`

```json
{
  "data": [ ... ],
  "page": { "next_cursor": "eyJpZCI6MTUwfQ", "has_more": true }
}
```

- `limit` 默認(rèn) 50,上限 200,越界返回 400。
- `next_cursor` 為空表示已到末頁。

reference/auth.md

# 鑒權(quán)規(guī)范
- 傳輸:僅 HTTPS;Token 放 `Authorization: Bearer <jwt>`。
- 過期:access token ≤ 15min,配合 refresh token。
- 401 = 未認(rèn)證 / Token 失效;403 = 已認(rèn)證但無權(quán)限。二者不可混用。

五、模式四:工具隔離(約束"權(quán)限安全")

意圖:通過 allowed-tools 明確界定 Skill 的能力邊界。它屬于安全設(shè)計,核心價值在于聲明"禁止做什么"——這往往比定義"能做什么"更關(guān)鍵。

典型的最小權(quán)限實踐:審計類 Skill 不給寫權(quán)限,生成類 Skill 不給修改權(quán)限。

?? 一個必須知道的邊界:allowed-tools 這個 frontmatter 字段只在 Claude Code CLI 下生效,通過 Agent SDK 使用 Skill 時不生效。因此不能只靠 skill 的 allowed-tools 當(dāng)安全邊界——在 SDK / 生產(chǎn) agent 場景,真正的權(quán)限邊界必須落在 agent 的 tools 白名單、permission 系統(tǒng)或 hooks 上。skill frontmatter 更像"約定 + CLI 層加固",不是不可繞過的沙箱。

實戰(zhàn)示例:只讀安全審計

場景:上線前跑一遍安全體檢,只報告不改動,防止 agent 順手"幫忙修復(fù)"反而引入風(fēng)險。

security-audit/
├── SKILL.md
└── reference/
    └── checklist.md

SKILL.md

---
name: security-audit
description: 只讀代碼庫安全審計。當(dāng)用戶要求安全體檢、掃描硬編碼密鑰、檢查危險調(diào)用或上線前安全審查時使用。
allowed-tools: Read, Grep, Glob
---

# 只讀安全審計

## 能力邊界(重要)
本 Skill **只讀**。frontmatter 未授予任何寫入/執(zhí)行工具:
- 只發(fā)現(xiàn)、只報告,**絕不修改文件**。
- 如需修復(fù),輸出建議交由人工或另一個具備寫權(quán)限的流程處理。

## 步驟
1. 依據(jù) `reference/checklist.md` 逐項用 Grep / Glob 掃描。
2. 每條發(fā)現(xiàn)給出:`文件:行號`、風(fēng)險等級、證據(jù)片段、修復(fù)建議。
3. 輸出風(fēng)險清單表,按嚴(yán)重度降序;無發(fā)現(xiàn)則明確寫"未發(fā)現(xiàn)"。

## CLI 與 SDK 邊界提示
`allowed-tools` 僅在 Claude Code CLI 生效。若本 Skill 經(jīng) Agent SDK 調(diào)用,
只讀約束不由 frontmatter 強制,須在 agent 的 tools 白名單或權(quán)限系統(tǒng)中另行限定。

reference/checklist.md

# 安全審計清單

## 密鑰與憑證
- 硬編碼密鑰:形如 `key/secret/password/token = "<長字符串>"` 的賦值
- 私鑰文件頭:出現(xiàn) PRIVATE KEY 文件頭
- 云訪問密鑰:符合各云廠商 Access Key 格式的字符串

## 危險調(diào)用
- 命令注入:拼接用戶輸入調(diào)用系統(tǒng)命令 / 開啟 shell 執(zhí)行
- 不安全反序列化:對不可信數(shù)據(jù)做反序列化
- SQL 拼接:用字符串拼接構(gòu)造 SQL 而非參數(shù)化查詢

## 配置
- 生產(chǎn)開調(diào)試:生產(chǎn)配置中調(diào)試開關(guān)為開
- 過寬 CORS:允許來源為通配符

## 風(fēng)險等級
Critical=可直接遠(yuǎn)程利用 · High=需前置條件 · Medium=縱深防御問題 · Low=最佳實踐偏差

上表為起點清單,落地時請配合具體掃描規(guī)則,并按實際技術(shù)棧裁剪。

六、組合與取舍:先識別最大的風(fēng)險維度

這四種模式正交、可疊加。上面四個示例分別把格式、計算、上下文、權(quán)限四類不確定性,外移到了模板 / 腳本 / 引用文件 / 工具白名單。一個成熟 Skill 往往是四者的組合:

分層組織正文 + 引用模板 + 關(guān)鍵計算走腳本 + 收緊工具權(quán)限

但真正的設(shè)計判斷,不是"全都用上",而是先識別這個任務(wù)里最大的風(fēng)險維度,再優(yōu)先套對應(yīng)模式:

你最擔(dān)心的問題優(yōu)先采用關(guān)鍵動作
輸出格式會漂移模板驅(qū)動模板外置,正文只寫填寫規(guī)則
模型會算錯腳本增強公式一律搬進腳本
上下文會爆 / 指令會打架知識分層按頻率 + 互斥性拆文件
會越權(quán)操作工具隔離最小權(quán)限;SDK 場景另設(shè)邊界

七、結(jié)語

漸進式披露是地基,四種模式是建在其上的承重墻——分別扛住格式、計算、上下文、權(quán)限四類載荷。

寫 Skill 的成熟標(biāo)志,不是把 SKILL.md 寫得更長、更全,而是學(xué)會用最小的正文,把不確定性外移:格式外移給模板,計算外移給腳本,細(xì)節(jié)外移給引用文件,權(quán)限外移給工具白名單。留在正文里的,只剩下那句最關(guān)鍵的——"什么時候,該做什么"

以上就是Claude Agent Skills的四種設(shè)計模式詳解;從漸進式披露到最小權(quán)限的詳細(xì)內(nèi)容,更多關(guān)于Claude Agent Skills四種設(shè)計模式的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

新昌县| 乌什县| 利津县| 鹤峰县| 南安市| 乐都县| 松溪县| 西贡区| 平原县| 南宁市| 白银市| 通州市| 无为县| 乐安县| 普洱| 白山市| 永善县| 武邑县| 新昌县| 昭平县| 革吉县| 图片| 环江| 武穴市| 蓬莱市| 龙游县| 玉田县| 台湾省| 陇西县| 宽城| 镶黄旗| 金平| 宁强县| 嘉义县| 高阳县| 南康市| 霍山县| 福海县| 剑河县| 保山市| 渝北区|