

# 技能
<a name="harness-skills"></a>

 [客服人員技能](https://strandsagents.com/docs/user-guide/concepts/plugins/skills/)是 Markdown 和指令碼的套件，可為客服人員領域提供隨需知識。每項技能都遵循開啟的 [AgentSkills.io](https://agentskills.io/specification) 標準：具有 YAML 前綴 （名稱、描述） 和 Markdown 指示`SKILL.md`的檔案，以及選用的 `scripts/`、 `references/`和 `assets/` 目錄。

技能使用漸進式揭露：中繼資料會預先注入系統提示 (\~100 個字符），並透過工具呼叫隨需載入完整指示。這可避免使用代理程式可能不需要的指示來溢出內容視窗。

該機制支援四種技能來源：


| 來源 | 說明 | 使用情況 | 
| --- | --- | --- | 
|  ** AWS 技能**  | [AWS 客服人員工具組中](https://github.com/aws/agent-toolkit-for-aws/tree/main/skills) AWS 服務的預先建置技能。使用 glob 模式啟用 。 | 您想要零設定的現成 AWS 專業知識。 | 
|  **Git (HTTPS)**  | 從任何公有或私有 Git 儲存庫複製技能。支援子目錄。 | 您想要從 GitHub、GitLab 或任何 git 主機參考技能，而不上傳到 S3。 | 
|  **Amazon S3**  | 使用執行角色從客戶擁有的 S3 儲存貯體擷取技能。 | 您想要完全控制版本控制、加密和存取控管。 | 
|  **路徑 （檔案系統）**  | 參考已在繫帶檔案系統上存在的技能 （製作成容器映像或透過 安裝`InvokeAgentRuntimeCommand`)。 | 技能是容器映像的一部分，或在工作階段開始時安裝。 | 

在第一次調用時，每個工作階段會擷取技能一次。在工作階段中，技能會在多個調用中保留在磁碟上。當 VM 過期且新的工作階段啟動時，會重新擷取技能以確保新鮮度。

您可以在繫帶上`skills`將 設定為預設值 （透過 `CreateHarness`或 `UpdateHarness`)，或在每次叫用時覆寫 。調用時間技能會在建立時間技能之後附加；如果兩者都定義具有相同名稱的技能，調用時間版本就會獲勝。

**注意**  
若要以互動方式將技能新增至繫帶，請執行 `agentcore` 以開啟 TUI、選取**新增** 、選擇**繫結** 、前進至**進階設定** ，以及啟用**技能** 。然後，精靈會提示技能來源。如需每個來源的步驟，請參閱下方 [Git](#harness-skills-git) 和 [Amazon S3](#harness-skills-s3) 下的**互動式**索引標籤。

## AWS 技能
<a name="harness-aws-skills"></a>

 AWS 技能是預先建置的技能，可讓客服人員與服務互動 AWS 。它們會以階層方式組織，並透過 glob 模式選取。在 [GitHub](https://github.com/aws/agent-toolkit-for-aws/tree/main/skills) 上檢視其來源。


| Category | 模式 | 典型技能 | 
| --- | --- | --- | 
| 核心技能 |  `core-skills/*`  | EC2、S3、Lambda、DynamoDB、CloudWatch、IAM 操作。 | 
| 分析技能 |  `specialized-skills/analytics-skills/*`  | Athena、Glue、QuickSight、資料湖操作。 | 
| 操作技能 |  `specialized-skills/operations-skills/*`  | 故障診斷、診斷、日誌分析。 | 
| 儲存技能 |  `specialized-skills/storage-skills/*`  | S3、EFS、FSx、備份操作。 | 

### 啟用所有 AWS 技能
<a name="enable_all_shared_aws_skills"></a>

**Example**  

```
aws bedrock-agentcore-control create-harness \
  --harness-name "MyHarness" \
  --execution-role-arn "${ROLE_ARN}" \
  --skills '[{"awsSkills": {}}]'
```
或在調用時：  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[{"awsSkills": {}}],
    messages=[{"role": "user", "content": [{"text": "List my EC2 instances and their status."}]}],
)
```

### 依類別啟用技能
<a name="_enable_skills_by_category"></a>

使用 glob 模式來啟用特定技能類別：

**Example**  

```
aws bedrock-agentcore-control create-harness \
  --harness-name "MyHarness" \
  --execution-role-arn "${ROLE_ARN}" \
  --skills '[{"awsSkills": {"paths": ["core-skills/*", "specialized-skills/operations-skills/*"]}}]'
```

### 啟用單一特定技能
<a name="_enable_a_single_specific_skill"></a>

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk"]}}],
    messages=[{"role": "user", "content": [{"text": "Create a CDK stack for a Lambda function."}]}],
)
```

### 合併多個模式
<a name="_combine_multiple_patterns"></a>

```
skills=[{"awsSkills": {"paths": ["core-skills/aws-cdk", "core-skills/aws-serverless", "specialized-skills/storage-skills/*"]}}]
```

**注意**  
路徑必須是相對的 （無前置`/`或 `..`)。絕對路徑和路徑周遊會遭到拒絕。
如果 glob 模式不符合任何技能，則調用會失敗並出現描述性錯誤。
合併相同承載中的多個`awsSkills`項目。

## Git (HTTPS) 技能
<a name="harness-skills-git"></a>

從任何公有或私有 Git 儲存庫複製技能。使用稀疏結帳支援 monorepos 中的子目錄。

**Example**  
公有儲存庫：  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[
        {"git": {"url": "https://github.com/anthropics/skills", "path": "skills/docx"}},
    ],
    messages=[{"role": "user", "content": [{"text": "Summarize the attached DOCX file."}]}],
)
```
私有儲存庫 （需要存放在 [AgentCore Identity](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/identity.html) 中的個人存取字符）：  

```
skills=[
    {
        "git": {
            "url": "https://github.com/my-org/internal-skills",
            "path": "excel",
            "auth": {
                "credentialArn": "arn:aws:bedrock-agentcore:us-west-2:123456789012:token-vault/default/apikeycredentialprovider/my-github-pat"
            },
        }
    }
]
```
使用 從公有 Git 儲存庫連接技能`agentcore add skill`。使用 從子目錄`--git-path`提取單一技能：  

```
agentcore add skill --harness my-harness \
  --git https://github.com/anthropics/skills \
  --git-path skills/docx
agentcore deploy
```
對於私有儲存庫，請`--credential`與您專案中持有個人存取字符的 API 金鑰登入資料名稱一起傳遞 (`--username` 是選用的，預設 `oauth2`)：  

```
agentcore add skill --harness my-harness \
  --git https://github.com/my-org/internal-skills \
  --git-path excel \
  --credential my-github-pat
agentcore deploy
```
`agentcore remove skill` 使用相同的來源旗標移除具有 的技能。若要覆寫單一呼叫的技能而不變更範圍，請使用 `agentcore invoke --skills <sources>`（逗號分隔路徑、`s3://`URIs 或 `https://` Git URLs)；叫用覆寫不支援 Git 身分驗證。
在 TUI 中，透過新增 → **束帶**精靈將 Git 技能**新增至**繫帶。  

1. 前進至**進階設定** ，移至**技能** ，然後按**空格**來啟用它，然後按 **Enter** 。  
![啟用技能的進階設定](http://docs.aws.amazon.com/zh_tw/bedrock-agentcore/latest/devguide/images/tui/harness-skills-01-advanced.png)

1. 選取 **Git** 做為技能來源。  
![技能來源類型：路徑、S3 或 Git](http://docs.aws.amazon.com/zh_tw/bedrock-agentcore/latest/devguide/images/tui/harness-skills-02-source-type.png)

1. 輸入 HTTPS 儲存庫 URL。精靈接著會提示選用的子目錄路徑、私有儲存庫的選用登入資料，以及選用的使用者名稱。  
![輸入 Git 儲存庫 URL](http://docs.aws.amazon.com/zh_tw/bedrock-agentcore/latest/devguide/images/tui/harness-skills-05-git-url.png)
確認精靈，然後執行 `agentcore deploy`以套用。
+  `url` （必要） - Git 儲存庫的 HTTPS URL。
+  `path` （選用） - 儲存庫中的子目錄，其中包含技能。如果省略，則會使用儲存庫根。
+  `auth.credentialArn` （選用） - API 金鑰登入資料提供者的 ARN，其中包含私有儲存庫的個人存取字符。
+  `auth.username` （選用） - git 使用者名稱，預設為 `oauth2`。

Git 擷取必須在 60 秒內完成。如果儲存庫需要網際網路輸出，請確定您的 VPC 具有 NAT 閘道 （與遠端 MCP 伺服器和自訂容器提取相同的需求）。

## Amazon S3 技能
<a name="harness-skills-s3"></a>

從客戶擁有的 S3 儲存貯體擷取技能。使用繫帶執行角色登入資料。

**Example**  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[
        {"s3": {"uri": "s3://my-skills-bucket/skills/company-style/"}},
    ],
    messages=[{"role": "user", "content": [{"text": "Draft a summary following our style guide."}]}],
)
```
使用 從 S3 連接技能`agentcore add skill --s3`：  

```
agentcore add skill --harness my-harness \
  --s3 s3://my-skills-bucket/skills/company-style/
agentcore deploy
```
執行角色在儲存貯體`s3:ListBucket`上需要 `s3:GetObject`和 。請參閱 [安全性和存取控制](harness-security.md)。
在 TUI 中，透過新增 → **束帶**精靈將 S3 技能**新增至**繫帶。前進至**進階設定** ，啟用具有**空格**的**技能** ，然後選擇 **S3** 作為來源 （請參閱 [Git](#harness-skills-git) 互動式索引標籤以取得這些共用步驟）。  

1. 輸入技能目錄的 S3 URI。  
![輸入技能的 S3 URI](http://docs.aws.amazon.com/zh_tw/bedrock-agentcore/latest/devguide/images/tui/harness-skills-04-s3-uri.png)
確認精靈，然後執行 `agentcore deploy`以套用。
+  `uri` （必要） - 指向技能目錄的 S3 URI （例如 `s3://bucket/prefix/`)。
+ 執行角色必須具有 儲存貯體的 `s3:GetObject`和 `s3:ListBucket`許可。請參閱 [安全性和存取控制](harness-security.md)。
+ 每個 S3 技能都必須為 1 GB 或更小。
+ S3 來源適用於 S3 VPC 端點 （不需要 NAT 閘道）。

## 檔案系統路徑技能
<a name="harness-skills-path"></a>

參考已在繫帶檔案系統上的技術 - 製作成容器映像或在工作階段開始時透過 進行安裝`InvokeAgentRuntimeCommand`。

**Example**  

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[{"path": ".agents/skills/xlsx"}],
    messages=[{"role": "user", "content": [{"text": "Find errors in the Excel files."}]}],
)
```

### 在容器映像中製作
<a name="_bake_into_the_container_image"></a>

在自訂映像中包含技能目錄：

```
COPY skills/xlsx .agents/skills/xlsx
```

### 在工作階段開始時安裝
<a name="_install_at_session_start"></a>

在第一個代理程式叫用`InvokeAgentRuntimeCommand`之前使用 ：

```
agentcore invoke --exec --harness my-agent --session-id "$SESSION" \
  "git clone --depth 1 https://github.com/anthropics/skills /tmp/skills && cp -r /tmp/skills/skills/xlsx .agents/skills/xlsx"
```

## 結合多個技能來源
<a name="harness-skills-combine"></a>

這四種來源類型可以共存於單一承載中：

```
response = client.invoke_harness(
    harnessArn=HARNESS_ARN,
    runtimeSessionId=SESSION_ID,
    skills=[
        {"awsSkills": {"paths": ["core-skills/aws-cdk"]}},
        {"git": {"url": "https://github.com/anthropics/skills", "path": "skills/docx"}},
        {"s3": {"uri": "s3://my-bucket/skills/company-style/"}},
        {"path": ".agents/skills/xlsx"},
    ],
    messages=[{"role": "user", "content": [{"text": "Help me with this project."}]}],
)
```

## 錯誤處理
<a name="harness-skills-errors"></a>

所有擷取失敗都會失敗，並顯示描述性錯誤。永遠不會無提示地略過技能。


| 失敗 | 錯誤訊息 | 
| --- | --- | 
| S3 存取遭拒 |  `Failed to fetch skill: AccessDeniedException. Ensure execution role has s3:GetObject permission.`  | 
| 找不到 S3 物件 |  `Skill source not found: s3://…​`  | 
| Git 複製失敗 （網路） |  `Failed to clone skill: could not resolve host`  | 
| Git 驗證遭拒 |  `Failed to clone skill: authentication failed`  | 
| 在儲存庫中找不到 Git 路徑 |  `Skill path 'x' not found in repository`  | 
| Git 逾時 (60 秒） |  `Failed to clone skill: operation timed out after 60s`  | 
| 技能超過 1 GB 限制 |  `Skill exceeds 1GB size limit`  | 
|  AWS 技能路徑不匹配 |  `AWS skill path 'x' matched no skills`  | 
| 路徑周遊 (`..`) |  `Invalid AWS skill path: must be a relative path without '..'`  | 
|  AWS 技能套件遺失 |  `AWS Skills are not available in this runtime (missing directory: /opt/amazon/skills)`  | 

### 相關主題
<a name="_related_topics"></a>
+  [工具](harness-tools.md) - 連接 MCP 伺服器、閘道、瀏覽器和程式碼解譯器
+  [環境和檔案系統](harness-environment.md) - 自訂容器映像和環境組態
+  [記憶體](harness-memory.md) - 跨工作階段持續對話
+  [安全性和存取控制](harness-security.md) - 技能來源的執行角色政策
+  [API 文件](harness-get-started.md#api-documentation) 